2010-04-09 3 views
0

J'ai une solution ASP.NET qui se construit très bien à partir de VS2008.Pourquoi MSBuild échoue-t-il à partir de la ligne de commande où VS2008 réussit?

Cependant, il échoue quand je fais ceci:

MSBUILD.exe c:\path-to-sln 

Il échoue avec une erreur CS0006 (« Impossible de trouver le fichier de métadonnées « nom_dll » »). Il échoue également lorsque j'essaie avec un fichier .csproj d'un projet dans la solution.

Que fait VS2008 pour que MSBuild soit manquant? Je crois comprendre que VS connaît les dépendances inter-assembly que MSBuild ne peut pas. Y a-t-il un moyen d'en informer MSBuild?

(j'ai besoin MSBuild de travailler à partir de la ligne de commande parce que je l'appelle d'une MSBuild-tâches à l'intérieur CruiseControl.Net.)

Merci à l'avance. : 3)

(je l'ai regardé How to get cmd line build command for VS solution?, mais ne l'obtenez pas)

Répondre

1

vous devez définir les variables d'environnement avant de msbuild peut fonctionner. le lien que vous avez posté avec la question a effectivement la réponse (voir l'entrée de la première réponse). Une façon d'automatiser cela est de choisir quel fichier vcvars * .bat vous avez besoin, en fonction de la plate-forme pour laquelle vous souhaitez construire un exécutable. par exemple, si vous voulez construire pour x86, le fichier vcvarsall.bat dit que vous auriez besoin de bin\vcvars32.bat. vous pouvez copier ce fichier batch, ajoutez manuellement comprend, lib et libpaths, et ajoutez l'étape de construction à la section :end du fichier batch, comme suit:

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

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

+0

Merci pour votre réponse. Je ne comprends pas cette partie de votre réponse: "ajoutez manuellement vos includes, lib et libpaths". quoi d'autre ai-je besoin en dehors du contenu de mon sln et vcvars32.bat? – sundeep

+0

vous devez ajouter les includes/libraries externes, le cas échéant, que vous avez ajoutées aux répertoires Visual Studio. les fichiers vcvars * .bat ne les ont pas; vous devez les ajouter manuellement dans le fichier bat. Je pense que dans votre cas, vous n'avez rien à ajouter, car tout ce dont vous avez besoin est dans la solution. – maranas

+0

merci maranas. – sundeep

Questions connexes