Die OutputPath-Eigenschaft ist nicht für das Projekt festgelegt

74

Beim Erstellen meiner Jenkins / MSBuild-Lösung wird dieser Fehler angezeigt

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): error : 
The OutputPath property is not set for project '<projectname>.csproj'.  Please check to
make sure that you have specified a valid combination of Configuration and Platform 
for this project.  Configuration='Latest'  Platform='AnyCPU'.  You may be seeing this 
message because you are trying to build a project without a solution file, and have
specified a non-default Configuration or Platform that doesn't exist for this project. 
[C:\<path>\<projectname>.csproj]

Irgendwelche Ideen?

BEARBEITEN

Ich habe dies in meiner .csproj-Datei

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Latest|AnyCPU'">
    <OutputPath>bin\Latest\</OutputPath>
  </PropertyGroup>
Sachin Kainth
quelle
Haben Sie versucht, Eigenschaften für OutputPath über die Befehlszeile zu übergeben? Irgendwo in einem Projekt, dass die Immobiliengruppe falsch ist oder fehlt, denke ich.
James Woolfenden

Antworten:

57

Öffnen Sie Ihr csproj in einem Texteditor und prüfen Sie, ob Sie einen Eigenschaftsgruppenabschnitt haben, der ungefähr so ​​aussehen sollte:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Latest|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Latest\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  </PropertyGroup>

Haben Sie eine "neueste" Build-Konfiguration? Wenn nicht, fügen Sie den obigen Abschnitt zum csproj hinzu.

James Woolfenden
quelle
26
Wie ist das eine Antwort? Dies ist eine Frage, die von der gestellten Frage abweicht.
Blaue Wolken
12
Vielleicht verstehst du einfach nicht, dass das die Antwort ist.
James Woolfenden
7
Ich hatte ein paar Mal das gleiche Problem; aber ich hatte die Konfiguration PropertyGroup eingerichtet, das Problem? Es war fast am Ende der Datei ... jedenfalls habe ich es direkt nach der Standardkonfiguration 'Debug | AnyCPU' nach oben verschoben, und das hat den Trick getan.
a4bike
2
@AlLelopath Sie sollten nur einen neuen Eigenschaftsgruppenabschnitt hinzufügen und keine vorhandenen bearbeiten.
Halvard
6
Für mich war die csproj-Datei in Ordnung. Das Problem wurde nicht in der '' / p: Platform = AnyCPU '' übergeben. Siehe @saurabh Antwort- Pass-Plattform-Parameter
Johnny
68

Ich habe herausgefunden, wie es funktioniert (ohne die Eigenschaften von sln / csproj in VS2013 / 2015 zu ändern).

  1. Wenn Sie eine SLN-Datei erstellen möchten:
    1. /p:ConfigurationPlatforms=Release /p:Platform="Any CPU"
  2. Wenn Sie eine .csproj-Datei erstellen möchten:
    1. /p:Configuration=Release /p:Platform=AnyCPU
      1. Beachten Sie die "Any CPU"vsAnyCPU
  3. Überprüfen Sie, ob die Ziele für Codeanalyse, fxcop, Testabdeckung (NCover) sowie MSBUILD ordnungsgemäß lokalisiert sind. In meinem Fall ist es:
    1. C:\Windows\Microsoft.NET\Framework64\v4.0.30319 Es kann jedoch anders sein, wie Sie sehen können. Microsoft hat 6 cmd-Optionen zum Erstellen von Code base :: AMD (mit den Optionen cross plt, x86 und x64) und Windows (cross, x86, x64) angegeben, und dies auch, wenn die Codeentwicklung standardmäßig erfolgte JIT (es kann PreJIT ngen.exe, econoJIT sein)

Ich denke, mehr als diese Fehlerbehebung kann mit Power Shell + msbuild behandelt werden. Kann für jemanden hilfreich sein ...

Saurabh
quelle
7
Ich wünschte, diese Antwort würde mehr Stimmen bekommen. Ich hatte die Konfiguration richtig eingestellt. Das Problem war, dass ich beim Ausführen des Builds (auf einem Build-Computer) das Argument '/ p: Platform = AnyCPU' nicht übergeben habe. Das Bestehen des Arguments löste das Problem. Danke @Saurabh
Johnny
In meiner Projektdatei wurde alles korrekt eingerichtet. Diese Antwort war das fehlende Teil des Puzzles. Vielen Dank!
Richard
Hat auch für mich gearbeitet. Die .csproj-Datei wurde festgelegt. Muss nur diesen Platform-Parameter übergeben. Prost
ärgerlich
2
Dieser Raum! In TFS 2017 musste ich zur Registerkarte "Variablen" meines Builds gehen und "Any CPU" in "AnyCPU" ändern
Jim
1
Das Problem Raum gegen Nicht-Raum war mein Problem. Warum um alles in der Welt würden sie diese Unterscheidung treffen? Arg!
Craig W.
16

Wie durch Perlyking erwähnt, anstatt das csproj XML zu bearbeiten, hat das Folgende für mich funktioniert. Hier sind die Schritte, die ich verwendet habe.

  1. Öffnen Sie die Projekteigenschaften.
  2. Wählen Sie die Registerkarte Erstellen.
  3. Überprüfen Sie im Abschnitt Ausgabe, ob ein Ausgabepfad festgelegt ist. (Wenn nicht festgelegt, speichern Sie das Projekt und es sollte funktionieren).
  4. Wenn es eingestellt ist, klicken Sie auf die Schaltfläche "Durchsuchen ..." des Ausgabepfads.
  5. Wenn der Ordnerauswahldialog geöffnet wird, navigieren Sie im Dateibrowser eine Ebene nach oben, wählen Sie den Ausgabeordner erneut aus und klicken Sie auf die Schaltfläche "Ordner auswählen".
  6. Speichern Sie die Projekteigenschaften und es sollte funktionieren.
Bevan
quelle
1
Vielen Dank! das hat bei mir funktioniert. Ich denke, dies musste aktualisiert werden, weil ich die Build-Konfiguration umbenannt habe
ozz
Ich hatte dies auch, nachdem ich meine Build-Konfigurationen umbenannt hatte. Ich musste die .csproj-Datei nicht manuell ändern, aber ich musste VS2015 beenden und dann zurück zu VS2015 gehen. Und dann hat es funktioniert (seufz ..!)
Mike Gledhill
Ist unglaublich, aber diese Arbeit, ich habe den Ordner der höheren Ebene ausgewählt, dann den Debug-Ordner erneut ausgewählt (derselbe, der ausgewählt wurde) und funktioniert. Vielen Dank.
Mauri
Dies funktionierte nur für mich, wenn ich sicherstellte, dass der Ausgabepfad "bin \" war und nichts danach
MikeDev
10

So fügen Sie zu dem, was @James sagte, fand ich , dass , wenn ich an den Projekt Compile Eigenschaften in VS2013 sehe, der Build - Ausgabepfad wurde angegeben. Als ich die .csprojDatei jedoch direkt untersuchte , OutputPathfehlte das Element für die entsprechende Build-Konfiguration. Also habe ich in VS einfach eine kleine Änderung am Ausgabepfad vorgenommen und rückgängig gemacht, sie gespeichert, und das hat den Wert in die Projektdatei geworfen, und ich konnte dann erstellen.

perlyking
quelle
2
5 Jahre später ... VS2019 und das ist immer noch ein Problem - und dieses Update funktioniert immer noch. Vielen Dank.
GeoffM
1

Ich habe diesen Fehler nur erhalten, als ich mein Webprojekt veröffentlicht habe. Ich habe beim Einrichten des Veröffentlichungsprofils fälschlicherweise die falsche Build-Konfiguration ausgewählt.

raterus
quelle
1

Ich hatte das gleiche Problem. Ich habe meine Windows-Plattform über die Befehlszeile aktualisiert. Derzeit wurde ich auf [email protected] Version aktualisiert. Dann müssen Sie nach dem Dateinamen "SQLite3.UWP.vcxproj" suchen. Versuchen Sie, "v141" in "v140" zu ändern. Derzeit verwende ich Visual Studio 2015 Professional. Wenn es sich um Visual Studio 2017 handelt, muss die Version in der Datei SQLite3.UWP.vcxproj nicht geändert werden.

Flutterian
quelle
1

In meinem Fall ist dieser Fehler aufgetreten, weil der Ausgabeordner einen Punkt enthielt, um ihn relativ zum aktuellen Verzeichnis zu machen. Das Problem wurde durch Entfernen des Punktes gelöst.

Die Beleidigung Build output pathwar:

.\bin\Output

Das Problem wurde durch Ändern in gelöst

bin\Output

Der Build-Ausgabepfad befindet sich auf der BuildRegisterkarte der Projekteigenschaften. Für jede Kombination von Configurationund gibt es einen anderen Pfad Platform.

JotaBe
quelle
1

Hatte gerade das Problem mit einigen Service Fabric-Dingen in MSBuild.

Der erste Schritt bestand darin, mit der rechten Maustaste auf jedes betroffene Projekt zu klicken und dessen Eigenschaften aufzurufen, die Registerkarte Erstellen auszuwählen und dann das Plattformziel auf x64 festzulegen.

Der zweite Schritt bestand darin, in den Konfigurationsmanager zu wechseln und jedes Projekt so einzustellen, dass auch x64 für Debug und Release verwendet wird.

Dies war für ein VS2017-Projekt.

MattD
quelle
1

Ich habe MSBuild zum Erstellen mehrerer SLN-Dateien verwendet und einen neuen Schritt zum Erstellen einer CSsproj-Datei hinzugefügt, als dieser Fehler auftrat.

@ Saurabhs Antwort hob die Wurzel des Problems hervor. Beim /p:Platform=AnyCPUBeheben des Abschnitts zum Abschnitt MSBuild-Argumente wurde das Problem jedoch nicht behoben. Ich musste den Plattformwert im Build-Schritt tatsächlich aktualisieren.

Alle anderen Erstellungsschritte verwendeten den $(BuildPlatform)Variablenwert (der zufällig "jede CPU" mit einem Leerzeichen darin war).

(Hätte ich mehrere .csproj-Dateien erstellt, hätte ich wahrscheinlich eine zweite Variable für die AnyCPU-Plattform erstellt.)

Screenshot des Visual Studio Build-Schritts

Keiki
quelle
1

Ich hatte das gleiche Problem bei einigen Projekten. Nach dem Hinzufügen einer neuen Konfiguration zu den Projekten wurde die PropertyGroup ganz am Ende der Projektdatei hinzugefügt.

Verschieben der PropertyGroup nach rechts nach allen anderen Konfigurationen PropertyGroup hat das Problem behoben.

Ich hoffe das hilft.

ACardenas
quelle
1

Ich hatte dies mit einer etwas ungewöhnlichen SLN / CSPROJ-Dateianordnung:

Ich hatte Projektdateien:

  • A.csproj, mit den Konfigurationen "Dev" und "Production"
  • B.csproj, mit den Konfigurationen "Dev" und "Production"
  • C.csproj, eine "gemeinsame" Bibliothek, die sowohl von A als auch von B mit den Konfigurationen "Dev" und "Production" verwendet wird.

Und ich hatte SLN-Dateien:

  • AC.sln, mit der Konfiguration "Produktion" - wird von Jenkins verwendet, um Projekt A und die gemeinsame Bibliothek zu erstellen
  • BC.sln, mit der Konfiguration "Produktion" - wird von Jenkins verwendet, um Projekt B und die gemeinsame Bibliothek zu erstellen
  • ABC.sln mit der Konfiguration "Dev" - wird von Entwicklern in VS verwendet, um neuen Code zu schreiben, ohne ständig andere Lösungen öffnen zu müssen (diese Antwort ist eine vereinfachte Ansicht einer Lösung mit 55 Projekten).

Ich hatte die allgemeine Bibliothek bearbeitet und eine Abhängigkeit von Projekt A eingeführt. AC.sln baute immer noch Jenkins ein, aber BC.sln gab einen Fehler mit den Worten:

Die OutputPath-Eigenschaft ist für das Projekt 'A.csproj' nicht festgelegt. Stellen Sie sicher, dass Sie für dieses Projekt eine gültige Kombination aus Konfiguration und Plattform angegeben haben. Configuration = 'Debug' Platform = 'AnyCPU'.

Es war anfangs rätselhaft, weil wir in keinem Projekt irgendwo eine Debug-Konfiguration haben. finde in Dateien für Debug|aufgedeckte 0 Treffer

ABC.sln, das die menschlichen Entwickler in VS verwenden, würde ebenfalls gut funktionieren. Das Erstellen von BC.sln gab einen Fehler aus, dass A.dll nicht gefunden wurde

Als das kreisförmige unlösbare Problem von C in Abhängigkeit von A beseitigt war, fing alles wieder an zu arbeiten

Caius Jard
quelle
0

Die OutputPath-Eigenschaft ist nicht für das Projekt festgelegt. Eine Fehlermeldung wird angezeigt , wenn eine PlatformUmgebungsvariable vorhanden ist (wie dies bei HP Laptops der Fall zu sein scheint) und das Ziel von MSBuild einen Verweis auf ein anderes Visual Studio-Projekt enthält.

Nach dem Umbenennen der Platform-Umgebungsvariablen funktioniert mein Build jetzt.

Es scheint, dass der Parameter auf die /p:Platform="Any CPU"Ziellösung angewendet wird, aber nicht auf referenzierte Projekte übertragen wird. In meinem Fall wurde in der Fehlermeldung angegeben, dass referenzierte Projekte die Umgebungsvariable verwenden Platform=MCD.

John Clegg
quelle
0

Dieser Fehler ist irreführend und kann durch ein anderes Problem verursacht werden. Überprüfen Sie die gesamte Nachricht:

The OutputPath property is not set for project 'myproject'.  Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='myconfig'  Platform='AnyCPU'.  This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform.

In meiner Build-Konfiguration fehlte dieser Knoten im csproj:

<PlatformTarget>AnyCPU</PlatformTarget>

Obwohl AnyCPU die ausgewählte Plattform in der Dropdown-Liste war, war die eigentliche XML nicht vorhanden. Durch Hinzufügen wurde die Nichtübereinstimmung zwischen dem Projekt und dem anderen Projekt, auf das verwiesen wurde, behoben.

user3063448
quelle
0

Ich hatte zwei Projektkonfigurationen Debugund Release. Wenn der ReleaseBuild verwendet wurde, wurde dieser Fehler ausgelöst. Das Problem, das ich fand, war, dass sich csprojdie DebugKonfiguration in der Datei ganz oben und die ReleaseKonfiguration ganz unten befand.

Durch manuelles Verschieben des ReleaseBuilds direkt unter dem DebugBuild wurde das Problem behoben.

Ich gehe davon aus, dass ich beim Einrichten meiner Build-Konfigurationen etwas falsch gemacht habe, da dies nicht das Gefühl hat, dass ich es manuell hätte anpassen müssen.

MM-MikeSauce
quelle
0

Bearbeiten Sie die Eigenschaften des Projekts: Stellen Sie sicher, dass "Konfigurationseigenschaften-> Allgemein-> Ausgabeverzeichnis" nicht leer ist. Beachten Sie, dass es hier nicht OutputPath heißt. Sie können den Wert wahrscheinlich aus dem Zwischenverzeichnis kopieren.

GLJeff
quelle