Visual Studio'da NuGet Paket Geri Yüklemeyi nasıl etkinleştiririm?


272

Orada bir var benzer sonrası yığın ama Visual Studio 2015 kullanıyorum çünkü muhtemelen benim konuyla yardımcı olmuyor.

VS2015'te "NuGet Paket Geri Yüklemeyi Etkinleştir" seçeneğinin görünmesini nasıl sağlayabilirim?

Dosya> Yeni Proje'yi seçtim ve boş bir ASP.NET Web Uygulaması oluşturdum . Bu menü seçeneğini arıyorum.

resim açıklamasını buraya girin

Proje klasörümde önceden var olan nuGet dosyalarını aradığımı ve hiçbirinin olmadığını belirtmeliyim.


4
Bunu Web projesine değil Çözümünüze karşı denediğinizden emin olun. Varsayılan olarak çözüm yalnızca bir proje olduğunda görüntülenmez
JConstantine

1
Evet, bu kesinlikle kolay bir hata ama çözüme karşı kontrol ettiğinizden emin oldum, sanırım 2015 ile ilgili olabilir. Etkinleştir seçeneği, aynı adımları izlediğimde VS2013'te kullanılabilir.
Dan Beaulieu

2
Burada aynı. Hatta VS 2013'te NuGet Paket Geri Yüklemeyi Etkinleştir seçeneğini etkinleştiren ancak hala zar olmayan .nuget klasörünü silmeyi denedim. VS 2013 yılında oluşturulan mevcut bir MVC uygulamasını açmaya çalışıyorum.
Vinney Kelly

4
@justanotherdev Yorumunuzu biraz daha verimli hale getirmek için yeni iş akışına referans vermeniz yararlı olacaktır.
avantprime

1
Ben hd Davidgobo tarafından oligofren başvurulan makalesini görmedim, bu yüzden sadece sln & csproj dosyalarını Notepad ++ 'da açtım ve resimli bölümleri sildim. Çözümü VS2015'te açtım ve dosyaları kaydettikten sonra, VS onları yeniden yüklememi istedi ve çözüm referanslarım artık iyi ve çözümüm derleniyor. Çok teşekkürler, Vinney!
Rich Ward

Yanıtlar:


248

Çok uzun sürdü ama sonunda bu belgeyi buldum MSBuild-Integrated çözümlerini Otomatik Paket Geri Yüklemeye Geçirme hakkında ve burada açıklanan yöntemleri kullanarak sorunu çözebildim.

  1. Kaldır '.nuget'Çözüm dizinini çözümden
  2. Tüm içeriği kaldırın nuget.targetssenin dan .csprojveya .vbprojdosyalar. Resmi olarak desteklenmese de belge bir PowerShell betiğine bağlanıyor temizlenmesi gereken çok fazla projeniz varsa . Benimkini elle düzenledim, böylece onunla ilgili deneyimim hakkında herhangi bir geri bildirim veremem.

Dosyalarınızı elle düzenlerken aradığınız şey:

Çözüm Dosyası (.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

Proje Dosyası (.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>

3
Burada bir şey eksik. Bu yöntemi kullandığımda, sahip olduğum her çözüme yüklenen bir bot yükü alıyorum. Ben 10 paketleri ile bir çözüm ve aynı paketleri ile başka bir çözüm var: her biri 10 paketleri içeren iki farklı dizinler oluşturulur. Bu yöntemi kullanarak, tüm paketlerinizi tek bir dizinde nasıl birleştirirsiniz (NuGet.Config dosyasını düzenleyerek eski VS2013 yönteminin izin verdiği gibi)?
Quarkly

Bir .nuget klasörü görmüyor musunuz? Paketler klasöründeki klasörlerin silinmesiyle ilgili çözümlere göz atın. Paketinizin yarıya kadar geri yüklenmesi ve çöpün tamamen geri yüklenmesini engellemesi mümkündür.
Greg

Aslında çözüm buydu. Buna ek olarak - proje oluşturmaya başlamadan önce "nuget restore" ekledim. nuget paketleri otomatik olarak indirilir ve bundan sonra proje oluşturma tamam çalışır.
TarmoPikaro

5
Biraz zaman kazanmak için, @VinneyKelly tarafından belirtilen GitHub deposundan yürütülecek komut dosyası migrateToAutomaticPackageRestore.ps1, büyüsü çalışıyor!
Riga

60

Microsoft, VS2015'te 'NuGet Paket Geri Yüklemeyi Etkinleştir' desteğini bıraktı ve eski çözümleri taşımak veya özelliği yeni çözümlere eklemek için bazı manuel değişiklikler yapmanız gerekiyor. Yeni özellik NuGet Paket Geri Yükleme'de oldukça iyi açıklanmıştır .

Ayrıca mevcut projeler için (daha önce de belirtildiği gibi) bir göç rehberi vardır: NuGet Geçiş Kılavuzu

Yeni sürüme geçerken:

  1. .nuget dizinini silmeyin.
  2. Nuget.exe ve nuget.targets dosyalarını silin.
  3. Nuget.config dosyasını bırakın.
  4. NuGet hedeflerine yapılan referansların her bir proje dosyasını el ile temizleyin. Bahsedilen Powershell betiği iyiden daha fazla hasar vermiş gibi görünüyordu.

Yeni bir proje oluştururken:

  1. Visual Studio 2015 çözümünüzde .nuget adlı bir Çözüm Dizini oluşturun.
  2. Çözüm dizininin gerçek bir dizinini oluşturun.
  3. .Nuget dizininde nuget.config adlı bir dosya oluşturun.

  4. 'Nuget.config' dosyasını 2. adımda oluşturulan çözüm dizinine ekleyin.

  5. Aşağıdaki metni nuget.config dosyasına yerleştirin:

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

Bu yapılandırma dosyası, tüm paketlerinizi tek bir yerde birleştirmenize izin verir, böylece dosya sisteminizde aynı paketin 20 farklı kopyası bulunmaz. Göreli yol, çözüm dizini mimarinize bağlı olarak değişecektir, ancak tüm çözümleriniz için ortak bir dizine işaret etmelidir.

5. adımı uyguladıktan sonra visual studio'yu yeniden başlatmanız gerekir. Nuget siz bunu yapana kadar değişiklikleri tanımaz.

Son olarak, paketleri kaldırmak ve yeniden yüklemek için 'Çözümler için Nuget Paket Yöneticisi'ni kullanmanız gerekebilir. Bu benim çalıştırdığım Powershell betiğinin bir yan etkisi mi yoksa sadece NuGet'i geri vitese atmanın bir yöntemi mi bilmiyorum. Tüm bu adımları tamamladıktan sonra, karmaşık yapı mimarim TFVC'den projeleri kontrol ettiğimde yeni paketleri ortaya çıkarmada kusursuz bir şekilde çalıştı.


1
Neden nuget.targets dosyasını silerim, eksik olduğunda tutarlı bir derleme alırım?
Frode Nilsen

1
Hedefler artık IDE'ye ve 'nugget.exe'nin sağlamak için kullandığı işleve entegre edilmiş görünüyor. Hala ihtiyacınız olan tek şey yapılandırma.
Quarkly

1
DRAirey tarafından belirtilen adımlara ek olarak, aşağıdakileri yapmak zorunda kaldım: 1) $ \ .. \ .. \ .. \ .. \ Packages yerine ../../ (windows üst yol kuralı, no başından 2) kaydet çözümü, yakın ve nuget.config için yeniden en $ okuyup yüklemek paketiyle onurlandırılmayı
Sudhanshu Mishra

Bu, paketleri dir teslim ettiğim yeni VS2015 projeme yardımcı oldu ve NuGet bağımlılıkları nedeniyle diğer ekip üyeleri yeniden yapılamadı.
azec-pdx

1
5. adımı uyguladıktan sonra visual studio'yu yeniden başlatmanız gerekir. Nuget siz bunu yapana kadar değişiklikleri tanımaz.
Barry Colebank Jr

35

İsteğe bağlı olarak tüm klasörleri "paket" klasöründen kaldırabilir ve "Çözüm için NuGet Paketlerini Yönet ..." seçeneğini belirleyebilirsiniz. Bu durumda NuGet Packages Windows'ta "Restore" (Geri Yükle) düğmesi görünür.


1
"Paketler" klasörü içindeki klasörleri kaldırdıktan sonra NuGet Paketleri Penceresini kapatıp yeniden açmayı deneyin.
Ivan Branets

6
+1 Bu benim için çalıştı, geri yükleme düğmesinin pencerenin üst kısmında, sekmenin hemen altında belirdiğini unutmayın. Diyor ki: "Bazı NuGet paketleri bu çözümde eksik. Çevrimiçi paket kaynaklarınızdan geri yüklemek için tıklayın."
Eruza

Çok basit ve kolay .. Bu benim için çalıştı .. Sanırım bu daha fazla oy olmalı cevap :)
Nirman

Çok basit ve kolay. Cevap bu olmalı.
Axel

Bu klasörü .gitignore dosyasına eklemek iyi bir fikir olmaz mı?
Axel

26

Mike tarafından daha önce de belirtildiği gibi, VS2015'te 'NuGet Paket Geri Yüklemeyi Etkinleştir' seçeneği yoktur. Geri yükleme işlemini manuel olarak başlatmanız gerekir. Güzel bir yol - dosya ve dizinlerle uğraşmaksızın - NuGet Paket Yönetim Konsolu'nu kullanmaktır : 'Hızlı başlangıç' alanına tıklayın (genellikle sağ üst köşede), girin console, yönetim konsolunu açın ve komut girin:

Update-Package reinstall

Bu, çözümünüzdeki tüm projelerin tüm paketlerini yeniden yükleyecektir. Tek bir proje belirlemek için şunu girin:

Update-Package reinstall -ProjectName MyProject

Tabii ki bu sadece bazen VS2015 tarafından sunulan Restoredüğme mevcut olmadığında gereklidir. Daha yararlı güncelleme komutları burada listelenmiş ve açıklanmıştır: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstal-and-updating-packages


Çok teşekkürler, benzer bir sorun yaşadım. Sorunumu prosedürünüz aracılığıyla çözdüm. Çok teşekkür ederim
McElie

Aynı şekilde, işe yarayan ve her yere yazılan bir sürü şeye ihtiyaç duymayan tek kişi
Harvey Lin

Burada en yararlı cevap!
Neo

13

Herhangi bir sorununuz varsa veya herhangi bir paket eksikse, projenize sağ tıklayıp " Çözüm için NuGet Paketlerini Yönet ... " seçeneğini belirleyebilirsiniz. Buna tıkladıktan sonra "Geri Yükle" yazan bir menü çubuğu gördüğünüz bir ekran açılacaktır: Onarmak

Üzerine tıklayın, gerekli paketler otomatik olarak yüklenecektir.
Aradığın şey olduğuna inanıyorum, bu benim problemlerimi çözdü.


3
Ama bu sadece bu uyarı çubuğu ortaya çıkarsa yardımcı olur, benim durumumda değil.
Nicholas Petersen

2
Bir paketi manuel olarak yükleyen bir adım, otomatik geri yükleme noktasını tamamen kaçırır.
Quarkly

Bunun muhtemelen kabul edilen cevap olması gerektiğine inanıyorum, aynı işlevsellik
user25064

1
Çözüme sağ tıklayarak geri yükleme seçeneğini görebildim. "Çözüm için NuGet paketlerini yönet" altındaydı. Benim için hile yaptı.
Daryl

1
Benim için çalışmıyor - Çözümünde eksik nuget paketleri ile ilgili uyarılar görüyorum, ancak nuget paketlerini yönetmek bana bunları indirmek için bir seçenek sunmuyor. Ayrıca inşa edip geri yükleyemem. Restore komutu da hiçbir şey yapmaz.
Markus


6

Nuget paketleri olan projeleri Vx20XX'ten VS2015'e yükseltirken, nuget paketleriyle ilgili bir sorununuz olabilir.

Hata iletisi örneği: Bu proje, bu bilgisayarda eksik olan NuGet paketlerine başvuruyor. İndirmek için NuGet Paket Geri Yüklemeyi etkinleştirin.

Güncelleme 2016-02-06: Bilgiye bir bağlantım vardı ama artık çalışmıyor. Yakın tarihli bir yolun sorunu çözdüğünden şüpheleniyorum ???

MSBuild-Integrated paket geri yüklemesine karşı Otomatik Paket Geri Yükleme yapan küçük bir program yazarken sorunumu çözdüm

Sen aracının yürütülebilir indirebilirsiniz burada .

Lütfen sonucu bana bildirin :-)!

resim açıklamasını buraya girin

Referans olarak kod:

<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";
        }

    }
}

Program benim çözümümde bir ton projeyi dönüştürmek için iyi çalıştı. En son sürüm bir "NuGet Paketleri Dizini" alanına da sahiptir, ancak çıktıyı etkilememiştir. Bu ne işe yarıyor?
Christoffer Årstrand

Üzgünüm, hiçbir fikrim yok. Dosyanın içeriğine bağlı olduğundan şüpheleniyorum. Belki de "FromProjectFileRemoveNugetTargets" işlevini izleyebilir ve dosyanızın etkilenip etkilenmeyeceğini görebilirsiniz? Bu kötü cevap için özür dilerim, ne kodladığımı hatırlamıyorum :-(! Sadece 2 farklı bilgisayarda iki kez başarılı bir şekilde kullandığımı biliyorum.
Eric Ouellet

5

Visual studio'daki References'a gidin ve hangi paketlerin eksik olduğuna bakın. Şimdi Visual'de Solution'a sağ tıklayın ve dosya gezginde açık klasörü tıklayın. Şimdi Packages klasörünü açın ve eksik Packages klasörünü silin. Görsel stüdyosu açın ve çözümü oluşturun. tüm eksik paketler geri yüklenecektir. Eğer yardımcı olduysam lütfen bunu cevap olarak işaretleyin.


4

Sanırım asp.net 4 projesi için otomatik geri yüklemeye geçiyoruz, bu yüzden buna gerek yok. Daha eski projeler için, dönüştürmek için biraz çalışma gerektiğini düşünüyorum.

http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore


Muhtemelen haklısın. Ben sadece VS2013 aynı adımları kullanarak proje oluşturmaya çalıştım ve "Nuget Paket Geri Yüklemeyi Etkinleştir" vardı. Bağlantı için teşekkürler, şimdi kontrol edeceğim.
Dan Beaulieu

4

Bu yaklaşım benim için çalıştı:

  • Kapat VS2015
  • Geçici olarak VS2013 içinde çözüm açın ve çözüm sağ tıklayarak nuget paket geri yükleme etkinleştirin (ben de yeniden yaptım, ama gerekli olmadığını şüpheli).
  • Kapat VS2013
  • VS2015'te çözümü yeniden açın

Artık VS2015'te nuget paketi geri yüklemeyi etkinleştirdiniz .


4

Örnek proje gplus-quickstart-csharp-master oluşturmaya çalışırken aynı sorunla karşılaştım .

Hata mesajına yakından baktım ve bu hatanın üstesinden gelmenin bir çözümü buldum, umarım bu yardımcı olacaktır.

  • Çözüm dosyasına sağ tıklayın ve Windows Gezgini'nde açın.
  • .Nuget klasörünü NuGet.Config, NuGet.exe, NuGet.targets ile kopyalayın ( bağlantıyı indirin veya başka bir projeden kopyalayıp değiştirin)
  • Çözümü yeniden oluşturmaya çalışın.

Zevk almak !!


4

Ivan Branets'in çözümü aslında bunu benim için düzeltti, ancak daha fazla ayrıntı paylaşılabilirdi.

Benim durumumda, ben oldu VS 2015 kullanarak Oto Paketi geri ve TFS . Bu tamamen varsayılan şeyler.

Sorun, başka bir geliştirici TFS'den bir çözüm almaya çalıştığında, bazı paketlerin tamamen geri yüklenmemesiydi. (Neden, henüz tam olarak emin değilim.) Ama paketleri klasörü referans ve NuGet paketi için bir klasör içeriyordu, ancak genişlemiyordu (.dll içeren bir lib klasörünün eksik olduğunu söyleyin.) Bu yarım orada, ama tam olarak doğru olmayan bir kavram, paketin geri yüklenmesini engelliyordu.

Bunu fark edeceksiniz çünkü referansın çözülmemesi hakkında sarı bir ünlem işareti olacaktır.

Yani, çözüm ait paketler içerisinde dizin silme paket sorununu engelliyor geri kaldırır. Sonra paketleri geri yükleme seçeneğini almak için en üst çözüm düzeyinde sağ tıklayabilirsiniz ve şimdi çalışmalıdır.


4

VS.'yi kapatın Paketler klasörü altındaki her şeyi silin. Çözümünüzü yeniden açın. Projenize sağ tıklayın, 'Nuget paketlerini yönet ...' seçeneğini seçin. 'Nuget Paket Yöneticisi' penceresinin üstünde, paketleri geri yüklemenizi isteyen sarı bir çubuk göreceksiniz. Bu benim için çalıştı.


3

Paket Yöneticisi konsolu (Visual Studio, Araçlar> NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu): Update-Package -reinstall -ProjectName komutunu çalıştırın; burada etkilenen projenin adı Solution Explorer'da göründüğü gibidir. Çözümdeki tüm paketleri geri yüklemek için Update-Package -reinstall komutunu tek başına kullanın. Bkz. Güncelleme Paketi. İsterseniz, tek bir paketi de yeniden yükleyebilirsiniz.

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


1

Paketi yüklemeye çalışırken programı çalıştırmanın bir sonucu da olabilir. yerleşik IIS arka planda çalışırken tıklatmaya çalışırsanız gri renkte olur.


1

Visual Studio 2017'de başka birinin bu sorunu bulması durumunda, projenin klasör tarafından değil .sln dosyası tarafından açıldığından emin olun, çünkü Visual Studio klasör tarafından açılmışsa ayarları almayacaktır. Git için Visual Studio çevrimiçi hizmetlerini kullanıyorsanız, bu varsayılan olarak olur.


1

For .NET Çekirdek projeler , kaçak dotnet restoreveya dotnet buildkomutaNuGet Package Manager Console (otomatik geri çalışır)

Konsolu şu adresten çalıştırabilirsiniz:

Araçlar> NuGet Paket Yöneticisi> Paket Yöneticisi Konsolu


1

Ben kullandım msbuild /t:restore.


Kredi ve kaynak:

Benim sorunum MSBuild ile oldu Bu yüzden @Vinney Kelly'nin bağlantısını takip ettim : MSBuild-Integrated çözümlerini Automatic Package Restore'a geçirme

ve...

Çalışan bir CHARM GİBİ =]

MSBuild : msbuild /t:restoreproje dosyasında listelenen paket paketlerini geri yükleyen komutu kullanın ( yalnızca PackageReference ). Yalnızca Visual Studio 2017'de bulunan NuGet 4.x + ve MSBuild 15.1+ sürümlerinde kullanılabilir . nuget restoreve dotnet restoreher ikisi de bu komutu uygulanabilir projeler için kullanır.


Benim durumumda / t: restore komutu kullanmam / geri yükleme komutunu kullanmam için projeyi oluşturmuyor
Kishan Vaishnav

1

Her şey başarısız olursa (veya belki de daha önce) NuGet'in bir paket kaynağı olup olmadığını kontrol etmek isteyebilirsiniz. VS2017'yi kurdum ve varsayılan olarak orada değildi. Bunun garip olduğunu düşündüm.

  1. Araçları - NuGet Paket Yöneticisi - Paket Yöneticisi Ayarları
  2. İletişim kutusunun sol gezinme bölmesinde 'Paket Kaynakları'nı tıklayın.
  3. Nuget URL'si eklemek için artı işaretini (+) kullanın: https://api.nuget.org/v3/index.json

0

Paketleri kapat ve yeniden aç (VS2015) çözümü kaldırmak zorunda kaldı. Geçiş yapmıyordum ve kaynak kontrolünde kontrol edilmiş paketlerim yoktu. Söyleyebileceğim tek şey bir şeylerin dağıldığı ve bu sorunu düzeltti.


0

Aracılığıyla bana yardımcı Araçlar >>> Nuget Paket Yöneticisi >>> Genel sonra seçeneği işaretleyin Nuget paketini eksik indirmesine izin ver ve otomatik görsel stüdyoda inşa sırasında paketleri eksik olup olmadığını kontrol edin .

resim açıklamasını buraya girin


0

Ben de aynı problemle karşı karşıyayım. Visual Studio 2019'da yaptığım bir çözüme Visual Studio 2015'te oluşturulan bir MVC projesi eklemeye çalışıyorum.

Visual Studio 2019'da zaten mevcut projeler var, bu yüzden VS 2015'te oluşturduğum bu mevcut projeyi eklemek aynı hatayı tetikliyor. Burada tüm cevapları denedim ama sorunu çözmez.

Yaptığım sadece .nuget klasörünü çözüm klasörüne koymak. Başlangıçta klasörün hiyerarşisi şudur:

Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
         -> .nuget folder (It contains a .nuget folder)

Çözüm klasörünün kendisinde .nuget klasörünü taşıdığımda sorun giderildi:

    Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
  -> .nuget folder (It contains a .nuget folder)

0

VS 2019 Sürüm 16.4.4 .NET Core 3.1'i hedefleyen çözüm

Burada önerilen hemen hemen tüm çözümleri denedikten sonra VS'yi kapattım. Tekrar açtığımda, birkaç saniye sonra her şey yolundaydı ...


-4

Daha da basit, çözümünüze bir .nuget klasörü ekleyin ve 'Nuget Paketlerini Geri Yükle' görünecektir (nuget.exe'nin çalışması için mevcut olup olmadığından emin değilsiniz).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.