项目A引用项目B。项目B引用项目c。项目A不引用项目c。
这在本地构建得很好。但是,在构建服务器上它出错了,因为项目A没有引用项目c。
错误:错误BC30009:引用需要汇编'ProjectC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'包含实现的接口'ProjectC. ifoo '。添加一个到您的项目。
我如何在提交之前捕获这个?
编辑:以下是关于我的问题的更多信息:http://sstjean.blogspot.com/2006/11/msbuild-cant-find-secondary-references.html
作为最佳实践,您可以做以下两件事,以确保您的项目被正确引用,并且MSBuild将能够正确找到您引用的项目。
-
使用项目引用而不是引用dll。创建一个名为dependencies或libs的文件夹,并将所有引用的dll放在该文件夹中。
-
右键单击项目并选择项目构建顺序,检查每个项目的构建顺序和项目依赖项。
确保项目中的每个引用都是由该项目构建的。
这个链接也有助于解释为什么你会看到不同的行为以及如何捕获它。
Visual Studio Integration (MSBuild)
在Visual Studio中,解决方案文件和项目构建顺序由Visual Studio本身控制。在命令行上使用MSBuild .exe构建解决方案时,MSBuild解析解决方案文件并命令项目构建。在这两种情况下,项目都是按照依赖顺序单独构建的,并且项目到项目的引用不会被遍历。相反,当使用msbuild.exe构建单个项目时,将遍历项目到项目的引用。
当在VisualStudio内构建时,属性$(BuildingInsideVisualStudio)被设置为true。这可以在您的项目或.targets文件中使用,以使构建的行为不同。
转到您的项目参考,右键单击Oracle.DataAccess
,然后转到属性,在属性页面确保特定版本为假,复制到本地设置为真