La proprietà OutputPath non è impostata per questo progetto


120

Quando provo a compilare il mio progetto dalla modalità di debug x86 in Visual Studio 2008. Ricevo questo errore. Quando ho esaminato il gruppo di proprietà del progetto che si è lamentato, vedo che il percorso di output è impostato.

Ecco la sezione del gruppo di proprietà per quel file .csproj

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
  <DebugSymbols>true</DebugSymbols>
  <OutputPath>bin\x86\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <BaseAddress>285212672</BaseAddress>
  <FileAlignment>4096</FileAlignment>
  <DebugType>full</DebugType>
  <PlatformTarget>x86</PlatformTarget>
 <ErrorReport>prompt</ErrorReport>

Qualcuno può far luce su questo?

NOTA: quando ho compilato questo debug e qualsiasi CPU ha funzionato.

AGGIORNATO: Errore 1 La proprietà OutputPath non è impostata per questo progetto. Verificare di aver specificato una combinazione di configurazione / piattaforma valida. Configurazione = "Debug" Piattaforma = "x86"


Ok e che configurazione e piattaforma usi? Debug + x86 o qualcos'altro?
Ondrej Tucny

Sì gestore di configurazione VS scelgo debug + x86
Amzath

@DmitryShkuropatsky messaggio di errore aggiornato
Amzath

1
Sembra corretto. C'è un altro progetto nella soluzione che potrebbe causare l'errore?
Dmitry Shkuropatsky

@DmitryShkuropatsky hai ragione, era un altro progetto che ha avuto problemi. Ma VS si è lamentato del progetto in fase di compilazione
Amzath

Risposte:


214

Ho avuto lo stesso errore dopo aver aggiunto una nuova configurazione tramite ConfigurationManager in Visual Studio.

Si è scoperto che quando è stata aggiunta la configurazione "Produzione" per l'intera soluzione (e ogni progetto) l'elemento OutputPath non è stato aggiunto ai file .csproj.

Per risolvere il problema, sono andato alla scheda Build nelle proprietà del progetto, ho modificato OutputPath da \bin\Production\a \bin\Production(trailing eliminato \) e ho salvato le modifiche. Questa creazione forzata dell'elemento OutputPath nel file .csproj e il progetto è stato compilato correttamente.

A me sembra un problema tecnico.


7
Bella presa su questo errore mercuriale. Non avrei mai immaginato che un singolo taglio potesse fare una così grande differenza. Avere un distintivo di buona risposta.
ouflak

8
Nel mio caso, costruendo un file proj, la differenza tra any cpue anycpuera il problema, ma il tuo post mi ha aiutato a vederlo.
Joshua Drake

2
Grazie Romano mi hai salvato la giornata ... se solo potessi votare la tua risposta 100 volte! :)
Martin

2
Ho appena riscontrato questo in VS 2017 v15.6.6, pancetta salvata, grazie!
Angrist

1
@ Joshua Drake, questo è un problema importante quando si utilizza VSTS. Visual studio online utilizza "any cpu", mentre visual studio locale utilizza "anycpy". Importante per gli script di compilazione.
FrankyHollywood

27

È possibile visualizzare questo errore in VS 2008 se nella soluzione è presente un progetto che fa riferimento a un assembly che non è possibile trovare. Ciò potrebbe accadere se l'assembly proviene da un altro progetto che non fa parte della tua soluzione ma dovrebbe esserlo. In questo caso è sufficiente aggiungere il progetto corretto alla soluzione per risolverlo.

Controlla la sezione Riferimenti di ogni progetto nella tua soluzione. Se qualcuno di loro ha un riferimento con una x rossa accanto, significa che hai trovato il tuo problema. Quel riferimento all'assembly non può essere trovato dalla soluzione.

Il messaggio di errore è un po 'confuso ma l'ho visto molte volte.


2
Nel mio caso si trattava di un "avvertimento giallo"
AXMIM

26

Se stai usando WiX guarda questo (c'è un bug) http://www.cnblogs.com/xixifusigao/archive/2012/03/20/2407651.html

A volte le nuove configurazioni di build vengono aggiunte al .wixprojfile più in basso nel file, ovvero separate dalle definizioni di configurazione di pari livello da altri elementi XML non correlati.

Modifica semplicemente il .wixprojfile in modo che tutte le <PropertyGroup>sezioni che definiscono le tue configurazioni di build siano adiacenti l'una all'altra. (Per modificare .wixprojin VS2013 fare clic con il pulsante destro del mouse sul progetto in Esplora soluzioni, Scarica progetto, fare nuovamente clic con il pulsante destro del mouse-> Modifica YourProject.wixproj. Ricarica dopo aver modificato il file.)


1
grazie, questo ha risolto il problema per me. Avevo un comportamento molto strano quante più configurazioni aggiungevo al progetto. Non appena ho ripulito il file di progetto, tutto ha funzionato bene. (Questo bug è stato segnalato per la prima volta nel 2012? Ottimo ...)
Kirschi

Grazie, questo ha risolto anche per me
PeterD

15

Questo è successo a me perché avevo spostato la seguente riga vicino all'inizio del file .csproj:

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets"/>

Deve essere posizionato dopo i PropertyGroup che definiscono la configurazione | Piattaforma.


11

L'errore mostrato in Visual Studio per il progetto (diciamo A) non presenta problemi. Quando ho guardato la finestra di output per la compilazione riga per riga per ogni progetto, ho visto che si lamentava di un altro progetto (B) che era stato indicato come assembly nel progetto A. Progetto B aggiunto alla soluzione. Ma non era stato indicato nel progetto A come riferimento al progetto invece come riferimento all'assembly da una posizione diversa. Quella posizione contiene l'assembly compilato per Platform AnyCpu. Quindi ho rimosso il riferimento all'assembly dal progetto A e ho aggiunto il progetto B come riferimento. Ha iniziato la compilazione. Non sono sicuro di come abbia funzionato questa correzione.


15
Deffo provalo con \ p: Platform = "AnyCPU" invece di \ p: Platform = "Any CPU". Ha funzionato da me! Stavo guardando questo per anni!
Lee Englestone

AnyCPU (Without the space) ha funzionato anche per me. Grazie Lee.
willem

1
Ho riscontrato l'errore durante l'esecuzione di un processo di compilazione su TFS 2017, dopo aver modificato il "Percorso della soluzione o dei pacchetti.config" da .sln a .vbproj. Anche cambiare BuildPlatform in AnyCPU ha funzionato per me. Vedere la nota in "Piattaforma" qui: docs.microsoft.com/en-us/vsts/build-release/tasks/build/…
Mr.Zzyzzx

2
Nel mio caso, quando si avvia la build da TFS, "any cpu"il valore predefinito per BuildPlatform era. Cambiando per "AnyCPU"risolto il problema.
XouDo

Questo è il 2020 - AnyCPU vs Any CPU è ancora un problema. Sto usando VS2019 e lo ottengo ancora su nuovi progetti. MS perché stai punendo la comunità degli sviluppatori?
Christian

9

Ho riscontrato lo stesso errore ma il problema si è rivelato essere dovuto al fatto che avevo creato una nuova configurazione nella mia soluzione che non esisteva negli assembly referenziati da un'altra soluzione.

Questo può essere risolto aprendo la relativa soluzione e aggiungendovi anche la nuova configurazione.

Questo post mi ha dato l'idea di controllare gli assembly di riferimento dopo aver già confermato che tutti i progetti all'interno della mia soluzione avevano la configurazione corretta:

http://gabrielmagana.com/2010/04/solution-to-the-outputpath-property-is-not-set-for-this-project/


7

presentava questo problema come output da Azure DevOps dopo aver impostato la compilazione di .csproj anziché di .sln nella build Pipeline.

La soluzione per me: modifica .csproj del progetto interessato, quindi copia il tuo intero

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCpu' ">

Nodo, incollalo e quindi modifica la prima riga come segue:

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|any cpu' ">

Il motivo è che nel mio caso l'errore ha detto

Please check to make sure that you have specified a valid combination of Configuration and Platform for this project.  Configuration='release'  Platform='any cpu'.  

Perché Azure vuole usare "any cpu" invece del predefinito "AnyCpu" è un mistero per me, ma questo hack funziona.


Seguendo la tua idea ho scoperto che nel mio caso non avevo bisogno di apportare modifiche al progetto, ma invece nel mio passaggio di Visual Studio Build in DevOps ho impostato il campo Confguration per utilizzare la variabile con il valore AnyCpu.
donatasj87

@ donatasj87 ti dispiacerebbe pubblicare l'intero valore di questo campo per favore?
Jay

1
Il valore completo è esattamente lo stesso, anche questo dovrebbe funzionare nella build TFS. Deve solo corrispondere al valore impostato nel file .csproj. Potete vederlo in questa immagine: pasteboard.co/JbdvBT5.png
donatasj87

4

Ho avuto lo stesso errore, quindi ho controllato le impostazioni del progetto e nella sezione "Build" c'è l'opzione "Build output path". E il valore era vuoto. Quindi ho inserito il valore "bin \" e un errore è scomparso. Ha risolto il mio problema.


3

Io ho:

  1. Fare clic con il tasto destro del mouse sul progetto con problema -> Scarica progetto
  2. Fare clic con il pulsante destro del mouse sul progetto e selezionare Modifica * .csproj
  3. Copia e incolla la configurazione dalla configurazione esistente che funziona con un nome specifico e una piattaforma di targeting (avevo la versione | x64 ):

    <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
      <OutputPath>bin\x64\Release\</OutputPath>
      <DefineConstants>TRACE</DefineConstants>
      <Optimize>true</Optimize>
      <DebugType>pdbonly</DebugType>
      <PlatformTarget>x64</PlatformTarget>
      <ErrorReport>prompt</ErrorReport>
      <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
      <Prefer32Bit>true</Prefer32Bit>
    </PropertyGroup>
  4. Fare clic con il pulsante destro del mouse sul progetto -> Ricarica progetto
  5. Ricostruisci progetto / soluzione

3

Se ottieni questo errore solo quando provi a compilare il tuo progetto dalla riga di comando usando MSBuild (come nel mio caso), la soluzione è passare manualmente il percorso di output a MSBuild con un argomento come /p:OutputPath=MyFolder.


2

Un'altra folle possibilità: se segui una semplice disposizione di controllo del codice sorgente di mettere Branch \ Main, Main e Release uno accanto all'altro e in qualche modo finisci per aggiungere un progetto esistente da Main invece di Branch \ Main (supponendo che la tua soluzione di lavoro sia Branch \ Principale), potresti visualizzare questo errore.

La soluzione è semplice: fai riferimento al progetto giusto!


2

Ho riscontrato questo problema durante l'aggiunta di un progetto a una soluzione, quindi facendovi riferimento da un altro progetto nella stessa soluzione: ho ottenuto l'icona di avviso gialla sul riferimento, ho notato che il percorso era vuoto.

La soluzione era simile a quella suggerita da @Amzath, i miei progetti venivano compilati con diversi Target Frameworks, ad es. .NET 4.0 contro 4.5.


2

Nel mio caso l'indirizzo creato della mia app era impostato su un altro computer che era spento, quindi l'ho acceso e riavviato VS e il problema è stato risolto.


2

Un'altra causa: aggiungi un riferimento al progetto dal progetto A al progetto B nella soluzione X. Tuttavia, la soluzione Y che contiene già il progetto A è ora interrotta, finché non aggiungi anche il progetto B alla soluzione Y.


2

Ho avuto lo stesso problema dopo aver aggiunto nuove configurazioni e cancellato le configurazioni "debug" e "release". Nel mio caso stavo usando un file cmd per eseguire il processo di compilazione e pubblicazione, ma è stato generato lo stesso errore. La soluzione per me: nel file csproj quanto segue:

<Configuration Condition=" '$(Configuration)' == '' ">Debug< /Configuration>

stava impostando la configurazione su "Debug" se non ne avevo specificata una esplicita. Dopo aver modificato il valore del nodo da "debug" alla mia configurazione personalizzata, tutto ha funzionato senza problemi. Spero che questo aiuti anche chiunque stia leggendo questo :)


I dettagli per questa soluzione sono menzionati in questo post del forum. social.msdn.microsoft.com/Forums/vstudio/en-US/…
Sunny Tambi

2

Ho avuto lo stesso problema, basta modificare il .wixproj per avere tutti gli <PropertyGroup Condition=" '$(Configuration)|$(Platform)' ... >elementi fianco a fianco.

Questo ha risolto il mio problema


1

Il progetto WiX che stavo utilizzando era impostato su x64tutta la linea nel gestore di configurazione . Quando si crea il progetto Azione personalizzata per la soluzione, ha impostato tutto per impostazione predefinita x86all'interno del .csprojfile. Quindi ho scaricato il progetto, modificato cambiandolo tutto x86in x64, salvato, ricaricato ed è stato bello continuare.

Non capisco perché ho dovuto farlo. Il gestore di configurazione è stato impostato per essere compilato come x64, ma non sarebbe stato impostato nel csprojfile :(


0

Dopo aver provato tutti gli altri suggerimenti pubblicati qui, ho scoperto che la soluzione per me era rimuovere la seguente sezione dal .csprojfile:

  <ItemGroup>
    <Service Include="{808359B6-6B82-4DF5-91FF-3FCBEEBAD811}" />
  </ItemGroup>

Apparentemente questo servizio del progetto originale (non disponibile sulla macchina locale) stava interrompendo l'intero processo di compilazione, anche se non era essenziale per la compilazione.


0

Ho riscontrato questo problema dopo aver aggiunto una nuova piattaforma al mio progetto. Nel mio caso il file .csproj era sotto il controllo del codice sorgente di Perforce ed era di sola lettura. L'ho verificato ma VS non ha rilevato la modifica finché non l'ho riavviato.


0

Ho avuto un problema simile su un progetto Xamarin. È forse un caso raro, ma nel caso in cui qualcun altro abbia il problema. la struttura del mio progetto era come sotto

  • Il progetto xamarin.Android aveva un riferimento dal progetto xamarin.android.library.
  • Ho creato un plugin utilizzando del codice dal progetto android.library.
  • Ora ecco il problema. se aggiungi il riferimento al progetto o l'installazione nuget sul progetto di libreria xamarin.android. Otterrai questo errore. Gli sviluppatori presumono che il codice fosse all'interno del progetto Android.Library e devo fare riferimento al nuovo plug-in su questo progetto. NO!
  • è necessario aggiungere un riferimento al progetto Android principale. perché plugin-> libreria-> output del progetto principale non viene prodotto.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.