2012-01-08 15 views
5

Sto provando a eseguire entrambi i build Release e Debug su .Net v4.0, dove ho un file di progetto MSBuild piuttosto che un file di soluzione. Voglio usare lo stesso file di progetto di build, ma semplicemente sovrascrivere la proprietà Configuration passando da "Debug" a "Release".Come sovrascrivere una proprietà di configurazione?

Quando eseguire la seguente

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj 
/target:rebuild "/property:Configuration=Debug" /verbosity:Diagnostic 

ottengo il seguente errore

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): 
error : The OutputPath property is not set for project 
'buildinv.proj'. Please check to make sure that you have specified a 
valid combination of Configuration and Platform for this project. 
Configuration='Debug' Platform=''. 

posso vedere che che l'errore si verifica in _CheckForInvalidConfigurationAndPlatform.

Se mi passa una proprietà OutputPath sarà comunque funzionerà

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj 
/target:rebuild "/property:Configuration=Debug" "/property:OutputPath=." 

Si tratta di un bug noto? Dove ho bisogno di sovrascrivere la proprietà di configurazione, ho intenzione di forzare a sovrascrivere la proprietà OutputPath anche se non desidero.

Grazie in anticipo.

+0

Siete riusciti a trovare un modo per aggirare questo? Sono seduto con lo stesso problema, quando la mia soluzione chiama 19 file di progetto, e sono tutti predefiniti in Debug anycpu, anche se lo sto impostando per il rilascio sulla soluzione –

risposta

4

Nei miei file progetto, la proprietà OutputPath è definita nei gruppi di proprietà specificati per ogni piattaforma di configurazione &. Se non si imposta la piattaforma corretta, la proprietà OutputPath non viene impostata e la compilazione fallirà.

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

proprietà Platform aggiungere nella vostra linea di comando:

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj /target:rebuild "/property:Configuration=Debug;Platform=AnyCPU" /verbosity:Diagnostic 
+0

ho già provato, ma ottengo ancora lo stesso errore. Non passando la configurazione o la piattaforma, credo che per default sia di nuovo Debug e AnyCPU per i progetti creati con VS – pmcgrath

+0

Sta usando MSBuild dalla riga di comando. Non sta modificando i file di progetto sotto un editor di testo. – jww

1

aggiungere uno dei seguenti al file di progetto. L'errore indica che la variabile d'ambiente OutputPath non ottiene il valore. Rimuovendo "Condition =" da PropertyGroup, OutputPath verrà sempre impostato per qualsiasi piattaforma o configurazione, per impostazione predefinita.

<PropertyGroup> 
    <OutputPath>bin\Debug\</OutputPath> 
</PropertyGroup> 

<PropertyGroup> 
    <OutputPath>$(DefaultOutputDirectory)</OutputPath> 
</PropertyGroup> 
2

Se non si desidera modificare il file di progetto, si può anche solo specificare l'OutputPath per la costruzione nel comando:

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj /target:rebuild "/property:Configuration=Debug;OutputPath=C:\MyOutputPath" /verbosity:Diagnostic 
Problemi correlati