Как исключить проект из сборки в MSBUILD?
Мне нужно создать решение, но исключить один проект. Как я должен это делать? Я много искал об этой проблеме, но ничего не помогло.
Раздел
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>
Так может кто-нибудь мне помочь?
Ответы
Ответ 1
Вы можете исключить проекты на уровне решения для конкретной конфигурации с помощью Диалоговое окно Configuration Manager в Visual Studio:
![Configuration Manager Dialog]()
Затем вы можете просто вызвать msbuild
в файле решения, указав конфигурацию сборки, которая будет использоваться:
msbuild /property:Configuration=Release MySolution.sln
Ответ 2
Решение, предлагаемое 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
Ответ 3
В файле вашего решения (.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.