Fehler "Die Ausgabepfadeigenschaft ist für dieses Projekt nicht festgelegt"

90

Ich habe eine Multi-Projekt-Lösung in Visual Studio 2008. Ich habe der Lösung gerade eine neue Konfiguration mit dem Namen Release-VersionIncrement hinzugefügt, in der die Konfiguration "Release verwenden" als Basis angegeben ist. Alle Projektdateien wurden mit dieser Konfiguration aktualisiert. Wenn ich jedoch versuche, ein bestimmtes Projekt mit dieser Konfiguration zu kompilieren, wird die folgende Fehlermeldung angezeigt:

Fehler 5 Die OutputPath-Eigenschaft ist für dieses Projekt nicht festgelegt. Stellen Sie sicher, dass Sie eine gültige Kombination aus Konfiguration und Plattform angegeben haben. Configuration = 'Release-VersionIncrement' Platform = 'AnyCPU' C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets 539 9 DataConversion

Was passiert hier? Das Projekt lässt sich in der Release- oder Debug-Konfiguration problemlos kompilieren.

laconicdev
quelle
6
Ich hatte stundenlang damit zu kämpfen, bis mir klar wurde, dass die Dropdown-Liste in der TFS-Build-Definition "Any CPU" statt "AnyCPU" enthält !!!!
Der Muffin-Mann
1
In VS2012 lautet das Dropdown-Menü in der Build-Konfiguration "Beliebige CPU", in der .csproj-Datei jedoch "AnyCPU". In Jenkins oder in der Befehlszeile funktioniert also "AnyCPU".
Jirong Hu

Antworten:

94

Normalerweise geschieht dies, wenn die OutputPath-Eigenschaft der Projektdatei leer ist. Projektdateien sind nur MSBuild- Dateien. So bearbeiten Sie in Visual Studio: Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie "Projekt entladen", klicken Sie mit der rechten Maustaste auf das entladene Projekt und wählen Sie "Bearbeiten ...".

Suchen Sie nach der Eigenschaftsgruppe Release-Versionincrement. Es sollte ungefähr so ​​aussehen

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release-VersionIncrement|AnyCPU' ">
  <OutputPath>bin\Release-VersionIncrement\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <Optimize>true</Optimize>
  <DebugType>pdbonly</DebugType>
  <PlatformTarget>AnyCPU</PlatformTarget>
  <CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
  <CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
  <ErrorReport>prompt</ErrorReport>
</PropertyGroup>

Der wichtige dort ist der OutputPath, existiert er für Ihre Projektdatei? Wenn nicht, fügen Sie es hinzu und versuchen Sie es erneut.

Sagte Ibrahim Hashimi
quelle
33
Wenn der Ausgabepfad korrekt ist und Sie diesen Fehler weiterhin erhalten, haben Sie möglicherweise Verweise auf Assemblys oder andere Projekte, die nicht mehr vorhanden sind. Bereinigen Sie die alten Referenzen. Das war meine Erfahrung.
John K
3
Ich bin gerade auf diesen Fehler gestoßen und musste die Projektdatei direkt ändern. Obwohl auf der Projekteigenschaftenseite "Beliebige CPU" stand, wurde die Eigenschaft anfangs auf "leer" gesetzt, und ich habe eine Platform = BPC-Einstellung aus meinen Umgebungsvariablen übernommen. Nachdem ich das behoben und die Eigenschaftenseite von einer beliebigen CPU auf x86 und zurück gesetzt / zurückgesetzt hatte, wurde sie immer noch nicht erstellt und behauptete, die Plattform sei jetzt 'x86' (?!?). Sicher genug, ich habe die Schritte hier befolgt und festgestellt, dass es jetzt auf x86 eingestellt ist, also habe ich es manuell bearbeitet und jetzt sind alle wieder glücklich. Danke Leute!
DaveN59
2
Meine Projektdatei hatte die erwartete PropertyGroup mit einem nicht leeren OutputPath, und ich erhielt diesen Fehler. Das einzige, was mir auffiel, war, dass die PropertyGroup für diese bestimmte Konfiguration das erste Element unter dem Stammknoten in der Datei war und das Condition-Attribut im Gegensatz zu allen anderen Konfigurationsbedingungen keinen führenden und nachfolgenden Bereich hatte. Zu diesem Zeitpunkt habe ich dieses Element unter einige der anderen Konfigurationen verschoben (nicht sicher, warum es wichtig ist, habe nur Dinge ausprobiert) und das Leerzeichen in die Bedingung eingefügt. Danach hat es funktioniert. Ich bin mir nicht sicher, was den Unterschied ausmachte.
Seth Flowers
2
Ich hatte ein anderes Problem. Ich habe SlowCheetah verwendet, um meine Konfigurationstransformationen für mein Windows-Projekt zu erstellen. Die Konfigurationen hatten nicht das Leerzeichen, wie es @sethflowers vorgeschlagen hatte. Ich habe diese hinzugefügt, aber das hat nicht geholfen. Ich habe gesehen, dass es zwischen den Konfigurationen eine andere Eigenschaftsgruppe gibt. Also haben Sie das geklärt (platzieren Sie einfach die Eigenschaftsgruppe unter den Eigenschaftsgruppen der Projektkonfiguration) und dann war das Problem behoben. Vielen Dank für alle Vorschläge hier. Es hat mir Zeit gespart !!!
Ralph Jansen
7
Versuchen Sie es auf jeden Fall mit \ p: Platform = "AnyCPU" anstelle von \ p: Platform = "Any CPU". Das hat bei mir funktioniert! Sah das schon ewig an!
Lee Englestone
78

Ich habe diesen Fehler auch gesehen, als unser Build-Agent so konfiguriert wurde, dass die Plattform " Beliebige CPU " (mit Leerzeichen wie in Visual Studio angezeigt) anstelle von " AnyCPU " (ein Wort wie in der Projektdatei angegeben) ausgeführt wird.

Richard Dingwall
quelle
5
Ich bin auf dasselbe Problem gestoßen. Es scheint, dass auf Lösungsebene "Beliebige CPU" gültig ist, auf Projektebene jedoch "AnyCPU". Mit anderen Worten, msbuild myproj.sln /p:Configuration=Debug /p:Platform="Any CPU"war in Ordnung, aber beim msbuild myproj.proj1.csproj /p:Configuration=Debug /p:Platform=AnyCPUErstellen des Projekts musste ich den Speicherplatz in einer beliebigen CPU weglassen , um den Eigenschaftsfehler "Ausgabepfad" zu unterdrücken.
Emil G
2
Unglaublich und was für eine PITA für CI-Konfiguration. Ich habe seit Tagen damit zu kämpfen.
Jeremy Holovacs
Ich hatte diesen Fehler, als ich nicht auf dem Haupt-Build-Server bauen konnte und die von mir ausgewählte Alternative "Any CPU" anstelle von "AnyCPU" bestand. Nach der Überprüfung gab es einige Unterschiede in den Versionsnummern von MSBUILD und anderer Software. Vielen Dank für Ihre Antwort,
Gilles
1
Ich kann nicht glauben, dass der Raum der Schuldige war!
Alexandra
36

Ich hatte das gleiche Problem, als ich MSBuild zuerst verwendete. Meine Lösung lautet: Verwenden Sie die OutputPath-Eigenschaft auf jeden Fall. So was:

msbuild XXX.csproj /p:OutputPath=bin\Debug.
Peter Mortensen
quelle
Dies löste mein Problem für einen TeamCity Azure Cloud Service-Build. +1
Starmandeluxe
Ebenso für mich mit VSOs CI Build.
StriplingWarrior
11

In unserem Fall haben wir ein Build-Skript auf unseren HP Entwicklerboxen ausgeführt. HP hat einige Umgebungsvariablen, die sie für ihre eigenen Zwecke eingerichtet haben, und eine davon ist PLATFORM (wird anscheinend für "HP Easy Setup" verwendet).

Das Löschen der Umgebungsvariablen PLATFORM hat funktioniert.

Sie können Ihr Build-Skript auch zukunftssicher machen, indem Sie die Plattform angeben, d
msbuild /p:Platform=AnyCPU. H.

Boggin
quelle
Das hat mich auf meinem neuen HP Laptop erwischt - danke @Boggin - das wäre mir nicht eingefallen.
Rob Cooper
9

Wenn Visual Studio sich ausdrücklich über "Platform = 'BPC'" beschwert, können Sie dies leicht beheben, indem Sie die Umgebungsvariable "Platform" entfernen.

Lösche diesen bösen Jungen.

Starten Sie nun Visual Studio neu und Sie können loslegen.

Scott S.
quelle
6

Wie " Richard Dingwall " angedeutet hat, hängt das Problem mit VS zusammen, das die Anzeigeversion von " Any CPU " anstelle der MSBuild-Version verwendet, die tatsächlich " AnyCPU " lautet.

Gehen Sie zu Build / New Build Definition oder bearbeiten Sie Build Definition -> Prozess -> Zu erstellende Konfigurationen, öffnen Sie den Konfigurationsauswahldialog und wählen Sie unter " Plattform " die Option " Beliebige CPU" fügen Sie unter " " manuell " AnyCPU " hinzu.

Robert Hoffmann
quelle
6

Wie bereits erwähnt, muss OutputPath festgelegt UND zuvor <Import Project="$(WixTargetsPath)" /> in die .wixproj-Datei eingefügt werden

OlegMax
quelle
Dieses Problem hing mit meinem Problem zusammen. Nachdem ich es erstellt hatte, fügte ich eine neue Konfiguration für ein Wix-Projekt hinzu. Die neue Konfiguration wurde am Ende der Datei hinzugefügt, sodass alle zu dieser neuen Konfiguration gehörenden PropertyGroups nach diesem Import platziert und in verschoben wurden Das Dach, direkt neben den anderen, hat es für mich zum Laufen gebracht.
Eugenio Miró
4

Ich habe die PlatformUmgebungsvariable entfernt (war BNB oder so etwas). Das Problem ist weg.

Dorn
quelle
1
Leider ist auch nach dem Entfernen der Platform-Umgebungsvariablen ein vollständiger Neustart erforderlich!
79E09796
4

Ich habe heute die x64-Plattform zu meiner Lösung hinzugefügt, als ich auf dieses Problem stieß.

In meinem Fall lautete der Fehler:

Erstellt $ / ProjectDirectory / ProjectName.csproj für Standardziele. c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (484): Die OutputPath-Eigenschaft ist für das Projekt ProjectName.csproj 'nicht festgelegt. Stellen Sie sicher, dass Sie für dieses Projekt eine gültige Kombination aus Konfiguration und Plattform angegeben haben. Konfiguration = 'Debug' Plattform = 'x64'. Möglicherweise wird diese Meldung angezeigt, weil Sie versuchen, ein Projekt ohne Lösungsdatei zu erstellen, und eine nicht standardmäßige Konfiguration oder Plattform angegeben haben, die für dieses Projekt nicht vorhanden ist.

Ich wusste, dass das OutputPathin Ordnung sein sollte, da dies eine existierende, funktionierende VS-Lösung war. Also ging ich zum nächsten Hinweis über - "eine gültige Kombination aus Konfiguration und Plattform".

Aha! Visual Studio versucht zu erstellen Configuration='Debug', Platform='x64'. Beim Betrachten meiner Projektdatei stellte ich fest, dass x64 nicht als eine der möglichen Plattformen aufgeführt war. Mit anderen Worten, ich hatte die folgenden Einträge (gekürzt):

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Debug\</OutputPath>  
      . . .  
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
      <PlatformTarget>x86</PlatformTarget>
      <OutputPath>bin\x86\Release\</OutputPath>    
      . . .
  </PropertyGroup>

Einfache Lösung: Fügen Sie einfach x64-Einträge hinzu!

Ich habe die x86-Einträge kopiert / eingefügt und sie in x64 geändert. Beachten Sie, dass ich auch die Pfade geändert habe, damit diese x86-Builds nicht überschreiben:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Debug\</OutputPath>    
      . . .
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
      <PlatformTarget>x64</PlatformTarget>
      <OutputPath>bin\x64\Release\</OutputPath>    
      . . .
  </PropertyGroup>
Gustavo Mori
quelle
3

Ich hatte eine Weile damit zu kämpfen und entlud, baute und lud dann das fehlerhafte Projekt in der Lösung neu, und dann funktionierte MSBuild korrekt.

Glenn
quelle
3

Als Scott S musste ich die Umgebungsvariable "Platform" löschen .

Starten Sie dann VS neu und es ist in Ordnung: keine Fehlermeldung mehr ...

M Denis
quelle
Dies funktionierte für mich, als ich die Plattform löschte, die ich auch in meinem Schritt Build vNext MSBuild angegeben hatte.
4imble
2

Das Problem hatte mit meiner Projektkonfiguration zu tun. Hier ist das Szenario:

Lösung A Referenzen:

Projekt X verweist auf Projekt Y
Projekt Y.

Referenz zu Lösung B (die ich zu erstellen versuche):

Projekt X Projekt Z.

Meine Lösung bestand darin, eine Konfiguration mit demselben Namen für Lösung A zu erstellen, sie neu zu erstellen und dann Lösung B neu zu erstellen. Dadurch wurde das Problem behoben.

laconicdev
quelle
1
Ich hatte den gleichen Fehler und diese Umgehung war das einzige, was für mich funktioniert hat. Grundsätzlich hatte ich eine Lösungsplattformkonfiguration "Win32", die ein Silverlight-Projekt mit der Plattformkonfiguration "Any CPU" erstellt, sowie ein Webanwendungsprojekt mit der Plattformkonfiguration "x86", das das Silverlight-Projekt hostet. Ich musste dem Silverlight-Projekt "x86" eine neue Projektplattformkonfiguration hinzufügen (und die alte als Standardkonfiguration beibehalten), damit msbuild wie erwartet funktioniert.
Rami A.
2

Ich hatte die gleiche Fehlermeldung. Dies wurde durch einen Verweis auf ein Projekt verursacht, das entladen wurde und vom Linker nicht benötigt wurde (andernfalls wäre es beim Kompilieren fehlgeschlagen). Durch Entfernen der fehlerhaften Referenz wurde das Problem behoben.

Gishe
quelle
2

In meinem Fall (VS2010) habe ich die Zeichenfolge im Feld "OutputPath" auf der Registerkarte "Build" entfernt und leer gelassen. Dann habe ich die Lösung neu aufgebaut. Die Erstellung war erfolgreich und VS hat das aktuelle Verzeichnis "./" in den "OutputPath" eingefügt. Ich habe das aktuelle Verzeichnis "./" durch meinen Pfad ersetzt ("bin \ x64 \ Release \" - es reicht zu sagen, dass dies der genaue Ordnerpfad ist, über den sich VS beschwert hat), und die Neuerstellung war erneut erfolgreich.

Tomasz Stypich
quelle
1

In meinem Fall wurde die Eigenschaft OutputPath in den Projektdateien festgelegt. Aber das Entladen, Nachladen und anschließende Wiederherstellen hat das Problem behoben.

Farkashon
quelle
1

Beim Hinzufügen einer neuen Lösungskonfiguration zu meiner Lösung wurde die Fehlermeldung "Die OutputPath-Eigenschaft ist für Projekt X nicht festgelegt. Stellen Sie sicher, dass Sie für dieses Projekt eine gültige Kombination aus Konfiguration und Plattform angegeben haben. Konfiguration = 'QA 'Platform =' AnyCPU '. Dieser Fehler kann auch auftreten, wenn ein anderes Projekt versucht, einem Projekt-zu-Projekt-Verweis auf dieses Projekt zu folgen. Dieses Projekt wurde entladen oder ist nicht in der Lösung enthalten, und das referenzierende Projekt nicht Erstellen Sie mit derselben oder einer gleichwertigen Konfiguration oder Plattform. ProjectY ".

In meinem Fall war das Problem auf einen hervorgehobenen Teil der Fehlerbeschreibung zurückzuführen. Projekt X Teil meiner Lösung war ein Projektverweis auf ProjectY einer anderen Lösung (anderer Zweig).

Ich habe dieses Problem behoben, indem ich Projekt X so geändert habe, dass in der aktuellen Lösung ein Projektverweis auf ProjectY verwendet wird. Hoffe das hilft jemandem mit ähnlichen Problemen.

BNJ
quelle
0

In meinem Fall wurde der neue XML-Block "PropertyGroup" am Ende des Dokuments generiert. Ich habe es gerade nach anderen "PropertyGroup" -Tags ersetzt und dies hat das Problem behoben.

Alexander Pavlenko
quelle
0

Ich habe ein neues Projekt in einer neuen Lösung erstellt, die auf vorhandene Projekte verweist. Dieser Fehler tritt auf, wenn ich ein vorhandenes Projekt hinzufüge (z. B. Projekt 1) und versuche, es zu erstellen, ohne andere Projekte hinzuzufügen, auf die Projekt 1 verweist.

Stellen Sie einfach sicher, dass alle zugehörigen Projekte zur neuen Lösung hinzugefügt wurden und der Fehler verschwindet.

Ike
quelle
0

Ich hatte den gleichen Fehler, also habe ich mir die Projekteinstellungen angesehen und dort im Abschnitt "Erstellen" die Option "Ausgabepfad erstellen". Und der Wert war leer. Also habe ich den Wert "bin \" eingegeben und ein Fehler ist verschwunden. Es hat mein Problem gelöst.

Lukas Dvorak
quelle
0

Wenn Sie OutputPath als Parameter festlegen und Ihr Pfad wie folgt lautet: Denken Sie bin\Release\\daran, \am Ende Folgendes hinzuzufügen : /p:OutputPath=bin\Release\\\\Es hat eine Weile gedauert, bis mir klar wurde, dass dies der Fall ist

Marysia
quelle
0

Ich hatte das gleiche Problem. Ich habe es behoben, indem ich die Projekte sauber gemacht und neu aufgebaut habe.

user5920105
quelle
0

Ich hatte das gleiche Problem und die einzige Lösung, die hilft, war das manuelle Festlegen der Build-Konfiguration in jedem NCrunch-Projekt.

Öffnen Sie das NCrunch-Fenster, in dem Sie den Status jedes Builds sehen und sehen können, dass der Build fehlschlägt. Klicken Sie mit der rechten Maustaste auf das Projekt, das nicht erstellt werden kann, und klicken Sie auf "Ausgewählte Komponente konfigurieren". Dort sehen Sie unter "Build-Einstellungen" die Eigenschaft "Build-Konfiguration verwenden", z. B. "Debuggen" und die Eigenschaft "Build-Plattform verwenden" zB "AnyCPU". (Bitte beachten Sie, dass die von Ihnen festgelegten Build- und Konfigurationseinstellungen in Ihren Konfigrationseinstellungen vorhanden sein müssen.)

Tun Sie dies für alle Ihre Projekte, aber nicht für Ihr Testprojekt. Danach funktioniert alles gut für mich.

Squadwuschel
quelle
0

Ich hatte das gleiche Problem. Ich habe es behoben, indem ich dem fehlgeschlagenen Projekt fehlende Konfigurationen hinzugefügt habe.

BUILD -> Configuration Manager ->

Klicken Sie unter Konfigurationsspalte hinzufügen auf

Hinweis: Dies lag nur daran, dass ich eine benutzerdefinierte Konfiguration habe und neu erstellte Projekte diese Konfiguration nicht hatten.

pmeyer
quelle
0

Wenn jemand dieses in seinen NCrunch-Protokollen erhält, überprüfen Sie, ob sich die PropertyGroupDefinition der Werte 'Debug' / 'Release' und 'AnyCPU' / 'x86' vor den Eigenschaftsgruppen befindet, die diese Werte in ihrem Zustand verwenden.

<PropertyGroup>
    <!-- this one first -->
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <XXX>...</XXX>
  </PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <XXX>...</XXX>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
    <XXX>...</XXX>
</PropertyGroup>

Hat für mich gearbeitet.

Waescher
quelle
0

In meinem Fall habe ich versucht, die Eigenschaftsgruppe, die meine benutzerdefinierte Konfiguration enthielt, unter die Standardkonfiguration zu verschieben. Es hat es für mich gelöst.

ermenegild0
quelle
0

Hatte gerade das mit VS2015 Professional:

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

Dies ist auch ein Multiprojekt-Jonglieren zwischen Debug / Release und verschiedenen Zielen. Ich hatte irgendwann mit Build-Konfigurationen herumgespielt und weiß, dass dies VS durcheinander bringen kann, also habe ich sie aus dem Repo zurückgezogen. Immer noch nicht gut. OutputPath wurde festgelegt, es gab keine Unterschiede mehr mit einem bekanntermaßen guten Zustand, sodass definitiv etwas mit meiner lokalen Installation nicht stimmte.

Öffnete das VS2015-Installationsprogramm und klickte auf "Reparieren" und voila ... wieder normal (zumindest bisher!)

Etherman
quelle