2009-07-16 16 views
0

我有一个2008解决方案,当我们尝试使用MSBuild构建它时,它给了我各种缺少的程序集引用错误。我在Visual Studio中提出了解决方案,起初我得到了相同的编译错误。很多遗失的参考文献,所以我去了有问题的项目,并扩大了参考组,并看到一个黄色三角内的感叹号旁边的几个参考。我点击了引用,这样我就可以在属性窗口中验证引用的路径,神奇的是,缺失的引用图标消失了。没有提示退房。没有提示保存任何东西。该参考神奇地解决了。我还注意到,在丢失参考图标消失之前和之后,路径都是正确的。我为每个缺失的参考(其中大约6个参考)做了这个,然后点击Build Solution,并且一切正常。我已经在Visual Studio中多次重载了解决方案,并且它仍然有效,但是,MSBuild仍然会抛出相同的编译错误。缺少对MSBuild的引用,但在Visual Studio 2008中自动解析

什么给?为什么Visual Studio 2008 Team System Developer Edition神奇地解决了这些引用并编译了解决方案,MSBuild仍然无法找到它们?任何帮助,将不胜感激。谢谢。

+1

如果您发布了构建文件中的内容,它可能会有所帮助。 – CAbbott 2009-07-16 17:23:47

回答

1

当我们将开发分支合并到主分支时,问题就解决了。我怀疑引用的路径指向我们主分支中的“/ Dev /”而不是“/ Main /”,VS 2008自动更新MSBuild没有的引用。

我认为这可能会发生在按文件添加引用(使用“浏览”选项卡)而不是使用“项目”选项卡添加引用时发生。

0

尝试从另一台PC上打开解决方案,最终使用VS2008的Express版本,这样您可能会得到更具描述性的错误消息。我最后的手段是重新创建项目/解决方案。

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文件夹到您的源代码树。您可以将您依赖的所有程序集复制到该文件夹​​中,并从那里引用它们。这具有额外的优点,即如果另一开发人员打开他的机器的解决方案,引用不会改变。