visual studio solucion restaurar referencia que proyecto por para paquetes ningun los instalar hace faltan este equipo elemento declarado admitido administrar nuget nuget-package

studio - restaurar paquetes nuget console



Los archivos del paquete NuGet no se copian en el contenido del proyecto durante la compilaciĆ³n (4)

En la actualización 1 de Visual Studio 2015, ahora admiten contentFiles . La advertencia con esto es que solo funciona en proyectos que usan project.json.

En referencia al problema que tiene, hay una buena publicación en el blog que explica por qué ve este comportamiento: NuGet Package Restore Common Misconceptions .

Estoy creando una aplicación web MVC4 con VS2012 profesional con NuGet Package Manager versión 2.2.31210. Tengo varios proyectos en mi solución, todos compartiendo varios paquetes que instalé usando NuGet. Uno de mis proyectos es una aplicación web MVC4 donde estoy usando paquetes como bootstrap, jquery UI, etc., todos instalados con NuGet.

Cuando clono una copia nueva de mi solución completa desde mi repositorio y compilo mi proyecto MVC4, la función de restauración de paquetes parece estar funcionando: crea el directorio de paquetes bajo la dirección de la solución y llena todas las versiones de los paquetes que espero ver. Sin embargo, los archivos de contenido no se copian en los lugares apropiados en el directorio de la aplicación MVC. Lo extraño es que sí crea directorios para el contenido, pero no copia los archivos de contenido por sí mismos.

Por ejemplo, estoy usando el paquete de inicio de Twitter que aparece en los paquetes / Twitter.Bootstrap.2.2.2. En el proyecto MVC, se crea un directorio llamado bootstrap (que contiene los directorios css, img y js) en el directorio de contenido. Pero, ¡no se copian archivos css o js en esos directorios!

¿Alguien tiene una pista sobre qué conjuro mágico debo pronunciar para que la compilación copie estos archivos de contenido del directorio de paquetes de NuGet?


Este es un problema muy común que todos estamos teniendo. He creado una tarea de NugetContentRestoreTask de MSBuild que hará este truco por ti. Ejecute el siguiente comando en la Consola del administrador de paquetes:

Instalar Nuget Content Restore MSBuild Targets

PM> Install-Package MSBuild.NugetContentRestore

Lo único que queda es llamarlo desde tu BeforeBuild Target con algo como esto:

Objetivos del archivo de proyecto

<Target Name="BeforeBuild"> <NugetContentRestoreTask SolutionDir="$(SolutionDir)" ProjectDir="$(ProjectDir)" /> </Target>

Puede echar un vistazo al repositorio de origen y encontrarlo en nuget.org

Carpetas de contenido adicional

Este nuget solo incluye las carpetas de scripts , images , fonts y content predeterminados , no es un directorio recursivo incluido. Para subcarpetas de contenido adicionales, debe asignar la propiedad AdditionalFolders .

<Target Name="BeforeBuild"> <NugetContentRestoreTask SolutionDir="$(SolutionDir)" ProjectDir="$(ProjectDir)" AdditionalFolders="less;sass;common" /> </Target>


Tampoco me gusta tener los archivos de JavaScript de terceros bajo el control de código fuente. Por eso he seguido el consejo de Jeff Handley en http://nuget.codeplex.com/workitem/2094 para crear una solución por mi cuenta. No seguí el camino del ejecutable, sino que creé un paquete de nivel de solución nuget que hace el truco.

http://www.nuget.org/packages/Baseclass.Contrib.Nuget.GitIgnoreContent/

Está vinculado a git, ya que actualiza automáticamente el archivo .gitignore.

Breve descripción:

Ignorar los archivos de contenido nuget en git:

  • Genere entradas en el archivo .gitignore para excluir archivos de contenido nuget del repositorio de origen

  • Restaure los archivos de contenido de nuget antes de construirlos (automáticamente en VS y manualmente con un script de powershell)

He escrito una entrada de blog que describe cómo usarlo. http://www.baseclass.ch/blog/Lists/Beitraege/Post.aspx?ID=9&mobile=0


He encontrado una solución, pero es feo. Al ejecutar el siguiente comando en la consola de NuGet Package Manager: Update-Package -Reinstall todos los archivos se copian en sus lugares correspondientes dentro de los directorios de Content y Scripts proyecto Mvc.

Desafortunadamente, esto es arriesgado porque es probable que termine con las versiones incorrectas de ciertos paquetes. Por ejemplo, en mi caso, una vez que el comando termina de ejecutarse (lo que lleva bastante tiempo por cierto), termino con la versión 1.4.4 de jQuery. Esto es muy antiguo, y asumo que debe ser una dependencia explícita de algún otro paquete que se esté actualizando. Por lo tanto, parece que el orden en el que NuGet actualiza los paquetes es significativo (no parece analizar todo el árbol de dependencias para todos los paquetes y escoger solo las últimas versiones de la unión de todas las dependencias, lo que parece que sería el comportamiento preferido). Más bien, a medida que se ejecuta el comando, veo que reemplaza el paquete jQuery varias veces con diferentes versiones a medida que avanza en todos los paquetes y sus dependencias, solo para terminar con una versión muy antigua.

Un enfoque similar es ejecutar el comando Update-Package -Reinstall explícitamente para cada paquete que está causando mi problema, pero esto es increíblemente tedioso y propenso a errores.

La función de restauración de paquetes de NuGet debería producir el mismo resultado que ejecutar manualmente el comando Install-Package o Update-Package -Reinstall para un paquete, pero no lo hace.