web-dev-qa-db-fra.com

Créez un seul projet dans une solution à partir de la ligne de commande

J'ai une solution avec beaucoup de dossiers de solutions avec beaucoup de projets c # à l'intérieur.

Comment puis-je créer/reconstruire un seul de ces projets à partir de la ligne de commande?

Je suppose qu'il existe un moyen de le faire en utilisant msbuild mais je ne sais rien de msbuild.

Merci!

41
mmutilva

Vous pouvez simplement appeler msbuild et lui passer le fichier de projet .csproj/.vbproj que vous voulez construire, et il ne fera que celui-là.

Donc quelque chose comme:

cd \MySolution
msbuild .\Project1\Project1.csproj
23
Joe Enos

Étant donné un fichier de solution contenant des projets et que vous souhaitez créer/reconstruire un projet.

Cette page Web sur MSDN répertorie exactement ce que vous devez faire:

http://msdn.Microsoft.com/en-us/library/ms171486.aspx

Donc, étant donné un fichier de solution mysolution.sln avec des projets:

  • foo.vcxproj
  • bar.vcxproj
  • baz.vcxproj

où ils dépendent tous les uns des autres de bas en haut. Pour que baz soit le plus indépendant, bar dépend de baz et foo dépend de bar.

Si vous voulez construire foo alors vous faites:

MSBuild mysolution.sln /target:foo

Les autres réponses ici ne tenaient pas compte des dépendances. Bien sûr, msbuild.exe créera un seul fichier de projet (c'est-à-dire foo.vcxproj), mais il échouerait si bar et baz n'étaient pas encore construits. Afin de construire plusieurs projets et d'obtenir les projets indépendants construits d'abord, vous devez passer dans le fichier de solution (Après tout, l'OP a mentionné que cela faisait partie d'un fichier de solution). Passez ensuite le nom du projet et une cible délimitée par deux points.

MSBuild mysolution.sln /target:foo:Rebuild

Grande hypothèse ici. Je suppose que le nom du projet $ (ProjectName) correspond à celui du nom de fichier.

Edit (from comment ) : S'il vous arrive d'avoir des points (.) Dans le nom du projet, vous devrez remplacez-les par un trait de soulignement (_).

92
C Johnson

Vous pouvez consulter la référence this pour en savoir plus sur l'utilisation de MSBuild à partir de la ligne de commande. Voici un exemple de ce dont vous avez besoin:

MSBuild.exe MyProject.proj /t:rebuild
4
Bernard

Publication en tant qu'information pour les futurs demandeurs

définir MSBuildEmitSolution = 1

https://stackoverflow.com/a/40372894/826862

1
freshprinze