我想知道如何确定此构建错误的来源;
Warning 4 The primary reference "MyNamespace.MyProject" could not be resolved because
it has an indirect dependency on the .NET Framework assembly "System.Xml, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089" which has a higher version "4.0.0.0" than
the version "2.0.0.0" in the current target framework. MyNamespace.MyOtherProject
我理解这个错误的含义(对于同一个项目,其他 5 个都喜欢这个错误),但我不知道如何解决我的问题。本例中的“主要引用”(MyNamespace.MyProject) 与 .NET 4.0.x 没有直接依赖关系。
主要引用仅依赖于我的另一个项目 (MyNamespace.MyCoreProject),构建的源项目 (MyNamespace.MyOtherProject) 也直接依赖于该项目。而且构建没有提示那个项目间接引用了 .NET 4.0.x,所以我想我可以排除这种可能性。
主要引用直接依赖于三 (3) 个第 3 方 DLL,所有这些 DLL 也都以 .NET 2.0 为目标。
我已使用 dotPeek 检查构建的库,但看不到任何对使用 .NET 4.0 的任何内容的引用。
作品中唯一的其他潜在 Spanner 是 PostSharp 的使用,它由“MyNamespace.MyCoreProject”(由主要引用项目引用)直接引用,这可能是导致问题的原因,因为我相信有一个相关的引用 PostSharp.dll (http://www.sharpcrafters.com/forum/Topic4444-4-1.aspx#bm4462) 时的 VS2010 错误,但是我也从构建链中删除了它并且仍然看到此错误,所以我假设我也可以排除那个。
如果有人能告诉我为什么会这样,太棒了!如果没有,关于如何计算出未命名的“间接引用”是什么的一些指导将同样有帮助!
顺便说一句,我已经尝试了以下所有工具来获取一些信息,但它们并没有告诉我很多我还不知道的信息(这是相关 DLL 的直接依赖项); - .NET 反射器 -dotPeek - IldAsm - 依赖(Dependency Walker)
最佳答案
虽然我实际上还没有想出一个好方法来实际解决确定 MsBuild 如何确定它使用的引用的问题(为什么它不只是告诉我它是如何产生这些间接引用的,而不是让我猜测我不知道...)我已经解决了我的问题。
最后,我基本上删除了“主要引用”项目中的所有引用(这需要逐段排除所有代码 - 一个有点痛苦的过程)以确定对 .NET 4.0 库的假定间接引用的来源由引用的第 3 方 DLL 引起。
但是,我确实相信这个问题背后存在 MsBuild 中的错误,因为;
现在,另一个好奇是我已经有一段时间没有触及或更改相关的库了,所以这只是出于其他一些不相关的原因才开始发生 - 这可能是什么,我不知道。
最后,我发现解决此问题的唯一方法是为每个相关库运行 gacutil/u 以删除以前安装/使用的 4.0 库版本。 (包中大约有 40 个,所以这也很痛苦!因为包的卸载程序没有删除 GAC 中的库)
这似乎让 msbuild 开始使用我告诉它的引用,而不是想出它自己的“使用这个文件”和“使用这个特定版本”的想法。 p>
已解决,但我会喜欢更简洁的方式来做到这一点!
关于c# - 确定对不正确的 .NET Framework 版本的间接依赖的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10906637/
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我正在编写一个方法,它将在一个类中定义一个实例方法;类似于attr_accessor:classFoocustom_method(:foo)end我通过将custom_method函数添加到Module模块并使用define_method定义方法来实现它,效果很好。但我无法弄清楚如何考虑类(class)的可见性属性。例如,在下面的类中classFoocustom_method(:foo)privatecustom_method(:bar)end第一个生成的方法(foo)必须是公共(public)的,第二个(bar)必须是私有(private)的。我怎么做?或者,如何找到调用我的cust
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL