MSBUILD: erreur MSB1008: un seul projet peut être spécifié

Pourquoi est-ce que je reçois l'erreur de construction suivante?

C:WINDOWSMicrosoft.NETFrameworkv3.5msbuild.exe C:CodeEduBenesysNETEduBenesysNETEduBenesysNET.vbproj /t:publish /p:Configuration=Release /p:Platform=AnyCPU /v:detailed /p:PublishDir="\BSIIS3c$DATAWEBSITESbenesys.netbenesys.netTotalEducationTest"  /p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest/"  /p:ApplicationVersion=1.0.1.198  /p:ProductName="Total Education TEST"   /p:PublisherName="BeneSys, Inc."  /p:UpdateRequired="True"  /p:MinimumRequiredVersion=1.0.1.198
Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3603]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

MSBUILD : error MSB1008: Only one project can be specified.
Switch: Education

For switch syntax, type "MSBuild /help"

Je ne vois pas comment un deuxième projet est spécifié.
Il est stocké dans un fichier de projet quelque part?

76
demandé sur Zitrax 2010-09-23 18:59:33

13 réponses

Il s'avère que la barre oblique de fin dans la propriété PublishDir échappe à la citation de fin. Échapper à la barre oblique finale a résolu mon problème.

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\\"

De cette façon, nous pouvons utiliser des guillemets pour les chemins qui ont des espaces dans les propriétés que MSBuild nécessite la barre oblique finale.

Je sais que c'est un vieux post, mais j'ai l'impression d'avoir besoin de le partager avec quelqu'un: -)

97
répondu Matt 2012-12-14 05:32:34

SOLUTION
Supprimez les guillemets autour du paramètre / P: PublishDir

C'est-à-dire
Au lieu de guillemets

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\"  

N'utilisez pas de guillemets

/p:PublishDir=\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest\  

Je suis désolé de ne pas avoir posté ma conclusion plus tôt. En fait, j'ai dû faire des recherches à nouveau pour voir ce qui devait être changé. Qui aurait pensé que la suppression des citations aurait fonctionné? J'ai découvert cela lors de la visualisation d'une construction de collègues pour une autre solution et j'ai remarqué qu'il n'y avait pas de citations.

29
répondu Gerhard Weiss 2017-12-08 13:39:17

Ce problème apparaît lorsque vous avez un chemin ou une propriété contenant un espace et qui n'est pas cité.

Toutes vos propriétés et votre chemin ont une citation autour d'eux, c'est étrange. Le message d'erreur indique Education en tant que commutateur, essayez de supprimer /p:ProductName="Total Education TEST" pour voir si cela fonctionne.

20
répondu Julien Hoarau 2010-09-23 16:01:14

Vous devez placer qoutes autour du chemin et du nom du fichier.
Donc de l'utiliser MSBuild "C:\Path Nom\Nom Du Fichier.Exe " / [Options]

6
répondu Zamir 2011-01-29 07:02:43

Essayez de supprimer la barre oblique inverse ou la barre oblique à la fin de votre chemin de publication et installez l'url

/p:PublishDir="\\BSIIS3\c$\DATA\WEBSITES\benesys.net\benesys.net\TotalEducationTest"
/p:InstallUrl="https://www.benesys.net/benesys.net/TotalEducationTest"

Vous devez avoir frappé une séquence spéciale de caractères avec le \ " and (or)/", mais je n'en sais pas assez dans cmd.exe pour comprendre.

Personnellement, j'utilise toujours Powershell : c'est beaucoup plus convivial et puissant!

J'espère que ça aide!

4
répondu Cédric Rup 2011-01-29 08:49:55

Dans vs2012, essayez simplement de créer une définition de Construction "Test Build" en utilisant le modèle TFS par défaut "DefaultTemplate....xaml" (généralement une copie de celui-ci)

Il échouera avec l'erreur d'auto-explication habituelle: "MSBUILD: erreur MSB1008: un seul projet peut être spécifié.Commutateur: Activités "

Bien sûr quelque part dans le modèle TFS par défaut, certains " sont manquants, donc msbuild recevra en paramètre un répertoire Non échappé contenant des espaces projets(?!)

Donc, N'utilisez jamais d'Espaces Dans vos noms de définition de construction TFS, assez triste et simple en même temps

2
répondu user3636264 2014-08-28 11:03:50

Sur Git Bash, j'ai dû spécifier les paramètres avec des barres obliques doubles comme:

MSBuild.exe "Path\to\Solution.sln" //p:Platform="x86" //p:Configuration=Release //p:AppxBundlePlatforms="x86" 
2
répondu friday 2018-07-04 10:29:45

Cela a fonctionné pour moi dans L'Argument TFS MSBuild. Notez le nombre de barres obliques.

/p:DefaultPackageOutputDir="\\Rdevnet\Visual Studio Projects\Assurance\"

1
répondu Mark Monforti 2014-02-24 16:22:47

J'utilisais des guillemets simples autour du paramètre de mot de passe quand j'ai eu l'erreur

/p:password='my secret' mauvaise

Et l'a modifié pour utiliser des guillemets doubles pour résoudre le problème.

/p:password="my secret" bon

Probablement la même chose s'appliquerait à tout paramètre qui a besoin de guillemets pour les valeurs qui contiennent un espace.

1
répondu John K 2016-08-17 17:20:21

Pour moi, j'avais oublié d'ajouter une citation de clôture

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)

À

/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"

1
répondu RezaRahmati 2017-10-05 20:14:18

Juste au cas où quelqu'un a le même problème que moi, il me manquait "/" avant l'un des arguments "/p". Pas très clair de la description. J'espère que cela aide quelqu'un.

0
répondu Johnny 2017-09-21 19:04:27

Pour les futurs lecteurs.

J'ai eu cette erreur parce que mon fichier JOURNAL spécifié avait un espace:

Avant:

/l:FileLogger,Microsoft.Build.Engine;logfile=c:\Folder With Spaces\My_Log.log

Après: (qui l'a résolu)

/l:FileLogger,Microsoft.Build.Engine;logfile="c:\Folder With Spaces\My_Log.log"
0
répondu granadaCoder 2018-03-21 13:31:19

Si vous utilisez L'espace de travail par défaut dans Jenkins, cela peut se produire. Utilisation espace de travail personnalisé emplacement sans espaces.

entrez la description de l'image ici

-1
répondu user8537391 2017-10-26 16:17:29