instalar - msbuild versions
¿Cómo especifico la plataforma para MSBuild? (3)
Estoy tratando de usar MSBuild para construir una solución con una plataforma de destino específica (necesito ambos binarios, x86 y x64). Así es como lo intenté:
C:/WINDOWS/Microsoft.NET/Framework/v3.5>MsBuild SolutionPath/Solution.sln /t:Rebuild /p:Configuration=Release /p:Platform="x86"
Sin embargo, la construcción siempre falla si la plataforma es diferente de "Cualquier CPU". ¿Qué estoy haciendo mal?
Este es el tiempo que imprime MSBuild:
C: / WINDOWS / Microsoft.NET / Framework / v3.5> MsBuild SolutionPath / Solution.sln / t: Rebuild / p: Configuration = Versión / p: Platform = "x86" Microsoft (R) Build Engine Versión 3.5.30729.1 [ Microsoft .NET Framework, Versión 2.0.50727.3082] Copyright (C) Microsoft Corporation 2007. Todos los derechos reservados.
La compilación comenzó 1.7.2010 8:28:10. Proyecto "SolutionPath / Solution.sln" en el nodo 0 (Rebuild target t (s)). SolutionPath / Solution.sln: error MSB4126: la configuración de solución especificada "Release | x86" no es válida. Especifique una configuración de solución válida utilizando las propiedades de Configuración y Plataforma (p. Ej., MSBuild.exe Solution.sln / p: Configuration = Debug / p: Platform = "Any CPU") o deje los productos en blanco para usar la configuración de solución predeterminada. Hecho Proyecto de construcción "SolutionPath / Solution.sln" (Rebuild t arget (s)) - FAILED.
Construcción fallida.
"SolutionPath / Solution.sln" (Rebuild target) (1) -> (ValidateSolutionConfiguration target) -> SolutionPath / Solution.sln: error MSB4126: La configuración de solución "Release | x86" especificada no es válida. Especifique una configuración de solución válida utilizando las propiedades de Configuración y Plataforma (por ejemplo, MSBuild.ex e Solution.sln / p: Configuration = Debug / p: Platform = "Any CPU") o deje las propiedades en blanco para usar la configuración de solución predeterminada.
0 Warning(s) 1 Error(s)
Tiempo transcurrido 00: 00: 00.03
Si intento compilarlo para x86 / x64 con devenv, funciona perfectamente; sin embargo, estoy intentando configurar un servidor de compilación sin instalar todas las versiones necesarias de Visual Studio. Por cierto, si hay una herramienta gratuita mejor (que admita .NET framework 4), me encantaría saberlo.
En MSBuild o Teamcity usa la línea de comando
MSBuild yourproject.sln /property:Configuration=Release /property:Platform=x64
o use una forma más corta:
MSBuild yourproject.sln /p:Configuration=Release /p:Platform=x64
Sin embargo, necesita configurar la plataforma en su proyecto de todos modos, vea la respuesta de Julien Hoarau.
Si desea construir su solución para x86 y x64 , su solución debe estar configurada para ambas plataformas. En realidad, solo tienes una configuración Any CPU .
Cómo verificar la configuración disponible para un proyecto
Para verificar la configuración disponible para un proyecto determinado, abra el archivo del proyecto ( *.csproj
por ejemplo) y busque un PropertyGroup
con la Condition
correcta.
Si desea compilar en modo de Release
para x86
, debe tener algo como esto en su archivo de proyecto:
<PropertyGroup Condition=" ''$(Configuration)|$(Platform)'' == ''Release|x86'' ">
...
</PropertyGroup>
Cómo crear y editar la configuración en Visual Studio
Cómo crear y editar la configuración (en MSDN)
Si está tratando de hacer esto desde la línea de comando, es posible que se encuentre con un problema donde una variable de entorno de toda la máquina, "Plataforma", esté configurada para usted y trabaje en su contra. Puedo reproducir esto si utilizo la ventana del Comando VS2012 en lugar de una ventana Comando de Windows normal.
En el símbolo del sistema, escriba:
establecer la plataforma
En una ventana de Comando de VS2012, tengo un valor de preajuste ''X64''. Eso parece interferir con lo que sea que esté en mi archivo de solución.
En una ventana de Comando regular, el comando ''set'' da como resultado un mensaje de "variable no definida" ... lo cual es bueno.
Si el resultado de su comando ''set'' anterior no devuelve ningún valor de variable de entorno, debería estar listo.