Warum erhalte ich den folgenden Build-Fehler?
C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ msbuild.exe C: \ Code \ EduBenesysNET \ EduBenesysNET \ EduBenesysNET.vbproj / t: Publizieren / p: Konfiguration = Release / p: Plattform = AnyCPU / v: detailliert / 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. Alle Rechte vorbehalten. MSBUILD: Fehler MSB1008: Es kann nur ein Projekt angegeben werden. Switch: Bildung Geben Sie für die Switch-Syntax "MSBuild / help" ein.
Ich sehe nicht, wie ein zweites Projekt angegeben wird.
Wird es irgendwo in einer Projektdatei gespeichert?
visual-studio
visual-studio-2008
msbuild
Gerhard Weiss
quelle
quelle
Antworten:
Es stellt sich heraus, dass der abschließende Schrägstrich in der PublishDir-Eigenschaft dem Endzitat entgeht. Das Entkommen aus dem nachgestellten Schrägstrich löste mein Problem.
Auf diese Weise können wir Anführungszeichen für Pfade verwenden, deren Eigenschaften Leerzeichen enthalten, für die MSBuild den abschließenden Schrägstrich benötigt.
Ich weiß, dass dies ein alter Beitrag ist, aber ich habe das Gefühl, dass ich ihn mit jemandem teilen musste :-)
quelle
LÖSUNG
Entfernen Sie die Anführungszeichen um die Einstellung / p: PublishDir
dh
anstelle von Anführungszeichen
Verwenden Sie keine Anführungszeichen
Es tut mir leid, dass ich meinen Befund nicht früher veröffentlicht habe. Ich musste tatsächlich noch einmal recherchieren, um zu sehen, was geändert werden musste. Wer hätte gedacht, dass das Entfernen von Anführungszeichen funktioniert hätte? Ich habe dies beim Anzeigen eines Mitarbeiter-Builds für eine andere Lösung festgestellt und festgestellt, dass keine Anführungszeichen vorhanden sind.
quelle
Auf Git Bash musste ich die Parameter mit doppelten Schrägstrichen angeben wie:
quelle
Dieses Problem tritt auf, wenn Sie einen Pfad oder eine Eigenschaft haben, die ein Leerzeichen enthält und das nicht in Anführungszeichen steht.
Alle Ihre Eigenschaften und Pfade sind mit Zitaten versehen, es ist seltsam. Die Fehlermeldung zeigt
Education
als Schalter an, versuchen Sie zu entfernen/p:ProductName="Total Education TEST"
, um zu sehen, ob es funktioniert.quelle
MSBuild.exe C:\BuildAgent\work\4c7b8ac8bc7d723e\WebService.sln /p:Configuration=Release /p:OutputPath=bin /p:DeployOnBuild=True /p:DeployTarget=MSDeployPublish /p:MsDeployServiceUrl=https://204.158.674.5/msdeploy.axd /p:username=Admin /p:password=Password#321 /p:AllowUntrustedCertificate=True /p:DeployIisAppPath=Default WebSite/New /p:MSDeployPublishMethod=WMSVC
. Es gibt mir einen FehlerMSBUILD : error MSB1008: Only one project can be specified. Switch: WebSite/New
. Was könnte das Problem sein?Default WebSite/New
Sie müssen qoutes um den Pfad und den Dateinamen setzen.
Verwenden Sie daher MSBuild "C: \ Pfadname \ Dateiname.Exe" / [Optionen]
quelle
Versuchen Sie, den nachfolgenden Backslash oder Slash am Ende Ihres Veröffentlichungspfads zu entfernen und die URL zu installieren
Sie müssen eine spezielle Zeichenfolge mit "und (oder) /" getroffen haben, aber ich weiß nicht genug in cmd.exe, um dies herauszufinden.
Ich persönlich benutze immer Powershell: es ist viel freundlicher und mächtiger!
Ich hoffe es hilft!
quelle
Versuchen Sie in vs2012 einfach, eine Build-Definition "Test Build" mit der Standard-TFS-Vorlage "DefaultTemplate .... xaml" (normalerweise eine Kopie davon) zu erstellen.
Es wird mit dem üblichen selbsterklärenden Fehler fehlschlagen: "MSBUILD: Fehler MSB1008: Es kann nur ein Projekt angegeben werden. Schalter: Aktivitäten"
Natürlich
"
fehlen irgendwo in der Standard-TFS-Vorlage einige , sodass msbuild als Parameter ein nicht maskiertes Verzeichnis mit Leerzeichen erhält, was zu mehreren Projekten führt (?!)Verwenden Sie also NIEMALS Leerzeichen in Ihren TFS Build Definition-Namen, die ziemlich traurig und einfach zugleich sind
quelle
Ich habe einfache Anführungszeichen um den Passwortparameter verwendet, als ich den Fehler bekam
/p:password='my secret'
Schlechtund änderte es, um doppelte Anführungszeichen zu verwenden, um das Problem zu beheben.
/p:password="my secret"
gutDies gilt wahrscheinlich auch für alle Parameter, die Anführungszeichen für Werte benötigen, die ein Leerzeichen enthalten.
quelle
Für mich hatte ich vergessen, ein Schlusszitat hinzuzufügen
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)
zu
/p:DeployOnBuild=true;OutDir="$(build.artifactstagingdirectory)"
quelle
Für zukünftige Leser.
Ich habe diesen Fehler erhalten, weil meine angegebene LOG-Datei ein Leerzeichen enthält:
VOR:
AFTER: (was es gelöst hat)
quelle
Noch eine andere Ursache und Lösung dafür: Stellen Sie sicher, dass Sie kein Leerzeichen an der falschen Stelle platziert haben, dh in Parametern; meins war
dotnet -c Release - o /home/some/path
(beachte den Abstand zwischen-
undo
), ich schaute weiter auf den Pfad selbst, der korrekt war und warf mich ab. Hoffentlich hilft das! (Dies war in Bash, obwohl es auch für Windows gelten sollte)quelle
Dies hat bei mir in TFS MSBuild Argument funktioniert. Notieren Sie die Anzahl der Schrägstriche.
/ p: DefaultPackageOutputDir = "\\ Rdevnet \ Visual Studio Projects \ Insurance \"
quelle
Wenn Sie in Jenkins den Standardarbeitsbereich verwenden, kann dies auftreten. Verwenden Sie einen benutzerdefinierten Arbeitsbereich ohne Leerzeichen.
quelle
Wenn Sie die Azure DevOps-
MSBuild
Task verwenden, kann der Fehler durch ein doppeltes Konfigurationsflag verursacht werden. Stellen Sie sicher, dass Sie$(BuildConfiguration)
anstelle von MSBuild Arguments eins das angegebene Feld eingeben:quelle
Wenn Sie verwenden
Any CPU
Sie es möglicherweise in einfache Anführungszeichen setzen.Natürlich musste ich beim Ausführen in einer Docker-Datei einfache Anführungszeichen verwenden:
quelle
Nur für den Fall, dass jemand das gleiche Problem wie ich hat, fehlte mir "/" vor einem der "/ p" -Argumente. Nicht sehr klar aus der Beschreibung. Ich hoffe das hilft jemandem.
quelle