如果项目Alpha
和项目Beta
都是C#项目,我们可以设置Beta
取决于Alpha
,这会导致以下构建顺序:1){{ 1}}; 2)Alpha
如果项目Beta
是C ++项目,我们无法将项目Alpha
中的引用添加到Alpha
,因为Visual Studio 2010不允许这样做。实际上我们可以用记事本破解Beta
文件,但它没有帮助。我们可以右键点击解决方案,选择csproj
并说明Project Dependencies
取决于Beta
。
问题: MSBuild不尊重Alpha
文件中设置的依赖项,并以错误的顺序构建项目 - 1)sln
; 2)Beta
。请注意,Visual Studio尊重构建顺序。
我们如何在同一解决方案中的Alpha
和MSBuild
项目之间设置C#
的构建顺序?
答案 0 :(得分:5)
尝试在清理解决方案后将C ++项目引用添加到C#项目。这对我有用,虽然我偶然发现了这种“解决方法”。
对我来说,看起来Visual Studio正在检查引用项目的构建产品,当它注意到不兼容时,它将拒绝添加引用。但是,如果构建产品无法检查(因为您清理了解决方案),Visual Studio很乐意添加引用。
我在Visual Studio和我们的TFS构建服务器(AFAIK使用MSBuild
)上测试了结果解决方案,并在两种情况下都正确评估了构建依赖项。
在您的问题中,您还提到手动编辑.csproj
文件没有帮助。我无法证实这一点。我能够添加以下引用,并再次获得积极的构建结果:
<ProjectReference Include="..\Foo\Foo.vcxproj">
<Name>Foo</Name>
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<Private>False</Private>
</ProjectReference>
我正在添加ReferenceOutputAssembly
元素,因为this blogs.msdn.com article建议它。但是,根据我的经验,构建也可以在没有元素的情况下工作。这篇文章仍然值得一读,因为它解释了为什么 MSBuild
不尊重解决方案中定义的依赖关系。
为了完整起见:我正在运行Visual Studio 2010,版本10.0.40219.1 SP1Rel
。