Saltar al contenido

¿Cómo habilito la restauración del paquete NuGet en Visual Studio?

Solución:

Tomó demasiado tiempo, pero finalmente encontré este documento sobre la migración de soluciones integradas de MSBuild a la restauración automática de paquetes y pude resolver el problema utilizando los métodos descritos aquí.

  1. Eliminar el '.nuget' directorio de la solución junto con la solución
  2. Eliminar todas las referencias a nuget.targets de tu .csproj o .vbproj archivos. Aunque no se admite oficialmente, el documento se vincula a un script de PowerShell si tiene muchos proyectos que deben limpiarse. Edité el mío manualmente, por lo que no puedo dar ningún comentario sobre mi experiencia con él.

Cuando edite sus archivos a mano, esto es lo que buscará:

Archivo de solución (.sln)

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F4AEBB8B-A367-424E-8B14-F611C9667A85}"
ProjectSection(SolutionItems) = preProject
    .nugetNuGet.Config = .nugetNuGet.Config
    .nugetNuGet.exe = .nugetNuGet.exe
    .nugetNuGet.targets = .nugetNuGet.targets
EndProjectSection
EndProject

Archivo de proyecto (.csproj / .vbproj)

  <Import Project="$(SolutionDir).nugetNuGet.targets" Condition="Exists('$(SolutionDir).nugetNuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir).nugetNuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir).nugetNuGet.targets'))" />
  </Target>

Microsoft ha eliminado el soporte para ‘Habilitar la restauración del paquete NuGet’ en VS2015 y debe realizar algunos cambios manuales para migrar soluciones antiguas o agregar la función a nuevas soluciones. La nueva función se describe bastante bien en NuGet Package Restore.

También hay una guía de migración para proyectos existentes (como se mencionó anteriormente) aquí: Guía de migración de NuGet

Al actualizar:

  1. no elimine el directorio .nuget.
  2. Elimine los archivos nuget.exe y nuget.targets.
  3. Deje nuget.config.
  4. Purgue manualmente cada uno de los archivos del proyecto de cualquier referencia a los destinos NuGet. El script de Powershell mencionado parecía hacer más daño que bien.

Al crear un nuevo proyecto:

  1. En su solución de Visual Studio 2015, cree un directorio de soluciones llamado .nuget.

  2. Cree un directorio real del directorio de la solución (donde reside el archivo .sln) y llámelo .nuget (tenga en cuenta que el directorio de la solución no es el mismo que el directorio del sistema de archivos real aunque tengan el mismo nombre).

  3. Cree un archivo en el directorio .nuget llamado nuget.config.

  4. Agregue el ‘nuget.config’ al directorio de la solución creado en el paso # 2.

  5. Coloque el siguiente texto en el archivo nuget.config:

    <?xml version="1.0" encoding="utf-8"?>
     <configuration>
      <config>
        <add key="repositorypath" value="$........Packages" />
      </config>
      <solution>
        <add key="disableSourceControlIntegration" value="true" />
      </solution>
    </configuration>
    

Este archivo de configuración le permitirá consolidar todos sus paquetes en un solo lugar para que no tenga 20 copias diferentes del mismo paquete flotando en su sistema de archivos. La ruta relativa cambiará según la arquitectura del directorio de la solución, pero debe apuntar a un directorio común a todas sus soluciones.

Debe reiniciar Visual Studio después de realizar el paso 5. Nuget no reconocerá los cambios hasta que lo haga.

Finalmente, es posible que deba usar el ‘Administrador de paquetes Nuget para soluciones’ para desinstalar y luego reinstalar los paquetes. No sé si esto fue un efecto secundario del script de Powershell que ejecuté o simplemente un método para reactivar NuGet. Una vez que hice todos estos pasos, mi complicada arquitectura de compilación funcionó a la perfección para eliminar nuevos paquetes cuando verifiqué proyectos fuera de TFVC.

Opcionalmente, puede eliminar todas las carpetas de la carpeta “paquetes” y seleccionar “Administrar paquetes NuGet para la solución …”. En este caso, el botón “Restaurar” aparece en Windows de paquetes NuGet.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *