2011-05-03 9 views
27

Me estoy poniendo un montón de errores en mi servidor de compilación:.NET 4.0 conjuntos de referencia servidor de compilación advertencias MSB3644

C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common. objetivos (847,9): advertencia MSB3644: no se encontraron los ensamblados de referencia para el marco ".NETFramework, Version = v4.0". Para resolver este problema, instale el SDK o Targeting Pack para esta versión del marco o reorientar su aplicación a una versión del marco para el que tenga 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 ensamblados de referencia. Por lo tanto, es posible que su ensamblaje no esté correctamente orientado para el marco que pretende. [D: \ IDA \ mercurio \ AdisFeeds \ cache \ Adis.Feeds.Cache.ConsoleManager \ Adis.Feeds.Cache.ConsoleManager.csproj]

El problema es que ya he instalado las partes del .NET Windows SDK 7.1. ... Tuve especial cuidado en marcar la casilla junto a los ensamblajes de referencia .net 4.0.

¿Alguien tiene alguna sugerencia en cuanto a lo que va mal?

Para que conste que estoy usando Nant para ejecutar los scripts de construcción (ver 0.86) y nant.contrib (0.85) para la tarea msbuild nante.

Actualización Estaba corriendo por ese ángulo. Recopilé la solución usando msbuild con registro de diagnóstico en mi máquina de desarrollo y luego nuevamente en el servidor de compilación. Luego comparé los registros.

parece que la diferencia significativa no es la falta de cualquier referencia a la ruta de acceso \ Archivos de programa \ Asambleas Referencias. Específicamente en FrameworkPathOverride.

así que traté de añadir FrameworkPathOverride como un parámetro de línea de comandos para msbuild. Lamentablemente, esto solo me llevó al desafortunado descubrimiento de que los directorios de ensamblados de referencia solo parecen tener los archivos xml en ellos. Como en solo hay mscorlib.xml. Sin mscorlib.dll

¿Qué diablos está pasando?!?

+1

Bueno, ¿están presentes? C: \ Archivos de programa \ Conjuntos de referencia \ Microsoft \ Framework \ .NETFramework \ v4.0. Tenga cuidado con las molestias del sistema operativo de 64 bits, también tienen c: \ archivos de programa (x86) –

+0

Estaba corriendo por ese ángulo. Recopilé la solución usando msbuild con registro de diagnóstico en mi máquina de desarrollo y luego nuevamente en el servidor de compilación. Luego comparé los registros. – Jero

+0

posible duplicado de [.NET 4.0 problemas de compilación en el servidor de CI] (http://stackoverflow.com/questions/2730765/net-4-0-build-issues-on-ci-server) –

Respuesta

27

Ok he encontrado una solución que funciona. Necesita hacer dos cosas:

  1. Primero agregue FrameworkPathOverride como un parámetro de línea de comandos y lo dirija al directorio de ensamblados de referencias.

Algo así como

msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 
  1. La segunda cosa que hay que hacer es encontrar una versión completa del directorio de conjuntos de referencia. Desde la copia instalada por Windows SDK y la que instaló visual studio, simplemente copié la mía de mi máquina de desarrollo. Funciona bien.

Una nota final: la razón por la que esto podría haberme pasado en primer lugar es que nuestro servidor de compilación es un viejo y agradable servidor de Windows 2003. ¿Demasiado viejo para que la instalación de Windows SDK se enfrente?

+0

es posible que haya guardado el día ... –

+0

... sí lo hiciste! Gracias. tener una máquina Server 2008 R1 que no me permita instalar Win 8 SDK o Visual Studio 2012 –

+1

Tenía el mismo problema con .NET 4.5 Build ejecutándose en WS 2008 R2. ¡Seguí tus comentarios y trabajaste! Lo único que no necesitaba era agregar el parámetro de la línea de comandos. Entonces, crear la carpeta 4.5 con los ensamblados de referencia me funcionó. ¡Muchas gracias! – kzfabi

10

Esto parece un DUP de esta pregunta: .NET 4.0 build issues on CI server y en todo caso debe ser resuelto en la forma establecida allí.

Asegúrese de que el SDK de Windows 7 esté instalado (como mínimo) con el .NET Development "Intellisense and Reference Assemblies" y "Tools". Si dicen que ya están instalados, sin embargo, los ensamblados de referencia no existen en su disco, luego desinstálelos y vuelva a instalarlos. Confirmé la corrección en mi servidor de compilación.

+1

Usar el instalador web desde aquí http://www.microsoft. com/en-us/download/confirmation.aspx? id = 8279 para evitar la descarga del SDK completo. – Oliver

2

Para añadir a la respuesta de cixelsyd:

La configuración por defecto en el instalador de Windows v7.1 SDK es que "Intellisense y Referencia Asambleas" es 'semi-comprobado' - cambio que al comprobarse plenamente y las advertencias se han ido :-)

0

Después de días de fregar la web en busca de respuestas, en busca extensivamente a través del proyecto los archivos de configuración con los conjuntos de referencia mencionado, el consejo mencionado anteriormente para usar Windows 8.1 SDK t o volver a instalar una asamblea de referencia 4.5.1 que falta finalmente hizo el truco.

En mi caso, yo estaba tratando de 'Iniciar sin depurar' una nueva aplicación Web ASP.Net Core (Core .NET) creada para seguir el tutorial en: TODO https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html

Al utilizar el SDK, que yo no se aceptar para las asambleas de referencia. Esta fue la única forma en que encontré instalar 4.5.1 porque otros métodos fallarían debido al hecho de que ya tenía instaladas las versiones 4.5.2 y posteriores.

Felicitaciones a esta página por la respuesta que finalmente funcionó!

MSB3644 advertencia: Los conjuntos de referencia de marco " .NETFramework, versión = V4.5.1" 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.

1

Esto funciona para mí, correr en powershell (sin utilizar FrameworkPathOverride):

cp -r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 

Es porque 4.5 (o 4.5.1) es una gota en el reemplazo de 4.0

+1

incluso puede usar 'mklink' para crear un enlace sym en lugar de copiar – Ivan

Cuestiones relacionadas