Rom*_*man 5 msbuild dependencies visual-studio-2010
如果这两个项目Alpha和项目Beta是C#项目,我们可以设置Beta取决于Alpha这个结果如下构建顺序:1)Alpha; 2)Beta
如果project Alpha是C++项目,我们无法从项目添加引用Alpha,Beta因为Visual Studio 2010不允许这样做.实际上我们可以csproj用记事本来破解文件,但它没有帮助.我们可以右键点击解决方案,选择Project Dependencies并说明Beta取决于Alpha.
问题: MSBuild不尊重sln文件中设置的依赖项并以错误的顺序构建项目 - 1)Beta; 2)Alpha.请注意,Visual Studio尊重构建顺序.
我们如何在同一解决方案中为MSBuild两者C#和C++项目设置构建顺序?
清理解决方案后,尝试将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>
Run Code Online (Sandbox Code Playgroud)
我正在添加该ReferenceOutputAssembly元素,因为这篇blogs.msdn.com文章暗示了这一点.但是,根据我的经验,构建也可以在没有元素的情况下工作.这篇文章仍然值得一读,因为它解释了为什么 MSBuild不尊重解决方案中定义的依赖关系.
为了完整起见:我正在运行Visual Studio 2010,版本10.0.40219.1 SP1Rel.