2012-01-08 12 views
5

Estoy intentando hacer compilaciones de Release y Debug en .Net v4.0, donde tengo un archivo de proyecto MSBuild en lugar de un archivo de solución. Quiero utilizar el mismo archivo de proyecto de compilación, pero simplemente anulo la propiedad de Configuración cambiando entre "Depurar" y "Liberar".¿Cómo anular una propiedad de configuración?

Cuando ejecuto la siguiente manera

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj 
/target:rebuild "/property:Configuration=Debug" /verbosity:Diagnostic 

me sale el siguiente error

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): 
error : The OutputPath property is not set for project 
'buildinv.proj'. Please check to make sure that you have specified a 
valid combination of Configuration and Platform for this project. 
Configuration='Debug' Platform=''. 

puedo ver que el error que se está produciendo en _CheckForInvalidConfigurationAndPlatform.

Si paso una propiedad OutputPath va a trabajar embargo

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj 
/target:rebuild "/property:Configuration=Debug" "/property:OutputPath=." 

¿Es esto un error conocido? Cuando deba anular la propiedad de Configuración me obligarán a anular la propiedad OutputPath aunque no lo desee.

Gracias de antemano.

+0

se las arregló para encontrar una forma de evitar esto? Estoy sentado con el mismo problema, cuando mi solución llama a 19 archivos de proyecto, y todos predeterminan Debug anycpu, aunque lo estoy configurando para liberarlo en la solución –

Respuesta

4

En mis proyectos, la propiedad OutputPath se define en los grupos de propiedades especificados para cada plataforma de configuración &. Si no configura la Plataforma correcta, la propiedad OutputPath no se establece y su compilación fallará.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <OutputPath>bin\Debug\</OutputPath> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <OutputPath>bin\Release\</OutputPath> 
</PropertyGroup> 

añadir una propiedad de la plataforma en su línea de comandos:

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj /target:rebuild "/property:Configuration=Debug;Platform=AnyCPU" /verbosity:Diagnostic 
+0

Ya lo intenté pero aún recibo el mismo error. Al no pasar la configuración o la plataforma, creo que se restablece por defecto a Debug y AnyCPU respectivamente para los proyectos creados con VS – pmcgrath

+0

Está usando MSBuild desde la línea de comandos. Él no está modificando los archivos del proyecto en un editor de texto. – jww

1

Añadir una de las siguientes acciones para su archivo de proyecto. El error significa La variable de entorno OutputPath no obtiene su valor. Al eliminar "Condición =" desde PropertyGroup, OutputPath siempre se establecerá para cualquier plataforma o configuración, de manera predeterminada.

<PropertyGroup> 
    <OutputPath>bin\Debug\</OutputPath> 
</PropertyGroup> 

<PropertyGroup> 
    <OutputPath>$(DefaultOutputDirectory)</OutputPath> 
</PropertyGroup> 
2

Si no desea modificar el archivo de proyecto, también puede simplemente especificar el OutputPath para la construcción en su comando:

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj /target:rebuild "/property:Configuration=Debug;OutputPath=C:\MyOutputPath" /verbosity:Diagnostic 
Cuestiones relacionadas