Jak mogę wykluczyć projekt z kompilacji w MSBuild?

Muszę zbudować rozwiązanie, ale wykluczyć jeden projekt. Jak mam to zrobić?

Szukałem dużo na ten temat, ale nic nie mogło pomóc.

An ItemGroup sekcja zawiera następujący wyjątek:

Nieprawidłowy element . Nieznane zadanie lub typ danych.

PropertyGroup również podnosi wyjątek.

Poniżej moja próbka kodu:

<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>
Jak mogę to zrobić?
Author: Peter Mortensen, 2012-03-19

4 answers

Możesz wykluczyć projekty na poziomie rozwiązania dla określonej konfiguracji build za pomocą okna dialogowego Configuration Manager w Visual Studio:

Okno Menedżera Konfiguracji

Następnie możesz po prostu wywołać msbuild w pliku rozwiązanie określając konfigurację kompilacji do użycia:

msbuild /property:Configuration=Release MySolution.sln
 71
Author: Enrico Campidoglio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-19 22:46:52

Rozwiązanie zaproponowane przez Enrico jest najbardziej wszechstronnym rozwiązaniem, które zawsze zadziała. Alternatywnym rozwiązaniem może być użycie zadania <MSBuild> bezpośrednio. Będzie to działać dla Ciebie, jeśli masz wszystkie pliki projektu w określonym katalogu lub będziesz w stanie łatwo wyliczyć wszystkie projekty, które chcesz zbudować (tzn. liczba projektów w Twoim rozwiązaniu nie jest zbyt duża).

Na przykład, Ten plik MSBuild zbuduje każdy projekt w bieżącym katalogu z wyjątkiem określonego projekt:

<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>

Następnie możesz go zbudować używając wiersza poleceń msbuild <myproject> /t:BuildAllExceptWixProject

 22
Author: seva titov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-04 00:39:50

W pliku rozwiązania (.sln), Usuń konstrukcję.0 wpisów. Na przykład:

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

Jeśli usuniesz ten " Build.Wpis 0", ładuje się dobrze w rozwiązaniu, ale nie zostanie zbudowany, ani przez GUI, ani przez zewnętrzny MSBuild.

 11
Author: BmanMA,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-05-17 17:27:46

Utwórz master.plik proj:

W innej ItemGroup dodaj DefaultExclude właściwości dla programów-umieść je przed rozwiązaniem -- BA był kanadyjski
Configuration=Release Uwolnienie rzuć mistrza.proj do katalogu z programami i msbuild master.proj kompiluje wszystko oprócz... that HelloWorld

 -1
Author: Marianne Seggerman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-02 17:57:02