Как исключить проект из сборки в MSBUILD?

Мне нужно создать решение, но исключить один проект. Как мне это сделать? Я много искал об этой проблеме, но ничего не могло помочь.

узел itemgroup раздел rise следующее исключение:

недопустимым элементом . Неизвестная задача или тип данных.

PropertyGroup также поднимите исключение.

Ниже приведен пример моего кода:

<project name="TI 8.1.6 build script">
  <ItemGroup>
    <Solution Include="${ROOT}CoreTI Core.sln" Exclude="${ROOT}UtilitiesDTS Indexing ServiceTdi.Origami.IndexUpdaterServiceSetupTdi.Origami.IndexUpdaterServiceSetup.wixproj"/>
  </ItemGroup>
...
</project>

Так может ли кто-нибудь мне помочь?

2 ответов


вы можете исключить проекты на уровне решения для конкретного конфигурация С помощью Диалоговое Окно Configuration Manager в Visual Studio:

Configuration Manager Dialog

затем вы можете просто вызвать msbuild на решение указание конфигурации сборки для использования:

msbuild /property:Configuration=Release MySolution.sln

решение, предложенное Энрико, является самым универсальным решением, которое будет работать всегда. Альтернативным решением может быть использование <MSBuild> задач напрямую. Это будет работать для вас, если у вас есть весь файл проекта в определенном каталоге или вы можете легко перечислить все проекты, которые хотите построить (т. е. количество проектов в вашем решении не очень велико).

например, этот файл msbuild будет создавать каждый проект в текущем каталоге, за исключением определенного проект:

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

  <ItemGroup>
    <MyProjectReferences Include="**\*.*proj" />
    <MyProjectReferences Exclude="Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj" />
  </ItemGroup>

  <Target Name="BuildAllExceptWixProject">
    <MSBuild Projects="@(MyProjectReferences)" Targets="Build" />
  </Target>

</Project>

тогда вы можете построить это с помощью командной строки msbuild <myproject> /t:BuildAllExceptWixProject