2011-08-15 1 views
2

Je tente de créer un fichier de solution WP7 à partir de la ligne de commande à l'aide de MSBuild (le fichier de solution est parfaitement construit dans VS). Jusqu'à présent, je donne les résultats suivants:Essayer d'utiliser MSBuild à partir de la ligne de commande pour la solution WP7

msbuild Test.WP7.sln /t:rebuild /p:OutputPath="bin\Release" /p:Platform="Any CPU" /p:Configuration="Release" 

Le problème que j'ai est une étape de pré-construction pour installer tous les packages NuGet requis, l'outil est fait référence par répertoire relatif différent du fichier de solution:

..\Tools\NuGet\nuget install $(ProjectDir)packages.config -o $(SolutionDir)Packages 

maintenant, lorsqu'il est exécuté à partir de la ligne de commande MSBuild ne peut pas trouver ce répertoire et renvoie une erreur MSB3073 comme:

"C: \ Work \ test \ trunk \ test \ test.WP7.sln" (reconstruction cible) (1) -> "C: \ Travail \ test \ tronc \ test \ tes t.Core.View.ViewModel \ test.Core.View.ViewModel.csproj "(Reconstruire la cible) (4) -> c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (902 , 9): erreur MSB3073: La commande ".. \ Outils \ NuGet \ nuget installer C: \ Work \ test \ tronc \ test \ test.Core.View.ViewModel \ packages.config -o C: \ Work \ test \ tronc \ test \ Packages » avec le code 3. quitté [C: \ Work \ test \ trunk \ test \ test.Core.View.ViewModel \ test.Core.View.ViewModel.csproj]

Toute idée comment je peut contourner ceci sans changer le projet ou les fichiers de solution? Ne pas utiliser un chemin relatif pour NuGet.

Répondre

4

Au lieu d'utiliser la variable $(SolutionDir), comme ceci:

<Target Name="BeforeBuild"> 
    <Exec Condition="Exists('$(ProjectDir)packages.config')" 
      Command="&quot;$(SolutionDir)Tools\nuget.exe&quot; install &quot;$(ProjectDir)packages.config&quot; -o &quot;$(SolutionDir)Packages&quot;" /> 
</Target> 
+0

Il est en dehors du répertoire de solution, comme dans un répertoire à partir de là ... – AwkwardCoder

+2

Mais vous avez spécifié comme par rapport à l'emplacement de votre construction. Donc, sauf si vous construisez dans le bon dossier, cela ne devrait pas fonctionner. Utilisez '$ (SolutionDir) \ .. \ Outils \ NuGet \ nuget.exe' à la place. Mais cela dit, vous * devriez * avoir l'outil nuget.exe dans le cadre de votre solution, et non comme un atout global! –

+0

triés après que j'ai changé le chemin pour utiliser le '$ (SolutionDir) .. \ Tools' – AwkwardCoder

Questions connexes