MSBuild - сохранить ItemGroup в отдельном файле - PullRequest
1 голос
/ 24 января 2012

У меня работает следующая цель MSBuild.

<Target Name="MyTarget">
    <ItemGroup>
        <ExcludeList Include="$(ProjectPath)\**\.svn\**"/>
        <ExcludeList Include="$(ProjectPath)\**\obj\**"/>
        <ExcludeList Include="$(ProjectPath)\**\*.config"/>
        <ExcludeList Include="$(ProjectPath)\**\*.cs"/>
        <ExcludeList Include="$(ProjectPath)\**\*.csproj"/>
        <ExcludeList Include="$(ProjectPath)\**\*.user"/>
    </ItemGroup>

    <ItemGroup>
        <ZipFiles Include="$(ProjectPath)\**\*.*" Exclude="@(ExcludeList)" />
    </ItemGroup>

    <Zip Files="@(ZipFiles)"
         WorkingDirectory="$(ProjectPath)"
         ZipFileName="$(PackageDirectory)\$(ProjectName).package.zip"
         ZipLevel="9" />
</Target>

Я бы хотел сохранить группу элементов ExcludeList в отдельном файле, потому что у меня будет несколько целей msbuild в отдельных файлах, которые все должны использовать,список, и я не хочу воссоздавать его и поддерживать несколько копий.

Каков наилучший способ экстернализации ItemGroup и загрузки его в несколько сценариев msbuild?

1 Ответ

2 голосов
/ 24 января 2012

Создайте свою ItemGroup в отдельном файле msbuild, затем вы можете включить его в оператор Import Element .

Make.targets

<Project DefaultTargets = "Build"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
    <ItemGroup Condition="'$(ProjectPath)' != ''">
        <ExcludeList Include="$(ProjectPath)\**\.svn\**"/>
        <ExcludeList Include="$(ProjectPath)\**\obj\**"/>
        <ExcludeList Include="$(ProjectPath)\**\*.config"/>
        <ExcludeList Include="$(ProjectPath)\**\*.cs"/>
        <ExcludeList Include="$(ProjectPath)\**\*.csproj"/>
        <ExcludeList Include="$(ProjectPath)\**\*.user"/>
        <ExcludeList Include="$(ProjectPath)\**\*.proj"/>
    </ItemGroup>
</Project>

Make.proj

<Project DefaultTargets = "Build"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >

    <PropertyGroup>
        <ProjectPath>D:\Temp</ProjectPath>
    </PropertyGroup>

    <Import Project=".\Make.targets"  Condition="'$(ProjectPath)' != ''" />

    <Target Name = "Build">
        <Message Text="Exclude = @(ExcludeList)" />
    </Target>
</Project>

Когда я запускаю msbuild из D: \ temp (с двумя файлами, в противном случае пустыми), я получаю:

Build started 24-01-2012 16:50:33.
Project "D:\Temp\Make.proj" on node 1 (default targets).
Build:
  Exclude = D:\Temp\Make.proj
Done Building Project "D:\Temp\Make.proj" (default targets).


Build succeeded.
    0 Warning(s)
    0 Error(s)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...