2012-08-17 25 views
16

Quiero construir un proyecto c# (.csproj) desde la línea de comandos usando msbuild y quiero apuntar .Net2.0 en tiempo de ejecución.Sobrescribir el marco de destino desde la línea de comando

veo que el archivo XML proyecto tiene 2 tags de interés

<Project ToolsVersion="4.0" ... 

y

<TargetFrameworkVersion>v2.0</TargetFrameworkVersion> 

Me preguntaba si

  • Puede ToolsVersion código compatible con 4.0 productos de .NET2. 0 tiempo de ejecución?
  • ¿Puedo reemplazar la etiqueta de marco de destino en el archivo de proyecto a través de la línea de comandos (no lograr esto, el modificador de la línea /ToolsVersion mando?

Específicamente quiero conseguir esto a través de línea de comandos y no modificar el archivo de proyecto.

Actualmente estoy haciendo algo como esto

msbuild myproj.csproj /p:Configuration=Release 

Respuesta

15

necesita los argumentos de línea de comandos para msbuild para hacer que el trabajo:

msbuild.exe MyProj.proj /p:TargetFrameworkVersion=v2.0;Configuration=Release /tv:3.5 

por lo tanto, anulando el valor en el archivo proj así como en ToolsVersion.

Para saber qué versión de versión de msbuild se usa de manera predeterminada, inicie un símbolo del sistema de Visual Studio (que se encuentra en el menú Inicio> Microsoft Visual Studio 2010> Visual Studio Tools) y escriba msbuild. La primera línea de la salida se mantenga la BuidEngineversion:

Microsoft (R) Construir motor Versión 4.0.30319.1

Desde el doc MSDN:

MSBuild utiliza un conjunto de herramientas de tareas, objetivos y herramientas para compilar una aplicación . Normalmente, un conjunto de herramientas MSBuild incluye un archivo microsoft.common.tasks, un archivo microsoft.common.targets y compiladores , como csc.exe y vbc.exe. La mayoría de los conjuntos de herramientas se pueden utilizar para aplicaciones de compilación a más de una versión de .NET Framework y más de una plataforma de sistema

También puede comprobar el entorno vars para una versión del marco instalado: set F desde la línea de comandos de Visual Studio me da este resultado:

Framework35Version = v3.5
FrameworkDir = c: \ Windows \ Microsoft.NET \ Framework \
FrameworkDIR32 = C: \ WINDOWS \ Microsoft.NET \ Marco trabajo \
FrameworkVersion = v4.0.30319
FrameworkVersion32 = v4.0.30319

ToolSet Explanation
ToolSetVersion

+0

Si toolsversion se establece en 4,0 haría la carrera conjunto resultante en tiempo de ejecución v2.0 ?? –

+0

Sí lo hará, tv solo indica qué herramientas (objetivos/compiladores, etc.) msbuild usó para producir el ensamblado para el marco solicitado – rene

+0

Veo que tengo múltiples msbuild.exe uno cada uno en las carpetas v2.0, v3.0 y v4 .0 cuál es el mejor para usar –

Cuestiones relacionadas