visual studio solucion restaurar proyecto por paquetes ningun instalar admitido c# asp.net nuget visual-studio-2015 nuget-package-restore

c# - solucion - restaurar paquetes nuget visual studio 2015



¿Cómo activo NuGet Package Restore en Visual Studio? (22)

Consola de Package Manager (Visual Studio, Herramientas> NuGet Package Manager> Package Manager Console): ejecute el comando Update-Package -reinstall -ProjectName donde está el nombre del proyecto afectado tal como aparece en el Explorador de soluciones. Use Update-Package -reinstall por sí mismo para restaurar todos los paquetes en la solución. Ver Paquete de actualización. También puede reinstalar un solo paquete, si lo desea.

de https://docs.microsoft.com/en-us/nuget/quickstart/restore

Hay una publicación similar en la pila, pero no ayuda con mi problema, posiblemente porque estoy usando Visual Studio 2015.

¿Cómo obtengo la opción "Habilitar restauración de paquete NuGet" para que aparezca en VS2015?

Elegí Archivo> Nuevo proyecto y creé una aplicación web ASP.NET vacía . Estoy buscando esta opción de menú.

Debo mencionar que he buscado archivos nuGet preexistentes en mi carpeta de proyecto y no hay ninguno.


Aún más simple, agregue una carpeta .nuget a su solución y aparecerá ''Restaurar paquetes Nuget'' (no estoy seguro de si nuget.exe debe estar presente para que funcione).


Al actualizar proyectos con paquetes nuget de Vx20XX a VS2015, es posible que tenga un problema con los paquetes nuget.

Ejemplo de mensaje de error: Este proyecto hace referencia a los paquetes NuGet que faltan en esta computadora. Habilite Restaurar paquete NuGet para descargarlos.

Actualización 2016-02-06: tenía un enlace a la información pero ya no funciona. Sospecho que una ruta reciente ha resuelto el problema ???

Solucioné mi problema escribiendo un pequeño programa que realiza la restauración del paquete integrado MSBuild vs. Restauración automática del paquete

Puede descargar el ejecutable de la herramienta here .

Por favor déjame saber el resultado :-) !

Código como referencia:

<Window x:Class="FixNuGetProblemsInVs2015.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:FixNuGetProblemsInVs2015" mc:Ignorable="d" Title="Fix NuGet Packages problems in Visual Studio 2015 (By Eric Ouellet)" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="10"></ColumnDefinition> <ColumnDefinition></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0">Root directory of projects</TextBlock> <Grid Grid.Row="0" Grid.Column="2"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBox Grid.Column="0" Name="DirProjects"></TextBox> <Button Grid.Column="1" VerticalAlignment="Bottom" Name="BrowseDirProjects" Click="BrowseDirProjectsOnClick">Browse...</Button> </Grid> <!--<TextBlock Grid.Row="1" Grid.Column="0">Directory of NuGet Packages</TextBlock> <Grid Grid.Row="1" Grid.Column="2"> <Grid.ColumnDefinitions> <ColumnDefinition></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBox Grid.Column="0" Name="DirPackages"></TextBox> <Button Grid.Column="1" Name="BrowseDirPackages" Click="BrowseDirPackagesOnClick">Browse...</Button> </Grid>--> <TextBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Name="TxtLog" IsReadOnly="True"></TextBox> <Button Grid.Row="3" Grid.Column="0" Click="ButtonRevertOnClick">Revert back</Button> <Button Grid.Row="3" Grid.Column="2" Click="ButtonFixOnClick">Fix</Button> </Grid> </Window> using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Forms; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Xml; using System.Xml.Linq; using Application = System.Windows.Application; using MessageBox = System.Windows.MessageBox; /// <summary> /// Applying recommanded modifications in section : "MSBuild-Integrated package restore vs. Automatic Package Restore" /// of : http://docs.nuget.org/Consume/Package-Restore/Migrating-to-Automatic-Package-Restore /// </summary> namespace FixNuGetProblemsInVs2015 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); DirProjects.Text = @"c:/prj"; // DirPackages.Text = @"C:/PRJ/NuGetPackages"; } private void BrowseDirProjectsOnClick(object sender, RoutedEventArgs e) { FolderBrowserDialog dlg = new FolderBrowserDialog(); dlg.SelectedPath = DirProjects.Text; if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { DirProjects.Text = dlg.SelectedPath; } } //private void BrowseDirPackagesOnClick(object sender, RoutedEventArgs e) //{ // FolderBrowserDialog dlg = new FolderBrowserDialog(); // dlg.SelectedPath = DirPackages.Text; // if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) // { // DirPackages.Text = dlg.SelectedPath; // } //} // private string _dirPackages; private void ButtonFixOnClick(object sender, RoutedEventArgs e) { DoJob(false); } private void ButtonRevertOnClick(object sender, RoutedEventArgs e) { DoJob(true); } private void DoJob(bool revert = false) { TxtLog.Text = ""; string dirProjects = DirProjects.Text; // _dirPackages = DirPackages.Text; if (!Directory.Exists(dirProjects)) { MessageBox.Show("Projects directory does not exists: " + dirProjects); return; } //if (!Directory.Exists(_dirPackages)) //{ // MessageBox.Show("Packages directory does not exists: " + _dirPackages); // return; //} RecurseFolder(dirProjects, revert); } private void RecurseFolder(string dirProjects, bool revert = false) { if (revert) { Revert(dirProjects); } else { FixFolder(dirProjects); } foreach (string subfolder in Directory.EnumerateDirectories(dirProjects)) { RecurseFolder(subfolder, revert); } } private const string BackupSuffix = ".fix_nuget_backup"; private void Revert(string dirProject) { foreach (string filename in Directory.EnumerateFiles(dirProject)) { if (filename.ToLower().EndsWith(BackupSuffix)) { string original = filename.Substring(0, filename.Length - BackupSuffix.Length); if (File.Exists(original)) { File.Delete(original); } File.Move(filename, original); Log("File reverted: " + filename + " ==> " + original); } } } private void FixFolder(string dirProject) { BackupFile(System.IO.Path.Combine(dirProject, "nuget.targets")); BackupFile(System.IO.Path.Combine(dirProject, "nuget.exe")); foreach (string filename in Directory.EnumerateFiles(dirProject)) { if (filename.ToLower().EndsWith(".csproj")) { FromProjectFileRemoveNugetTargets(filename); } } } private void BackupFile(string path) { if (File.Exists(path)) { string backup = path + BackupSuffix; if (!File.Exists(backup)) { File.Move(path, backup); Log("File backup: " + backup); } else { Log("Project has already a backup: " + backup); } } } private void FromProjectFileRemoveNugetTargets(string prjFilename) { XDocument xml = XDocument.Load(prjFilename); List<XElement> elementsToRemove = new List<XElement>(); foreach (XElement element in xml.Descendants()) { if (element.Name.LocalName == "Import") { var att = element.Attribute("Project"); if (att != null) { if (att.Value.Contains("NuGet.targets")) { elementsToRemove.Add(element); } } } if (element.Name.LocalName == "Target") { var att = element.Attribute("Name"); if (att != null && att.Value == "EnsureNuGetPackageBuildImports") { elementsToRemove.Add(element); } } } if (elementsToRemove.Count > 0) { elementsToRemove.ForEach(element => element.Remove()); BackupFile(prjFilename); xml.Save(prjFilename); Log("Project updated: " + prjFilename); } } private void Log(string msg) { TxtLog.Text += msg + "/r/n"; } } }


Cerrar VS. Eliminar todo en la carpeta de paquetes. Vuelva a abrir su solución. Haga clic derecho en su proyecto, seleccione ''Administrar paquetes nuget ...''. Verá que aparece una barra amarilla en la parte superior de la ventana ''Nuget Package Manager'', que le pide que restaure los paquetes. Esto me ha funcionado.


Como ya mencionó Mike, no existe la opción ''Habilitar restauración de paquete NuGet'' en VS2015. Tendrá que invocar el proceso de restauración manualmente. Una manera agradable, sin jugar con archivos y directorios, es usar la consola de administración de paquetes NuGet : haga clic en el campo ''Inicio rápido'' (generalmente en la esquina superior derecha), ingrese a la console , abra la consola de administración e ingrese el comando:

Update-Package –reinstall

Esto reinstalará todos los paquetes de todos los proyectos en su solución. Para especificar un solo proyecto, ingrese:

Update-Package –reinstall -ProjectName MyProject

Por supuesto, esto solo es necesario cuando el botón Restore , a veces ofrecido por VS2015, no está disponible. Los comandos de actualización más útiles se enumeran y explican aquí: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


En caso de que alguien más encuentre este problema en Visual Studio 2017, asegúrese de que el archivo .sln y no la carpeta abra el proyecto, ya que Visual Studio no recogerá la configuración si se abre por carpeta. Esto sucede de manera predeterminada si está utilizando los servicios en línea de Visual Studio para git.


Este enfoque funcionó para mí:

  • Cerrar VS2015
  • Abra la solución temporalmente en VS2013 y habilite la restauración del paquete nuget haciendo clic derecho en la solución (también realicé una reconstrucción, pero sospecho que no es necesario).
  • Cerrar VS2013
  • Vuelva a abrir la solución en VS2015

Ahora también ha habilitado la restauración del paquete nuget en VS2015.


La solución de Ivan Branets es esencialmente lo que solucionó esto para mí, pero podrían compartirse algunos detalles más.

En mi caso, estaba en VS 2015 usando la restauración automática de paquetes y TFS . Todo esto es bastante por defecto.

El problema era que cuando otro desarrollador intentaba obtener una solución de TFS, algunos paquetes no se restauraban completamente. (Por qué, eso no estoy del todo seguro todavía.) Pero la carpeta de paquetes contenía una carpeta para la referencia y el paquete NuGet, pero no se estaba expandiendo (digamos que faltaba una carpeta lib que contenga un .dll). Esta mitad allí, pero el concepto no del todo correcto era evitar que se restaurara el paquete.

Reconocerá esto porque la referencia tendrá un signo de exclamación amarillo sobre no resolverse.

Entonces, la solución de eliminar la carpeta dentro de los paquetes elimina el problema de bloqueo de restauración de paquetes. Luego puede hacer clic con el botón derecho en el nivel superior de la solución para obtener la opción de restaurar paquetes , y ahora debería funcionar.


Me ayudó a través de Herramientas >>> Administrador de paquetes Nuget >>> General, luego marque la opción Permitir que Nuget descargue el paquete que falta y compruebe automáticamente los paquetes faltantes durante la compilación en Visual Studio .


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

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

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

Archivo de solución (.sln)

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

Archivo de proyecto (.csproj / .vbproj)

<Import Project="$(SolutionDir)/.nuget/NuGet.targets" Condition="Exists(''$(SolutionDir)/.nuget/NuGet.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)/.nuget/NuGet.targets'')" Text="$([System.String]::Format(''$(ErrorText)'', ''$(SolutionDir)/.nuget/NuGet.targets''))" /> </Target>


Microsoft ha dejado de admitir la opción "Habilitar restauración de paquetes NuGet" en VS2015 y debe realizar algunos cambios manuales para migrar soluciones antiguas o agregar la función a soluciones nuevas. La nueva característica 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 el nuget.config.
  4. Purgue cada uno de los archivos del proyecto de cualquier referencia a los objetivos NuGet a mano. 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 vive 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 ''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á dependiendo de la arquitectura del directorio de su 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, puede que tenga que usar el ''Nuget Package Manager for Solutions'' para desinstalar y luego reinstalar los paquetes. No sé si esto fue un efecto secundario del script Powershell que ejecuté o simplemente un método para volver a poner en marcha NuGet. Una vez que hice todos estos pasos, mi arquitectura de compilación complicada funcionó a la perfección para traer nuevos paquetes cuando verifiqué proyectos 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 NuGet Packages.


Para proyectos .NET Core , ejecute el comando NuGet Package Manager Console dotnet restore o dotnet build en NuGet Package Manager Console (que ejecuta automáticamente la restauración)

Puedes ejecutar la consola desde

Herramientas> NuGet Package Manager> Consola de Package Manager


Si tiene algún problema o le faltan paquetes, simplemente haga clic con el botón derecho en su proyecto y seleccione " Administrar paquetes NuGet para la solución ... ". Después de hacer clic en esto, se abrirá una pantalla donde verá una barra de menú que dice "Restaurar":

Haga clic en él y los paquetes necesarios se instalarán automáticamente.
Creo que esto es lo que estás buscando, esto resolvió mis problemas.


Si todo lo demás falla (o tal vez antes), es posible que desee verificar y ver si NuGet es una fuente de paquete. Instalé VS2017, y NO estaba allí por defecto. Pensé que era un poco extraño.

  1. Herramientas - NuGet Package Manager - Configuración del Administrador de paquetes
  2. Haga clic en ''Fuentes de paquete'' en el navegador izquierdo del cuadro de diálogo.
  3. Use el signo más (+) para agregar la URL de Nuget: https://api.nuget.org/v3/index.json


También podría ser el resultado de ejecutar el programa mientras intentas instalar el paquete. está atenuado si intenta hacer clic en él mientras el IIS integrado se ejecuta en segundo plano.


Tuve que eliminar la carpeta de paquetes cerrar y volver a abrir la solución (VS2015). No estaba migrando y no tenía paquetes registrados en el control de origen. Todo lo que puedo decir es que algo se estropeó y esto lo solucionó.


Use este comando para restaurar todos los paquetes

dotnet restore


Vaya a Referencias en Visual Studio y observe qué paquetes faltan. Ahora haga clic derecho en Solución en Visual y haga clic en abrir carpeta en el explorador de archivos. Ahora abra la carpeta de paquetes y elimine la carpeta de paquetes faltantes. Abra Visual Studio y solo cree la solución. Todos los paquetes faltantes serán restaurados. Marque esto como respuesta si ayudé.


gplus-quickstart-csharp-master el mismo problema al intentar construir el proyecto de muestra gplus-quickstart-csharp-master .

Miré de cerca el mensaje de error y encontré una solución para superar este error, con suerte, esto ayudará.

  • Haga clic derecho en el archivo de solución y ábralo en el Explorador de Windows.
  • Copie la carpeta .nuget con NuGet.Config, NuGet.exe, NuGet.targets ( link descarga o simplemente copie de otro proyecto y reemplace)
  • Intenta reconstruir la solución.

Disfruta !!


msbuild /t:restore .

Crédito y fuente:

Mi problema era con MSBuild, así que seguí el enlace de @Vinney Kelly : Migración de soluciones integradas de MSBuild a Restauración automática de paquetes

y...

Eso funcionó COMO UN ENCANTO =]

MSBuild : use el msbuild /t:restore , que restaura los paquetes de paquetes que figuran en el archivo del proyecto (solo PackageReference ). Disponible solo en NuGet 4.x + y MSBuild 15.1+, que se incluyen con Visual Studio 2017 . nuget restore y dotnet restore usan este comando para proyectos aplicables.