Как исключить проект из сборки в MSBUILD? - PullRequest
35 голосов
/ 20 марта 2012

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

ItemGroup раздел вызывает следующее исключение:

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

PropertyGroup также вызывает исключение.

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

<project name="TI 8.1.6 build script">
  <ItemGroup>
    <Solution Include="${ROOT}\Core\TI Core.sln" Exclude="${ROOT}\Utilities\DTS Indexing Service\Tdi.Origami.IndexUpdaterServiceSetup\Tdi.Origami.IndexUpdaterServiceSetup.wixproj"/>
  </ItemGroup>
...
</project>

Так может любойпомогите мне?

Ответы [ 3 ]

59 голосов
/ 20 марта 2012

Вы можете исключить проекты на уровне решения для конкретной конфигурации сборки , используя Диалог Configuration Manager в Visual Studio:

Configuration Manager Dialog

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

msbuild /property:Configuration=Release MySolution.sln
16 голосов
/ 21 марта 2012

Решение, предложенное Enrico, является наиболее универсальным решением, которое будет работать всегда.Альтернативным решением может быть использование задачи <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

2 голосов
/ 17 мая 2019

В вашем файле решения (.sln) удалите записи Build.0.Например:

Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MyProject", "MyProject.vcxproj", "{2281D9E7-5261-433D-BB04-176A61500CA3}"
EndProject

GlobalSection(ProjectConfigurationPlatforms) = postSolution
    {2281D9E7-5261-433D-BB04-176A61500CA3}.Debug|x86.Build.0 = Debug|x64

Если вы удалите эту запись «Build.0», она будет нормально загружена в решение, но не будет построена ни через графический интерфейс, ни через внешний MSBuild.

...