MSBuild vs devenv pour la ligne de commande s'appuie
Je me demandais: quelle est la différence entre l'utilisation de msbuild et devenv lors de la compilation des solutions à partir de la ligne de commande?
Une chose évidente remarqué, c'est que msbuild n'construire des projets dépendants on ne trouve pas dans la solution, tandis que devenv ne pas.
Existe-il d'autres? Sont là certains des indicateurs, on pourrait passer à msbuild pour le faire correspondre le devenv construire exactement?
P. S. je suis en utilisant Visual Studio 2010 SP1
- Après tout devenv appels msbuild pour effectuer le de construire!
Vous devez vous connecter pour publier un commentaire.
Selon cette MSDN Entrée de Blog ils essaient de minimiser les différences, mais celles qui existent (c'est à dire à l'aide d'une compilateur C# au lieu de
csc.exe
ou de réglage de laBuildingInsideVisualStudio
de la propriété) sont essentiellement fait pour optimiser les performances des builds.Le principal avantage de MSBuild est que vous n'avez pas besoin de Visual Studio est installé.
Une limitation de MSBuild est qu'il ne prend pas en charge la construction d'installation de Visual Studio projets (.vdproj).
(Vous pouvez contourner ce problème en la définition d'un exec de la tâche qui appelle devenv, mais vous avez encore besoin de Visual Studio.)
J'ai expérimenté un projet au sein d'une multicouche de l'équipe: les développeurs, les testeurs, les chargés de déploiement. MSBuild est l'outil principal de la déployeurs: ils pouvaient compiler et de recompiler tout simplement la mise en construction de modification des paramètres du fichier de configuration xml MSBuild sans ouvrir la devenv. En fait, ils sont souvent utilisés MSBuild en pré-prod de l'environnement où il n'y avait pas devenv à tous.
De Nant est un outil similaire par la Fondation Apache.
Pour plus d'informations, jetez un oeil ici:
Une autre différence majeure est que
msbuild
a certaines options qui n'existent pas pourdevenv
. Aussi loin que je peux dire, il n'y a aucun moyen d'augmenter le niveau de verbosité pourdevenv
mais vous pouvez augmenter le niveau de verbosité pourmsbuild
par l'option:J'ai rencontré un cas où
devenv
a écrit un message d'erreur lorsqu'un fichier de projet a été absent, mais a retourné 0 de toute façon. En revanche,msbuild
retourné une valeur différente de zéro. Je suis passé notre makefile à l'aide demsbuild
c'est pourquoi nous ne négligez pas les erreurs.