Indirectamente allí. Si se establece una variable de entorno con una bandera y ejecutar VS:
set TacoBuild=true
devenv.eve bigproject.sln
o lanzar MSBuild desde la línea de comandos:
msbuild /p:TacoBuild=true
En sus archivos Csproj es necesario agregar un PropertyGroup:
<PropertyGroup Condition="'$(TacoBuild)'=='true'">
<DefineConstants>$(DefineConstants);TacoBuild</DefineConstants>
</PropertyGroup>
En su código se necesita un preprocesador def:
#if TacoBuild
const int myConst = 42;
#endif
Una alternativa VS solamente es definir una definición de preprocesador en la configuración de compilación para una nueva configuración de proyecto y usar esa configuración en su compilación.
Una solución que no es MSBuild consiste en crear un archivo constants.cs y escribir una herramienta de configuración personalizada que actualice el archivo cs. Ojalá hubiera una solución mejor, pero no he encontrado ninguna.
Ese es un enfoque inteligente. Tendré que agregar esa a mi caja de herramientas. –
Tenga en cuenta que, en mis intentos (con Visual Studio 2012 Express) para establecer DefineConstants de esta manera para varios proyectos, pude hacer que se compilara correctamente, pero Visual Studio no conocía las definiciones y, por lo tanto, la coloración de sintaxis era incorrecta para # if/#endif bloques de código. – yoyo
Esta forma de hacer la definición no parece funcionar para mí, pero la solución de Tim debajo de la suya parece funcionar. ¿Alguna idea de por qué? – gnychis