0 votes

Pourquoi MSBuild échoue-t-il en ligne de commande alors que VS2008 y parvient ?

J'ai une solution ASP.NET qui se construit très bien à partir de VS2008.

Cependant, il échoue lorsque je fais cela :

MSBUILD.exe c:\path-to-sln 

Il échoue avec une erreur CS0006 ("Metadata file 'dll_name' could not be found"). Il échoue également lorsque j'essaie avec un .csproj d'un projet de la solution.

Que fait VS2008 que MSBuild ne fait pas ? Je crois savoir que VS connaît les dépendances inter-assemblage que MSBuild ne peut pas connaître. Y a-t-il un moyen d'informer MSBuild de ces dépendances ?

(J'ai besoin que MSBuild fonctionne à partir de la ligne de commande car je l'appelle à partir d'une tâche MSBuild depuis CruiseControl.Net).

Merci d'avance. :3)

(J'ai regardé http://stackoverflow.com/questions/280559/how-to-get-cmd-line-build-command-for-vs-solution mais je ne comprends toujours pas)

1voto

maranas Points 810

Vous devez d'abord définir les variables d'environnement avant que msbuild puisse fonctionner. le lien que vous avez posté avec la question contient en fait la réponse (voir la première entrée de la réponse).

Une façon d'automatiser cette opération consiste à choisir le fichier vcvars*.bat dont vous avez besoin, en fonction de la plate-forme pour laquelle vous souhaitez construire un exécutable. Par exemple, si vous souhaitez construire pour x86, le fichier vcvars*.bat doit être utilisé. vcvarsall.bat Le fichier dit que vous aurez besoin bin\vcvars32.bat . vous pouvez copier ce fichier batch, ajouter manuellement vos includes, lib et libpaths, et ajouter l'étape de construction à l'emplacement de l'étape de construction. :end du fichier de commandes, comme suit :

...
(batch file contents go here)
:end
MSBUILD.exe c:\path-to-sln 

Après cela, vous pouvez simplement dire au programme à partir duquel vous essayez de construire d'exécuter le fichier batch que vous venez de créer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X