我有一个2008解决方案,当我们尝试使用MSBuild构建它时,它会给我各种丢失的程序集引用错误。我在Visual Studio中提出了解决方案,起初我得到了相同的编译错误。很多缺少的引用,所以我去了有问题的项目并扩展了References组,并在几个引用旁边的黄色三角形内看到感叹号。我点击了引用,这样我就可以在属性窗口中验证引用的路径,并且神奇地丢失了引用图标。没有提示退房。没有提示保存任何东西。参考神奇地解决了。我还注意到丢失的参考图标消失之前和之后的路径是正确的。我为每个缺失的参考(大约6个)做了这个,然后点击Build Solution,编译好了。之后我在Visual Studio中重新加载了几次解决方案,它仍然有效,但是,MSBuild仍然会抛出相同的编译错误。
是什么给出的?为什么Visual Studio 2008 Team System Developer Edition神奇地解析这些引用并编译解决方案,MSBuild仍然无法找到它们?任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
当我们将开发分支合并到主分支时,问题得以解决。我一直怀疑引用的路径指向我们的主分支中的“/ dev /”而不是“/ Main /”,并且VS 2008自动更新了MSBuild没有的引用。
我认为当您按文件添加引用(使用“浏览”选项卡)而不是使用“项目”选项卡添加引用时,可能会发生这种情况。
答案 1 :(得分:0)
尝试从另一台PC打开解决方案,最终使用VS2008的Express版本,这样您可能会收到更具描述性的错误消息。我的最后一招是从头开始重新创建项目/解决方案。
答案 2 :(得分:0)
几年前我遇到过这样的问题。你缺少哪些装配?它们是否属于Microsoft产品,例如SQL Server或Office?
Visual Studio“添加引用”对话框uses registry locations to store paths to assemblies(请参阅“在”添加引用“对话框中”在页面中间显示一个程序集“)。这是存储在GAC中的程序集的补充。如果您的程序集位于其中一个位置,则可能会导致此问题,因为我怀疑MSBuild未检查这些问题。
查看这些位置以查看您的程序集是否位于注册表中引用的其中一个路径中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx
如果您想确定可以找到您的程序集,请考虑在源树中添加lib
文件夹。您可以将所有依赖的程序集复制到该文件夹中,并从那里引用它们。这具有额外的优点,即如果另一个开发人员打开他的机器的解决方案,引用不会改变。