Задача MsBuild не помещает собственный вывод C ++ в TargetOutputs ItemGroup

Я просто перенесла программное обеспечение, содержащее VC ++ (собственные и управляемые) проекты, а также проекты C # с .NET 3.5 до 4.0. Мы строим с MsBuild, и теперь мы пользуемся преимуществами MsBuild 4.0, которые теперь рассматривают проекты C # и C ++ одинаково. Есть один вопрос, однако я пока не смог решить.

Я использую TargetOutputs ItemGroup для дальнейшей обработки полученных двоичных файлов. Это отлично подходит для C # и управляемой C ++ (поддержка clr), но встроенные сборки C ++ (без поддержки продолжительности обычного языка) не помещаются в эту элементную группу, даже если проекты построены правильно.

Это заявление используется, после этого @ (MyProjectsOutput) не содержит сборные сборки C ++.

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

Любая идея, что может быть причиной? Я довольно застрял здесь ... Спасибо заранее.

Erik

c++,msbuild,

2

Ответов: 2


0

После некоторого исследования я создал пустую консольную консоль 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	est.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 на «Common Language Runtime Support (/ clr)», результат отображается правильно. Кажется, это ошибка в MsBuild.


0

Вы можете использовать GetNativeTargetPathцелевое имя в задаче MSBuild для получения пути выходного файла к собственному проекту C ++:

    <MSBuild Projects="my.vcxproj" Targets="GetNativeTargetPath">
        <Output ItemName="MyOutput" TaskParameter="TargetOutputs"/>
    </MSBuild>
C ++, MSBuild,
Похожие вопросы