2012-07-09 12 views
9

Estoy usando Visual Studio 2012 RC para trabajar con mi solución C#. Todas mis configuraciones específicas de configuración se almacenan en un solo archivo .props que luego incluye todos mis archivos .csproj.Visual Studio sigue agregando propiedades a mi csproj. ¿Por qué?

embargo VS insiste en poner este derecho frente a la incluyen:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'"> 
    <IntermediateOutputPath>C:\Users\xyz\AppData\Local\Temp\vs855E.tmp\Debug\</IntermediateOutputPath> 
</PropertyGroup> 
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'"> 
    <IntermediateOutputPath>C:\Users\xyz\AppData\Local\Temp\vs855E.tmp\Release\</IntermediateOutputPath> 
</PropertyGroup> 

<Import Project="$(MSBuildProjectDirectory)\..\Common.props" /> 

¿Por qué?

FYI, mi archivo común se parece a esto: http://pastebin.com/Uued1XY0

+1

La respuesta simple es que Microsoft nunca considera que va a hacer tal personalización de archivos csproj. A veces es posible que pueda personalizar un poco los archivos del proyecto (por suerte), pero la mayoría de las veces simplemente se molesta. –

Respuesta

0

Así se puede reemplazar esos ajustes, si es necesario. Si su importación llegó antes, las propiedades de Visual Studio tendrían prioridad. En MSBuild, la última definición gana y se usa. Ésto es una cosa buena. ¿Está causando errores? ¿O simplemente no te gusta?

+0

No me gusta, porque estas rutas temporales cambian cada vez que recargo el proyecto. Muy molesto ya que el control de la versión siempre ha habido cambios en todos los proyectos. –

0

Usted ha especificado el en su proyecto. El archivo de propiedad tendrá el BaseIntermediateOutputPath. Si no especifica ningún valor, se derivará de su Base.

La ruta de salida intermedia completa derivada de BaseIntermediateOutputPath, si no se especifica ninguna ruta. Por ejemplo, \ obj \ debug. Si se invalida esta propiedad, la configuración de BaseIntermediateOutputPath no tiene ningún efecto.

Consulte: http://msdn.microsoft.com/en-us/library/bb629394.aspx

5

Aquellos de IntermediateOutputPath pueden insertarse cuando MSBuild se da un mal camino.

En nuestro caso, tuvimos una barra adicional innecesaria después de SolutionDir para las carpetas de salida.

Lo que no estaba trabajando para nosotros (nótese la barra adicional):

<OutputPath>$(SolutionDir)\out\bin\</OutputPath> 
<IntermediateOutputPath>$(SolutionDir)\out\obj\</IntermediateOutputPath> 

¿Qué hizo el trabajo:

<OutputPath>$(SolutionDir)out\bin</OutputPath> 
<IntermediateOutputPath>$(SolutionDir)out\obj</IntermediateOutputPath> 

Para ayudar a solucionar su caso particular, intente encender salida de diagnóstico y MSBuild iniciar sesión en Herramientas-> Opciones-> Proyectos y soluciones-> Compilar y ejecutar-> Verbosidad de salida de compilación del proyecto MSBuild. Luego, busque la carpeta generada (por ejemplo, "Temp").

El uso del archivo común proj/props/targets es una gran idea, pero requiere un poco de lucha contra Visual Studio.

+0

Los pasos de solución de problemas no funcionan para mí (Visual Studio 2013). Los archivos de proyecto son modificados por VS durante la carga en lugar de cuando se construye, por lo que la creación de diagnósticos no ayuda. – DannyMeister

Cuestiones relacionadas