visual-studio-2010 - C# 和 C++ 项目之间的项目依赖关系,构建顺序

标签 visual-studio-2010 msbuild dependencies

如果两个项目Alpha和项目Beta是C#项目,我们可以设置Beta取决于 Alpha这导致以下构建顺序:1) Alpha ; 2) Beta
如果项目 Alpha是 C++ 项目,我们无法添加来自项目的引用 AlphaBeta因为 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>

我正在添加 ReferenceOutputAssembly元素因为 this blogs.msdn.com article建议它。但是,根据我的经验,构建也可以在没有元素的情况下工作。这篇文章仍然值得一读,因为它解释了为什么MSBuild不遵守解决方案中定义的依赖项。

为了完整起见:我正在运行 Visual Studio 2010,版本 10.0.40219.1 SP1Rel .

关于visual-studio-2010 - C# 和 C++ 项目之间的项目依赖关系,构建顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8594068/

相关文章:

tfs - 用于组合 NUnit 或 MSTest XML 结果的 MSBuild 任务

java - gradle从 war 依赖项中导入了什么,我如何控制/操纵 war 内容?

C++ 依赖管理最佳实践

c# - C#编译器版本和语言版本的区别

VB.Net - 从后台工作人员更新进度条

c# - 在模块窗口中,我可以看到加载的 dll 以相同的路径出现两次

c++ - MSBuild C++ - 制作用于自动构建的 XML 脚本

c++ - LoadLibrary 返回 Null

msbuild - 从 MsBuild 任务返回输出?

azure - Azure 中多个辅助角色的 App.config 转换