VS2010 - 引用的组件“X”无法找到。- 禁用自动“添加引用”功能

3
我们的项目文件存在问题,这很烦人。
例如:我们有一个解决方案包含projX和projY,它们引用了程序集log4net。如果有人移动程序集文件并且只更新了projX中的引用,然后提交而没有发现缺失的程序集,那么在projY中的引用将会消失。
下次我检出并打开解决方案时,VS2010会正确地标记projY中缺失的引用,带有一个小感叹号。到目前为止都很好。 :)
问题是:如果我构建解决方案,那么在projY中的程序集引用会神奇地更新到指向projX的BIN文件夹!(在这种情况下,必须先构建projX再构建projY)
看起来VS2010会搜索我们的解决方案树,如果找到匹配的程序集,则自动添加程序集。
不错的功能,但也有一些危险和误导性。例如,程序集可能最终会指向另一个项目的 bin 文件夹。
问题:
是否有办法禁用此行为,并仅获得编译错误以防止构建?
注意:
我们最近开始使用 NuGet。
我们定义了自己的输出文件夹->文件不会放置在 Bin\Debug 中,而是在..\output 中。
[编辑]
更新示例以更清晰地说明。
[编辑]
在网上搜索解决方案时,我发现了这篇文章,描述了一个相关问题,其中 VS2010 也会自动添加引用,但在这种情况下是从 GAC 中添加的。我们的程序集不在 GAC 中。 http://blog.scrappydog.com/2010/07/bug-tfs-2010-outsmarts-itself-and-auto.html [编辑]
尝试使用项目中的参考路径进行修复。想法是VS首先搜索参考路径,其次搜索项目bin文件夹。但是没有成功。它仍然从输出文件夹中获取程序集。
4个回答

1

我知道这听起来很蠢,但你有检查过项目属性中定义的引用路径吗?也许它只是从你设置的任何路径中拾取缺失的引用。


并不愚蠢,实际上是非常明智的建议。然而,我们的项目中没有设置参考路径,很遗憾这就是一个解释。 - Christian Mikkelsen

1

不,目前还没有关于这个问题的已知解决方法。


有点遗憾 :(. 我希望能找到一种方法让vs将警告视为错误,以此方式永远不会完成构建,或者仅禁用msbuild的自动搜索并添加:/. 该死! :). 不过感谢你的建议 :). - Christian Mikkelsen

1

我曾经遇到同样的问题。

对我起作用的方法是将整个解决方案文件夹移动到磁盘的根目录下,因为某些文件的路径超过了256个字符。当尝试压缩/解压缩解决方案文件夹时,我学到了这一点。


0
你已经和其他程序集确认过了吗?我以前没有使用过log4net,但如果它在全局程序集缓存(GAC)中,并且版本正确,那么它可以从那里获取。 GAC是系统范围内的程序集位置,供系统上的应用程序引用。

嗨,log4net只是其中之一,并且未安装在GAC中。此外,路径往往是我们解决方案中另一个项目的bin目录(当VS自动查找并添加程序集时)。例如,假设我的同事将程序集从一个文件夹移动到另一个文件夹,然后仅更新解决方案中1个项目的引用。之后,在进行构建时,VS会发现projX缺少程序集,但检测到projY的bin文件夹中有匹配的程序集,并将其添加到projX中。 - Christian Mikkelsen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接