2011-07-05 143 views
4

我正在努力为此问题找到解决方案。MSBuild无法确定正确的解决方案依赖关系

我有一个包含大约50个项目(C#)的解决方案(VS2008)。

项目间依赖关系被添加为项目引用(而不是通过引用DLL)。

此外,在解决方案设置对话框中正确设置VS内的依赖关系。

问题是,当从我们的CI服务器上的MSBUILD(命令行)构建解决方案时,msbuild将构建这些项目,这些项目似乎是它们在解决方案文件中的布局顺序,而不是根据依赖关系。

我发现多次提到这个在网络上,没有任何解决方案...

我可以为了与命令行的MSBuild建立正确的解决方案做什么?

+0

您能否验证项目间引用是在项目级别(项目|添加引用...)而不是在解决方案级别(项目|项目相关性...)配置的。在引用其他项目的.csproj文件中,每个引用的项目都应该有一个“”项目。 –

+0

我已经解决了这个问题。我删除了对依赖项目的引用并重新添加它。看起来GUID有些不同,我不知道如何。我猜想从VS开始构建时没有问题,但是在使用MSBuild时,它无法检测到正在引用的项目,也无法构建正确的依赖顺序。 –

+2

查看http://bit.ly/depfail上的MSBUild团队博客,讨论使用解决方案依赖性的风险 –

回答

1

这可能是由于您的解决方案中存在无效的构建顺序。您可以在不删除和重新添加项目的情况下更改构建顺序。在解决方案资源管理器中,右键单击解决方案名称并选择Project Build Order。你将能够指定你的项目的构建顺序,所以它应该在msbuild中工作。如果你在开发过程中已经缓存了DLL,那么这通常会发生。要验证它是否有效,请在更改构建顺序和运行构建之前删除所有obj和bin文件夹。

相关问题