149 votes

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

Pourquoi est-ce que j'obtiens l'erreur de construction suivante ?

C:\\WINDOWS\\Microsoft.NET\\Framework\\v3.5\\msbuild.exe C:\\Code\\EduBenesysNET\\EduBenesysNET\\EduBenesysNET.vbproj /t:publish /p:Configuration=Release /p:Platform=AnyCPU /v:detailed /p:PublishDir="\\\\BSIIS3\\c$\\DATA\\WEBSITES\\benesys.net\\benesys.net\\TotalEducationTest\\"  /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 en quoi un deuxième projet est spécifié.
Est-il stocké quelque part dans un fichier de projet ?

4voto

Cédric Rup Points 5363

Essayez de supprimer la barre oblique inverse ou la barre oblique à la fin du chemin de publication et de l'url d'installation.

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

Vous devez avoir trouvé une séquence spéciale de caractères avec " et (ou) / ", mais je ne connais pas assez cmd.exe pour le savoir.

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

J'espère que cela vous aidera !

4voto

Christian Rondeau Points 325

Encore une autre cause et une autre solution à ce problème : Vérifiez que vous n'avez pas mis d'espace au mauvais endroit, c'est-à-dire dans les paramètres ; le mien était dotnet -c Release - o /home/some/path (noter l'espace entre - y o ), j'ai continué à regarder le chemin lui-même, ce qui était correct et m'a déconcerté. J'espère que cela vous aidera ! (c'était avec Bash, mais cela devrait aussi s'appliquer à Windows)

3voto

user3636264 Points 1

Dans vs2012, essayez 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 habituelle d'auto-explication : "MSBUILD : erreur MSB1008 : Un seul projet peut être spécifié.Switch : Activités"

Bien sûr, quelque part dans le modèle TFS par défaut, des " sont manquants, de sorte que msbuild recevra en paramètre un répertoire non échappé contenant des espaces, ce qui se traduira par des projets multiples ( ?!).

Il ne faut donc JAMAIS utiliser d'espaces dans les noms des définitions de construction de TFS, c'est à la fois triste et simple.

3voto

John K Points 13695

J'utilisais des guillemets simples autour du paramètre "mot de passe" lorsque j'ai obtenu l'erreur suivante

/p:password='my secret' mauvais

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

/p:password="my secret" bon

Il en va probablement de même pour tout paramètre nécessitant des guillemets pour les valeurs contenant un espace.

3voto

RezaRahmati Points 1807

Pour moi, j'avais oublié d'ajouter le guillemet de clôture

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

à

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

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