Je veux la ligne de commande pour créer un projet particulier d'une solution à l'aide de msbuild comme nous le faisons avec devenv.com.Dans devenv.com, nous pouvons spécifier un projet de solution en utilisant la ligne de commande suivante
devenv.com /Build Release|x86 test.sln /project "testproject"
En utilisant la ligne de commande ci-dessus, je peux créer le testproject dans le test.sln en utilisant devenv.com. Quelle est la ligne de commande pour msbuild pour la même solution.
Merci
Réponses:
Notez que ce qui est affecté
/t
est le nom du projet dans la solution, il peut être différent du nom du fichier projet.En outre, comme indiqué dans Comment: créer des cibles spécifiques dans des solutions à l'aide de MSBuild.exe :
Vous pouvez également créer plusieurs projets à la fois:
Pour reconstruire ou nettoyer, changez
/t:project
en/t:project:clean
ou/t:project:rebuild
la source
/t
paramètre pour chaque projet à construire:msbuild test.sln /t:project /t:project2
/t:SlnFolder\My_Project_name
.MSBuild fonctionne réellement grâce à l'utilisation de projets et non à la solution. La solution est uniquement utilisée pour l'analyser dans un fichier de projet temporaire dans MSBuild en interne. Vous devriez pouvoir simplement créer le projet qui vous intéresse directement via MSBuild en exécutant la commande suivante.
Il y a un problème majeur que je sais que vous pourriez rencontrer en utilisant le projet directement au lieu de la solution: si vous utilisez la solution pour exprimer les dépendances entre les projets, au lieu d'ajouter les références au projet et de laisser le système de construction déterminer automatiquement les dépendances .
Si vous appliquez un ordre de construction à l'aide du fichier sln, je vous recommande de travailler ces dépendances directement dans les fichiers proj et de les supprimer du sln. Cela vous permettra d'appeler directement n'importe quel fichier proj de MSBuild et les projets seront tous construits indépendamment sans aucun travail supplémentaire. Vous devez vraiment traiter le fichier sln comme un groupe de projets pour faciliter le travail dans Visual Studio et non comme une entrée de génération.
la source
Publier comme information aux futurs chercheurs
Ajoutez ce qui suit au script de construction et exécutez-le une fois. Cela générera les cibles exactes et d'autres informations que msbuild utilisera réellement.
Ex: Si vous avez
.
dans le nom du projet ou des dossiers que msbuild attendra_
à la place du.
.Après avoir obtenu les informations, mettez à jour le script de construction avec les détails requis.
la source
Pour ce faire, vous devez savoir quel est le nom cible du projet , pas nécessairement le nom du projet.
Une façon de le savoir consiste à utiliser MSBuild contre votre SLN avec les paramètres voulus après avoir défini une variable d'environnement spéciale appelée
MSBuildEmitSolution
à la valeur de1
.J'ai récemment dû le faire en raison d'un nom très spécifique pour une cible dans des répertoires imbriqués. Donc, à partir de mon fichier généré,
my_stuff.sln.metaproj
j'ai trouvé cette ligne:<Target Name="Utils\Firewall\FirewallUtils:Rebuild">
Cela signifie que la ligne de commande à utiliser finit par être,
la source
.csproj
dans mon cas). Je <3 SO!Juste pour ajouter des informations supplémentaires, l'exécution de msbuild dans le dossier du projet générera par défaut le fichier de projet puisque c'est le seul qui s'y trouve.
Il existe de nombreuses variantes d'utilisation de msbuild de cette façon. Vous pouvez spécifier le fichier proj directement.
Consultez la documentation de msbuild pour connaître l'utilisation, les exigences du fichier projet, ainsi que les avantages de la création du projet au lieu de la solution.
Documentation MS MSBuild
Il y a des avantages à construire de cette manière, comme mentionné par Mark-Smith ci-dessus.
la source