¿Alguien sabe cómo obtener la configuración de compilación actual $ (Configuración) en el código C#?Configuración de compilación en el código C#
Respuesta
No se puede, no realmente. Lo que puede hacer es definir algunos "Símbolos de compilación condicional", si mira la página "Compilar" de su configuración de proyecto, puede establecerlos allí, para que pueda escribir las sentencias #if para probarlos.
Se inyecta automáticamente un símbolo de DEPURTO (por defecto, esto se puede desactivar) para compilaciones de depuración.
para que pueda escribir código como este
#if DEBUG
RunMyDEBUGRoutine();
#else
RunMyRELEASERoutine();
#endif
Sin embargo, no haga esto a menos que haya una buena razón. Una aplicación que funciona con un comportamiento diferente entre versiones de depuración y liberación no es buena para nadie.
No creo que pueda inyectar eso en tiempo de compilación en el ensamblado, pero una forma de lograrlo sería usar MSBuild y agregarlo al archivo de configuración de la aplicación.
Ver esta entrada del blog acerca de cómo hacer los archivos de configuración multi-entorno usando MSBuild - http://adeneys.wordpress.com/2009/04/17/multi-environment-config/
Alternativamente se podría escribir una tarea de MSBuild que editar un archivo compilado determinado (el C# o archivo VB) y tienen que correr en la tarea BeforeBuild
. Sería bastante complicado ya que necesitaría averiguar dónde inyectarlo en el archivo, pero si tuviera algún tipo de configuración de tokenización, debería poder hacerlo. ¡También dudo que sea bonito!
Si descarga su proyecto (en el menú contextual) y lo agrega justo antes de la etiqueta </Project>
guardará un archivo que tiene su configuración en él. Luego puede leer eso nuevamente para usarlo en su código.
<Target Name="BeforeBuild">
<WriteLinesToFile File="$(OutputPath)\env.config"
Lines="$(Configuration)" Overwrite="true">
</WriteLinesToFile>
</Target>
He usado la solución de Vaccano. Tengo que cambiar dinámicamente algunos valores de configuración en cada configuración de compilación, no solo depurar o liberar, y esta solución funciona muy bien para mí. Gracias. – MsBugKiller
Símbolos de compilación condicional se pueden utilizar para lograr esto. Puede definir símbolos personalizados en el panel Propiedades> Crear configuración para cada proyecto, y usar las directivas #if para probarlos en el código.
Ejemplo que muestra cómo definir el símbolo UNOEURO y cómo usarlo en el código.
bool isUnoeuro = false;
#if UNOEURO
isUnoeuro = true;
#endif
- 1. Compilación de código OpenMP con el código C
- 2. Configuración de compilación SBT
- 3. Configuración de configuración de análisis de código en TFSBuild.proj
- 4. ¿Cómo funciona el código de compilación LINQPad?
- 5. Configuración de Eclipse CDT para compilación remota
- 6. Configuración de ColumnDefinitions en el código
- 7. Cómo inyectar código C# en tiempo de compilación?
- 8. Configuración de compilación automática para Stylus
- 9. Cómo imprimir un mensaje personalizado en el código para el registro de compilación de Teamcity C#
- 10. log4net configuración de código puro con filtro en C#
- 11. formateando el código en el tiempo de compilación
- 12. Compila el código para la compilación de versión en D
- 13. Configuración RelativeLayout en el código java
- 14. iOS: ¿Cuándo usar qué identidad de firma de código en la configuración de compilación?
- 15. compilación C++ aplicación en C#
- 16. Compilación de código de forma dinámica con C#
- 17. Compilación del código Erlang en Windows
- 18. Integrar generación de código con eclipse C++ compilación
- 19. XCode configuración de compilación para el rendimiento - Aplicaciones de iPhone
- 20. Eclipse por configuración de compilación de proyecto
- 21. Variables de configuración de compilación del listado
- 22. Diferente código/configuración en la versión y Depuración (Obj-C)
- 23. Cómo eliminar la configuración en Configuraciones de compilación en un nivel bajo en el Código X 0
- 24. Configuración de configuración faltante en el administrador de configuración
- 25. Visual C++: ¿Cómo incrustar y mostrar un mensaje de tiempo de compilación en el código?
- 26. Configuración de compilación predeterminada Eclipse CDT
- 27. C++: Obtener el código de error c3859 durante la compilación en una mezcla de C++/CLI y C++
- 28. Compilación de código C desde el símbolo del sistema en Windows?
- 29. Configuración de las propiedades de margen en el código
- 30. Cambios dinámicos en la configuración de compilación de apio
Puede ayudar en el desarrollo de los servicios de Windows (no es necesario instalar/fácil de depuración) – Scoregraphic
@Scoregraphic: Sin embargo, con un comportamiento muy diferente (servicio vs. aplicación de línea de comandos) !!! –
¿Por qué la expresión condicional no encuentra mi configuración personalizada? Tengo un código como este: #if WCFDebug/* mi código */#endif - pero simplemente no lo encuentra. He agregado la configuración dentro de la configuración. – FrenkyB