web-dev-qa-db-fra.com

Comment exclure un projet de la construction dans MSBUILD?

Je dois créer une solution mais exclure un projet. Comment dois-je procéder? J'ai beaucoup cherché sur ce problème mais rien ne pouvait aider.

ItemGroup la section soulève l'exception suivante:

Élément non valide. Tâche ou type de données inconnu.

PropertyGroup soulève également l'exception.

Voici mon exemple de code:

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

Alors, quelqu'un pourrait-il m'aider?

36
Andrew Lubochkn

Vous pouvez exclure des projets au niveau de la solution pour une configuration de build spécifique en utilisant Dialogue Configuration Manager dans Visual Studio:

Configuration Manager Dialog

Ensuite, vous pouvez simplement appeler msbuild sur le fichier de solution en spécifiant la configuration de construction à utiliser:

msbuild /property:Configuration=Release MySolution.sln
61
Enrico Campidoglio

Une solution suggérée par Enrico est la solution la plus polyvalente qui fonctionnerait toujours. Une autre solution pourrait consister à utiliser <MSBuild> tâche directement. Cela fonctionnera pour vous si vous avez tout votre fichier de projet dans un répertoire particulier, ou si vous êtes en mesure d'énumérer facilement tous les projets que vous souhaitez créer (c'est-à-dire que le nombre de projets dans votre solution n'est pas très grand).

Par exemple, ce fichier msbuild créera chaque projet sous votre répertoire actuel à l'exception d'un projet spécifique:

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

Ensuite, vous pouvez créer cela en utilisant la ligne de commande msbuild <myproject> /t:BuildAllExceptWixProject

16
seva titov

Dans votre fichier de solution (.sln), supprimez les entrées Build.0. Par exemple:

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

Si vous supprimez cette entrée "Build.0", elle se chargera correctement dans la solution, mais ne sera pas créée, via l'interface graphique ou via MSBuild externe.

2
BmanMA