2009-07-07 10 views
24

Quando si crea un'applicazione C# con Visual Studio 2008, è possibile impostare un nome file di output diverso per configurazione?VS2008 - Emissione di un nome file diverso per le configurazioni di debug/rilascio

e.g. 

MyApp_Debug.exe 
MyApp_Release.exe 

Ho provato un post-generazione passo per rinominare il file aggiungendo la configurazione corrente, ma che sembra un approccio frammentario. Inoltre significava che Visual Studio non poteva più trovare il file quando si preme F5 per avviare il debug.

+2

vedere qui: http://stackoverflow.com/questions/893003/change-assembly-name-based-on-configuration-visual-studio-2005/893238#893238 –

risposta

33

È possibile ottenere questo modificando il file di progetto a mano. Individuare il nodo <AssemblyName> e aggiungere un attributo condizionale ad esso:

<AssemblyName Condition="'$(Configuration)'=='Debug'">MyApp_Debug.exe</AssemblyName> 
<AssemblyName Condition="'$(Configuration)'=='Release'">MyApp_Release.exe</AssemblyName> 

Dovrete duplicarlo anche di aggiungere un altro attributo condizionale per la versione finale.

Mentre è possibile, può causare problemi. C'è un attributo AssemblyConfiguration che può essere applicato all'assembly. In AssemblyInfo.cs, messo:

#if DEBUG 
[assembly: AssemblyConfiguration("Debug")] 
#else 
[assembly: AssemblyConfiguration("Release")] 
#endif 

Questo aggiungerà un immobile alla sua assembly compilato che vi dirà che costruiscono la configurazione dell'applicazione è stato costruito usando.

+0

curioso ... non Visual Studio già aggiungi AssemblyConfiguration quindi fai una build? – cecilphillip

+0

Non ho dovuto aggiungere le linee AssemblyConfiguration manuali per far funzionare questo. AssemblyInfo.cs usa '[assembly: AssemblyConfiguration (" ")]' Tuttavia, dovevo spostare le istruzioni 'AssemblyName' in gruppi di proprietà esistenti con condizioni piuttosto che inserire le condizioni direttamente su AssemblyName. –

+0

@DeniseSkidmore: Non è chiaro dalla mia risposta originale, ma quelle sono due alternative per ottenere lo stesso risultato. Personalmente, preferisco l'apporach in solo codice. – adrianbanks

-1

Sono sicuro che ci sia, tuttavia nella mia esperienza avere diversi nomi di file per le configurazioni di debug/release è una cattiva idea in quanto può causare tutti i tipi di problemi (molto simile al problema che VS ha quando tenta di eseguire il rinominato app)

Perché non semplicemente indicare se la sua debug/rilascio in Assemblea attributi (ad esempio nei commenti)

10

Come adrianbanks menzionati, è possibile modificare il file csproj a mano per raggiungere questo obiettivo.

Vorrei, tuttavia Consiglio la forma più semplice di:

<AssemblyName>MyApp_$(Configuration).exe</AssemblyName> 

Se mai modificare le proprietà di questo progetto tuttavia, questo cambiamento sarà molto probabilmente perso. È qualcosa che dovrai mantenere manualmente, poiché non sarà una configurazione supportata.

Per modificare manualmente la definizione del progetto, fare clic con il pulsante destro del mouse sul progetto in Visual Studio e selezionare "Scarica", quindi fare clic con il pulsante destro del mouse sul progetto scaricato e selezionare "Modifica" per aprire la definizione XML.

+1

Questo è il problema con tutte le possibili soluzioni. Visual Studio non ti consente di modificare il file di progetto per includere tutte le funzionalità di MSBuild. Qualsiasi modifica apportata deve essere gestita all'esterno di Visual Studio. Almeno con questa modifica puoi vedere il suo effetto in Visual Studio. – adrianbanks

Problemi correlati