He leído muchas de las respuestas y de NuGet (y de Internet en general, la verdad), pero me parece que no puede superar el problema que estoy teniendo con el paquete de NuGet de restauración en Visual Studio 2015. Tengo los siguientes escenarios.

Solución De Una Estructura

–Proyecto De Un

Si puedo abrir y construir Una Solución que yo veo el cuadro de diálogo que muestra el paquete de nuget progreso de la restauración y la solución se genera correctamente.

De La Solución B De La Estructura De

–Proyecto De Un

–Proyecto B

Sin embargo, suponiendo que nunca he construido Una Solución (es decir, fresca tire de TFS), si puedo abrir y construir la Solución B I véase el cuadro de diálogo que muestra el paquete de nuget progreso de la restauración, pero la compilación falla porque Un Proyecto no se puede crear.

Lo que parece estar sucediendo es que NuGet es la restauración de los paquetes para el Proyecto B, pero no para Un Proyecto así, el error en la construcción. Hasta el punto, si miro las referencias para el Proyecto B todos los NuGet referencias han resuelto, pero las referencias para el Proyecto todavía está roto.

Un par de puntos:

  • He desactivado el control de la fuente de la integración de NuGet, así que no estoy comprobando en la carpeta de Paquetes.
  • Cada proyecto tiene sus propios paquetes.archivo de configuración de
  • El orden de generación de la Solución B es el Proyecto de Un Proyecto B

Pensamientos, sería muy apreciado.

  • Se puede mostrar el texto pertinente de su .csproj archivos y sus paquetes.los archivos de configuración?
  • Ya, vamos a tener el mismo problema es casi como si el proyecto.json archivos están confundidos. Lo hemos intentado todo, añadiendo en la capa de la solución, añadiendo en el proyecto sólo de la capa. Parece que tan pronto como uno de los proyectos está involucrada en más de una solución Nuget va de mal en peor. De hecho, se le dirá las cosas que ya está instalado, incluso cuando la sección de referencias muestra claramente un indicador de color Amarillo. Nuget se ha convertido en un desastre en los últimos 6 meses… Sobre todo lo que puedes hacer, es volver a instalar cuando se tiene que hacer es, simplemente haga clic en Manage Nuget desinstalar, y luego ir en línea para encontrar el paquete y volver a instalar.
  • He tomado tu respuesta de tu pregunta de las preguntas no debe contener respuestas. He añadido un wiki respuesta con los detalles. Si desea agregar la respuesta de usted por favor hágamelo saber y voy a eliminar la wiki]
InformationsquelleAutor dparsons | 2016-06-29

3 Comentarios

  1. 5

    Por defecto, NuGet crea la solución del packages carpeta en la raíz de la solución, y cada una de las referencias del proyecto de su paquete de Dll para que «local» en la carpeta de paquetes. En tu ejemplo, si abre el .csproj archivo para el Proyecto, es probable que vea que la referencia de la ruta de acceso es algo así como ..\packages\[package name]\[etc].

    Así que cuando usted hacer una nueva extracción de TFS y construir la solución B, Un Proyecto no puede encontrar sus archivos Dll porque c:\workspace\Solution A\packages todavía no existe (o cualquiera que sea la ruta de acceso absoluta de su equipo).

    Para corregir este problema, utilice un paquete carpeta compartida, creado en c:\workspace\packages. Para hacer esto, usted tiene que añadir un nuevo nodo a la NuGet.config en cada solución (ver https://docs.nuget.org/consume/nuget-config-file para más detalles, también estoy asumiendo que usted tiene un NuGet carpeta en c:\workspace\Solution A\.nuget):

    <config>
      <add key="repositorypath" value="..\..\packages" />
    </config>

    He utilizado una ruta de acceso relativa de aquí, pero usted puede utilizar una ruta de acceso absoluta así, y que la documentación dice que usted puede utilizar %HOME% así.

    Ello, a continuación, reinicie Visual Studio. La próxima vez que abra el gestor de paquetes, se debe preguntar si desea restaurar los paquetes faltantes, y asumiendo que usted haga clic en sí, se pondrán en la nueva ubicación. El último paso es editar el .csproj archivo y cambiar todas las instancias de ..\packages a ..\..\packages (o puede desinstalar y volver a instalar el paquete, pero me parece que la edición de el .csproj mucho más rápido).

    • Gracias! Esto ha corregido mi problema cuando se tira de la solución a nivel local, pero ahora, cuando me saque de una generación en el servidor de compilación única Solución a los paquetes son restaurados, y la Solución B se produce un error. Si me registro en el servidor de generación y abierto de la Solución B en Visual Studio y haga una generación manualmente los paquetes de restauración de multa y la compilación se realiza correctamente. El orden de generación en mi definición de compilación es la Solución -> Solución B. ¿Alguna idea?
    • El desprecio. Yo era capaz de resolver el problema y actualizado mi pregunta original con la solución total.
  2. 2

    Para restaurar los paquetes de nuget hacer los siguientes pasos:

    • Cambio de marco de destino en las propiedades del proyecto
    • Limpieza del proyecto
    • Anterior marco de destino
    • Del proyecto de reconstrucción

    Espero, que será de ayuda.

    • No no Su trabajo 🙁
    • En mi caso funciona. Tengo la esperanza de que van a eliminar este problema en VS2017.
  3. 0

    Tomado de OPs pregunta

    howcheng la respuesta es en general correcta, con algunas salvedades. Después de la implementación de los cambios howcheng sugerido, yo era capaz de construir todos mis soluciones localmente usando un centro de ‘paquetes’ carpetas que todos los proyectos de mirar, independientemente de la solución. El problema que me encontré fue que cuando me registré estos cambios en TFS, mi CI construir lanzó y falló!

    Mi CI Definición de Compilación se basa Solución a y Solución B como parte de la XAML predeterminado de la plantilla de proceso, no una .proj archivo. Los errores que estaba viendo parecía indicar que la Solución fue la restauración de sus paquetes, pero la Solución B no fue. Si me he registrado en el servidor de generación y abrió la Solución B en el VS de 2015 todo funcionaba bien; después de Googlear un par de horas me encontré con este artículo que terminó llevándome a mi respuesta.

    Estoy desarrollando en Visual Studio 2015, pero estoy utilizando TFS 2013 para el control de código fuente y construye. A pesar del hecho de que tengo Visual Studio 2015 instalado en el servidor de compilación, MSBuild todavía hace referencia a la versión de NuGet que se entregan con TFS 2013 y NO con la versión incluida con VS 2015. Una vez me encontré nuget update -self de la TFS directorio de Herramientas de mi compilación funcionaba correctamente.

Dejar respuesta

Please enter your comment!
Please enter your name here