È necessario definire un simbolo di compilazione condizionale in un progetto di libreria di classi. Questo non dovrebbe essere controllato nel controllo del codice sorgente (non si applica a tutti gli sviluppatori), quindi dovrebbe essere definito in un posto diverso da .csproj o nel file app.config. Come può essere realizzato?Come definire i simboli di compilazione condizionale in un file separato (non .csproj o app.config)
Come definire i simboli di compilazione condizionale in un file separato (non .csproj o app.config)
risposta
Quello che vorrei fare è definire i vari tipi di build nel Configuration Manager (Build-> Configuration Manager) e configurare ciascuna delle costanti richieste su ciascuno dei tipi di build. È quindi possibile fare in modo che ciascun membro del team selezioni semplicemente il tipo di build che desidera eseguire e utilizzerà automaticamente le costanti appropriate. (Penso che il tipo di build utilizzato più di recente sia archiviato nel file .suo, che è "opzioni utente della soluzione" e normalmente non verrebbe eseguito il check-in sul controllo del codice sorgente, quindi questo verrà mantenuto in modo specifico per ciascun utente).
È possibile definire le costanti di pre-processore sulla riga di comando del compilatore C# utilizzando /define. interruttore. ma avrai il problema di come chiamare questo. Qualsiasi modifica apportata alle proprietà del progetto per utilizzarla verrà salvata nel file csproj. Dovresti invece eseguire tutto il tuo edificio dalla riga di comando che sono sicuro che non vorrai. Puoi anche definirli negli script di msbuild, ma avresti lo stesso problema.
Questa è una vecchia domanda, ma su un sospetto ho stancato qualcosa e ha funzionato. Risulta che è possibile definire i simboli condizionali nel file csproj.user
. Presumo che la stessa cosa funzionerebbe per altre lingue, ma non ho provato.
Quindi aggiungere qualcosa come il seguente a csproj.user.
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DefineConstants>MySpecialConstant, TestBlahBlah</DefineConstants>
</PropertyGroup>
Io in realtà come soluzione @SimonPStevens meglio perché abbraccia TFS, invece di nascondersi. A volte, tuttavia, questo è solo più facile ...
- 1. Simboli di compilazione condizionale non definiti
- 2. Come passare i simboli di compilazione condizionale (DefineConstants) a msbuild
- 3. Spostare una sezione di app.config in un file separato
- 4. Uso dei simboli di compilazione condizionale in vista MVC
- 5. Come definire le costanti in un file separato in Perl?
- 6. Costruisci l'intera soluzione ma aggiungi i simboli globali di compilazione condizionale per un solo progetto
- 7. configurazioni Costruire in file di csproj
- 8. Come definire un altro ambito di compilazione in SBT?
- 9. Come definire TraceListener personalizzato in app.config
- 10. Come impostare una variabile di compilazione condizionale?
- 11. Compilazione condizionale in Go
- 12. Come scaricare i simboli in un file .a
- 13. Compilazione condizionale in Scala
- 14. Log4Net in un file di configurazione separato
- 15. Elementi PropertyGroup riutilizzabili in un file csproj
- 16. errore di compilazione: i simboli non definiti: "_main", fa riferimento a: iniziare a crt1.10.5.o
- 17. La compilazione condizionale non funziona
- 18. È possibile utilizzare simboli di compilazione condizionale in eventi di generazione VS?
- 19. C'è un modo semplice in C# per avere i simboli di compilazione condizionale basati sulla versione del sistema operativo
- 20. Compilazione Java condizionale
- 21. Come visualizzare i simboli nei file oggetto?
- 22. Come scaricare una toolchain per la compilazione incrociata in cmake da un file separato?
- 23. Compilazione condizionale XAML
- 24. Spostare gli elementi di compilazione in msbuild in un file separato?
- 25. come modificare CSPROJ
- 26. Come dichiarare e importare interfacce dattiloscritto in un file separato
- 27. .csproj File - Aggiunta/eliminazione programmatica di file
- 28. utilizzando AssemblySearchPaths nei file csproj
- 29. Compilazione condizionale di metodi generici
- 30. La lettura di un file * Csproj in C#