c++ - MsBuild 任务不会将 native C++ 输出放在 TargetOutputs ItemGroup 中

标签 c++ msbuild

我刚刚将包含 VC++( native 和托管)项目以及 C# 项目的软件从 .NET 3.5 迁移到 4.0。我们使用 MsBuild 构建,现在享受 MsBuild 4.0 的好处,它现在以相同的方式对待 C# 和 C++ 项目。有一个问题,但到目前为止我无法解决。

我正在使用 TargetOutputs ItemGroup 进一步处理生成的二进制文件。这适用于 C# 和托管 C++(clr 支持),但即使项目构建正确, native C++ 程序集(无公共(public)语言运行时支持)也不会放置在此 ItemGroup 中。

这是使用中的语句,之后@(MyProjectsOutput) 不包含 native C++ 程序集。

<MSBuild Projects="@(MyProjects)" Targets="Rebuild" Properties="Platform=x64;Configuration=Release">
  <Output TaskParameter="TargetOutputs" ItemName="MyProjectsOutput" />
</MSBuild>

知道可能是什么原因吗?我被困在这里...... 提前致谢。

埃里克

最佳答案

经过更多调查,我创建了一个空的 C++ 控制台应用程序和这个简单的 MsBuild 脚本:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Build" Outputs="" Condition="">
    <ItemGroup>
      <MyProjects Include="test\test.vcxproj">
      </MyProjects>
    </ItemGroup>
    <MSBuild Projects="@(MyProjects)">
      <Output TaskParameter="TargetOutputs" ItemName="MyProjectsOutput" />
    </MSBuild>
    <Message Importance="high" Text="MyProjects: @(MyProjects)"></Message>
    <Message Importance="high" Text="MyProjectsOutput: @(MyProjectsOutput)"></Message>
  </Target>
</Project>

test.exe 已成功构建,但 ItemGroup @(MyProjectOutput) 仍未包含该文件。当我将 test.vcxproj 更改为“公共(public)语言运行时支持 (/clr)”时,输出会正确显示。它似乎是 MsBuild 中的错误。

关于c++ - MsBuild 任务不会将 native C++ 输出放在 TargetOutputs ItemGroup 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11190562/

相关文章:

c++ - 将 CMSampleBufferRef 转换为 cv::Mat

visual-studio - 在 Visual Studio 中显示构建时间

asp.net - VSTS 构建失败 - 错误 : Web deployment task failed

msbuild - 如何在 MSBuild 中使用特定的 Windows SDK?

c++ - 嵌套 if 中没有返回评估

c++公共(public)对象更改应该调用函数

c++ - ZLib.lib(d000062.o) : warning LNK4078: multiple '.text' sections found with different attributes

c++ - Makefile 更新库依赖

c# - 自发布包中的build文件夹中的文件不被第三方项目消耗

msbuild - 在msbuild中使用32位 "Program Files"目录