2011-07-28 20 views
5

Necesito construir un proyecto de C# como WinExe o Library dependiendo de la configuración del proyecto.Cambiando csproj OutputType basado en la configuración del proyecto

He intentado ambos métodos sin suerte:

1) En el PropertyGroup generales:

<OutputType Condition=" '$(Configuration)' == 'Release' ">WinExe</OutputType> <OutputType Condition=" '$(Configuration)' == 'Debug' ">Library</OutputType>

2) En un PropertyGroup condicional:

<PropertyGroup Condition=" '$(Configuration)' == 'Release' "> <OutputType>WinExe</OutputType> </PropertyGroup>

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <OutputType>Library</OutputType> </PropertyGroup>

Ninguno de estos métodos funciona y OutputType siempre es WinExe. Lo curioso es que si cambio todas las instancias de WinExe a Library, entonces siempre será Library. Esto me hace pensar que los está leyendo con éxito, pero en un orden extraño o que WinExe tiene prioridad sobre la Biblioteca.

¿Alguna idea?

+1

Siempre que su declaración OutputType aparezca después de las demás, sobrescribiéndola, lo que tiene arriba debería funcionar. Pero también debe ser anterior a cualquier instrucción de importación que contenga propiedades adicionales que se basen en el valor de $ (OutputType) –

+0

. ¿Desea que esto funcione en VS o la línea de comandos solo está OK? –

Respuesta

7

En la parte superior de sus .csproj tendrá dos secciones que se ven un poco como esta:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <OutputType>Library</OutputType> 
    <!-- Other properties go here --> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 
    <OutputType>Exe</OutputType> 
    <!-- Other properties go here --> 
</PropertyGroup> 

añadir su OutputType elementos para estas dos secciones condicionales PropertyGroup y asegúrese de que quite todos los demás OutputType elementos: acabo de probarlo y hace exactamente lo que está pidiendo.

Sí, esto es muy similar a lo que ya ha hecho, pero sé que el método anterior funciona porque lo he intentado, mi única conjetura es que algo en otro lugar de su compilación está estropeando las cosas .

+0

Ah, lo que hicimos parece funcionar bien. Visual Studio simplemente informa incorrectamente, pero de hecho construye el tipo de salida correcto. –

Cuestiones relacionadas