2012-04-04 22 views
7

Cuando la construcción de un proyecto web en un equipo que no tiene instalado el SDK, se obtiene la siguiente advertencia:¿Cómo deshacerse de advertencia msbuild MSB3644

advertencia MSB3644: Los conjuntos de referencia para el marco de ". NETFramework, Version = v4.0 "no se encontraron. Para resolver esto, instale SDK o Targeting Pack para esta versión de framework o redirija su aplicación a una versión del framework para el cual tiene instalado el SDK o Targeting Pack. Tenga en cuenta que los ensamblados se resolverán desde el caché de ensamblaje global (GAC) y se usarán en lugar de los ensamblajes de referencia . Por lo tanto, es posible que su ensamblaje no sea correctamente para el marco que desea.

Obviamente, una forma de deshacerse de la advertencia es instalar el SDK. Sin embargo, en este caso, simplemente estoy buscando suprimir esta advertencia (que es principalmente inofensiva) desde la salida de compilación sin cambiar el estado de la máquina de ninguna otra manera.

Intenté pasar/p: NoWarn = 3644 a msbuild (basado en otras publicaciones como how can i suppress all compiler and code analysis warnings from msbuild at the command line?), pero eso no tuvo ningún efecto.

+0

Esta publicación SO aborda el mismo problema, aunque eso no es obvio por el título: http://stackoverflow.com/questions/17220615/where-can-i-download-the-net-4-5- multitargeting-pack-for-my-build-server –

Respuesta

3

NoWarn se aplica a las advertencias de compilación lanzadas por las tareas Csc y Vbc.

MSB * las advertencias son advertencias básicas de MSBuild. Para suprimir la advertencia MSB3644 pasar una explícita TargetFrameworkMoniker:

msbuild your.csproj /t:Rebuild /p:TargetFrameworkMoniker=".NETFramework,Version=v4.0" 

La lista de posibles entradas se puede encontrar here.

v1.1.4322 
v2.0.50727 
Client 
v4.0 
v4.0.30319 
.NET Framework, Version=v4.0, Profile=Client 
.NET Framework, Version=v4.0 
.NET Framework, Version=v4.0.1, Profile=Client 
.NET Framework, Version=v4.0.1 
.NET Framework, Version=v4.0.2, Profile=Client 
.NET Framework, Version=v4.0.2 
.NET Framework, Version=v4.0.3, Profile=Client 
.NET Framework, Version=v4.0.3 
.NET Framework, Version=v4.5 

En MSBuild 4.5 hay una nueva bandera - IgnoreVersionForFrameworkReferences que podría venir a mano en estas advertencias.

+0

Gracias por su respuesta. Lo intenté y, lamentablemente, no parece funcionar. Sigo recibiendo la misma advertencia después de agregar /p:TargetFrameworkMoniker=".NETFramework,Version=v4.0 "a la línea de comandos de msbuild. :( –

+0

¿Intentó pasar otras versiones? O tal vez necesita referencias a 'Profile = Client' – KMoraz

+0

'Client' por sí mismo parece no válido (" FrameworkName no puede tener menos de dos componentes o más de tres componentes "). Mi suposición es que este indicador le dice a msbuild qué bibliotecas de destino usar asumiendo que su SDK está instalado. Sin SDK en la máquina, puede ser que no haga mucho. –

Cuestiones relacionadas