我有一个解决方案,有10项目。许多项目上取决于第三方DLL叫 foo.dll.

问题是,当我升级foo,以某种方式在视觉工作室的时候我去浏览器的对象,它显示了两个版本的我 foo.dll.

我怎么能找出哪些项目是引用了旧版本的foo.dll 这样我就可以升级所以只有一种依赖在所有项目?

有帮助吗?

解决方案

这是你唯一想做的事,一旦这样的事情。

我给你的建议是得到记事本。是的,记事本。

打开的.csproj文件为每个项目的。

有将在XML概述了被引用包括路径,等等。即使它们被出来其中使用由.NET接头GAC中,版本等的DLL一个部分将被包含在文件。整行于参考必须完全匹配。

比较这对一个项目,你知道是正确的。

在.NET的引用处理是它的最严重的部分之一。欢迎DLL地狱V2.0:(

其他提示

我认为最好的答案是的只有一个项目有这种依赖性的时,这是可行的。它可以让你在一个地方处理它。

如果这意味着该项目将需要由周围的DLL一个可笑的脂肪包装库,这可能不是最好的方法。但至少考虑它。

这听起来像您已经安装在GAC Foo.dll的两个版本。 请查看 GACUTIL 删除旧的。

如果它只是一个文件引用,然后在每个项目中,打开“引用”和“富”点击右键,选择属性。它会告诉你在生成的属性窗口信息,如版本。

一般以这样的依赖关系的最好的方法是在有所谓的“相关性”与这些种在其中的DLL的项目级(但不是实际的解决方案的一部分)一个单独的文件夹。

我也觉得你的服务器上的一些构建自动化(TFS =团队建设,SVN =巡航控制等)将组装的正确版本复制到建立之前bin文件夹。

有很多方法去与组件,很容易让正在使用的各种应用,其中一个在困惑。这是值得花一些时间,可以适用于所有未来项目templateable方式,一旦解决了这个问题。

我理解这个问题,但是我不确定你是要问正确的问题。让我解释一下如何。净选择引用的大会。

  • 大会参考文献可以浮动和固定的(右击大会在该项目的参考文件夹中,选择性,看看"的特定版本").如果该版本是漂浮的,.净将查找和使用最新的一个。它是有意义的"脚"的版本的参考,使得该问题的描述是可以避免的(即安装一个新版本的产品不会破坏你的应用程序)。

  • 集会可以在全球大会的高速缓存,或只是坐在文件系统。你应该选择一种方法,并用它始终如一地项目,这样,你至少知道哪里可以找到。

如果你了解这两个方面,你不应该有一个问题(嗯,至少你应该知道怎么做,如果有一个问题)。如果您销的版和升级,你必须打开你的10些项目和升级的参考-但是你是隔离accidential升级。

如果你让你的版本浮动,所有参考文献将自动挑选了最新版本的安装。如果你把你的集会在咨询委员会你不需要搜查你搜索的道路和文件的系统遗留的碎片和accidential的副本DLL文件。

我有这个相同的问题。

项目引用的项目B. 项目C引用项目d,其引用的项目B. 这导致项目C有一个参考项目B 我摆脱了项目d和清理项目C(代码) 而是参考项目B保持,我想作为二进制参考指向项目d的bin文件夹。

我视觉工作室内部更新项目B。 当我跑启动项目C,它投掷此错误。

要修复,我去到用于项目C中引用并去除未使用的引用。

顺便说一句,您的实际问题 - 怎样才能找出有问题的DLL的居住地 - 可以更容易地回答是这样的: 1.进入浏览器(支持微软Windows 7点的指示这里),做对的.dll你的整个代码文件夹进行搜索。 2.在资源管理器中添加列文件版本和排序在此列。瞧!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top