Visual StudioでNuGetパッケージの復元を有効にするにはどうすればよいですか?


272

あります同様のポストスタック上には、私は、Visual Studio 2015を使用していますので、それはおそらく私の問題を解決しません。

「NuGetパッケージの復元を有効にする」オプションをVS2015に表示するにはどうすればよいですか?

[ファイル]> [新しいプロジェクト]を選択し、空のASP.NET Webアプリケーションを作成しました。このメニューオプションを探しています。

ここに画像の説明を入力してください

プロジェクトフォルダーで既存のnuGetファイルを探しましたが、何もありません。


4
Webプロジェクトではなく、ソリューションに対してこれを試行していることを確認してください。プロジェクトが1つしかない場合、デフォルトではソリューションは表示されません
JConstantine '12年

1
ええ、それは間違いなく間違いを犯しやすいですが、私はソリューションと照合して確認しました。2015年に関係しているのではないかと思います。同じ手順に従うと、VS2013で[有効にする]オプションを使用できます。
Dan Beaulieu、2015年

2
こっちも一緒。VS 2013で[NuGetパッケージの復元を有効にする]オプションを再度アクティブにする.nugetフォルダーを削除しようとしましたが、まだサイコロはありません。私はVS 2013で作成された既存のMVCアプリケーションを開くしようとしています
Vinneyケリー

4
@justanotherdevコメントをもう少し生産的にするために、新しいワークフローへの参照を提供すると便利です。
avantprime

1
Oligofrenによって参照されているDavid Ebboの記事を見なかったので、Notepad ++でslnおよびcsprojファイルを開き、彼が示したセクションを削除しました。VS2015でソリューションを開いており、ファイルを保存すると、VSはファイルをリロードするように促し、ソリューションの参照は正常になり、ソリューションはコンパイルされます。どうもありがとう、ヴィニー!
Rich Ward

回答:


248

時間がかかりすぎましたが、MSBuild統合ソリューションの自動パッケージ復元への移行に関するこのドキュメントをようやく見つけ、ここで説明する方法を使用して問題を解決することができました。

  1. '.nuget'ソリューションからソリューションディレクトリを削除する
  2. またはファイルnuget.targetsからへのすべての参照を削除します。正式にはサポートされていませんが、クリーンアップが必要なプロジェクトが多数ある場合、ドキュメントはPowerShellスクリプトにリンクしています。私は手作業で鉱山を手動で編集したので、自分の体験についてフィードバックを与えることはできません。.csproj.vbproj

ファイルを手作業で編集する場合は、次のものが必要です。

ソリューションファイル(.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

プロジェクトファイル(.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
ここで何かが完全に欠けています。この方法を使用すると、すべてのソリューションにインストールされた大量のパッケージがインストールされます。私は、10個のパッケージを含む1つのソリューションと、まったく同じパッケージを含む別のソリューションを用意しています。それぞれ10個のパッケージを含む2つの異なるディレクトリが作成されます。この方法を使用して、すべてのパッケージを単一のディレクトリに統合するにはどうすればよいですか(NuGet.Configファイルを編集することで、古いVS2013の方法で可能になりました)。
Quarkly、2015

.nu​​getフォルダーが表示されませんか?パッケージフォルダー内のフォルダーの削除に関するソリューションを確認してください。パッケージが半分復元された可能性があり、そのゴミによって完全に復元できなくなっています。
Greg

確かにこれが解決策でした。これに加えて-プロジェクトのビルドを開始する前に「nuget restore」を追加しました。nugetパッケージは自動的にダウンロードされ、プロジェクトビルドはこの後正常に動作します。
TarmoPikaro

5
時間を節約するために、@ VinneyKellyによって言及されているGitHubリポジトリから実行するスクリプトは、migrateToAutomaticPackageRestore.ps1です。
リガ

60

マイクロソフトはVS2015の「Enable NuGet Package Restore」のサポートを終了しました。古いソリューションを移行するか、新しいソリューションに機能を追加するには、手動で変更する必要があります。新機能は、NuGet Package Restoreでかなりよく説明されていますます。

(前述の)既存のプロジェクトの移行ガイドもここにあります:NuGet移行ガイド

アップグレード時:

  1. .nu​​getディレクトリは削除しないでください。
  2. nuget.exeおよびnuget.targetsファイルを削除します。
  3. nuget.configのままにします。
  4. NuGetターゲットへの参照の各プロジェクトファイルを手動でパージします。言及されたPowershellスクリプトは、良いことよりも多くのダメージを与えるようです。

新しいプロジェクトを作成する場合:

  1. Visual Studio 2015ソリューションで、.nugetというソリューションディレクトリを作成します。
  2. ソリューションディレクトリ(.slnファイルが存在する場所)の実際のディレクトリを作成し、それを.nugetと呼びます(ソリューションディレクトリは、同じ名前であっても実際のファイルシステムディレクトリと同じではないことに注意してください)。
  3. nuget.configというファイルを.nugetディレクトリに作成します。

  4. 手順2で作成したソリューションディレクトリに「nuget.config」を追加します。

  5. 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>

この構成ファイルを使用すると、すべてのパッケージを1か所に統合​​できるため、同じパッケージの20の異なるコピーがファイルシステム上に浮かぶことはありません。相対パスは、ソリューションディレクトリアーキテクチャによって異なりますが、すべてのソリューションに共通のディレクトリを指す必要があります。

手順5を実行した後、Visual Studioを再起動する必要があります。そうするまで、Nugetは変更を認識しません。

最後に、「Nuget Package Manager for Solutions」を使用してパッケージをアンインストールしてから再インストールする必要がある場合があります。これが実行したPowershellスクリプトの副作用なのか、NuGetを元に戻すための単なる方法なのかはわかりません。これらの手順をすべて実行すると、TFVCからプロジェクトをチェックアウトしたときに、複雑なビルドアーキテクチャが新しいパッケージを完全に停止するのに問題なく機能しました。


1
なぜnuget.targetsファイルを削除しますか?それがない場合、一貫したビルドを取得しますか?
Frode Nilsen、2015

1
現在、ターゲットはIDEに統合されているようであり、「nugget.exe」が提供していた機能も同様です。まだ必要なのは構成だけです。
Quarkly、2015

1
DRAireyが述べた手順に加えて、私は次のことを行わなければなりませんでした:1)$ \ .. \ .. \ .. \ .. \ Packagesの代わりに、.. / .. /を使用しました(Windows親パスの規則、いいえ$開始時2)ソリューションを保存して閉じ、再度開いて、nuget.configが読み込まれ、パッケージのインストールで反映されるようにします
Sudhanshu Mishra

これは、パッケージdirをコミットした私の新しいVS2015プロジェクトに役立ち、他のチームメンバーはNuGetの依存関係のために再構築できませんでした。
azec-pdx

1
手順5を実行した後、Visual Studioを再起動する必要があります。そうするまで、Nugetは変更を認識しません。
Barry Colebank Jr 2016

35

必要に応じて、「packages」フォルダーからすべてのフォルダーを削除し、「Manage NuGet Packages for Solution ...」を選択できます。この場合、NuGetパッケージウィンドウに[復元]ボタンが表示されます。


1
"packages"フォルダー内のフォルダーを削除した後、NuGetパッケージウィンドウを閉じて再度開いてみてください。
Ivan Branets、2015年

6
+1これでうまくいきました。ウィンドウの上部、タブのすぐ下に復元ボタンがポップアップしていることに注意してください。「このソリューションには一部のNuGetパッケージがありません。クリックして、オンラインパッケージソースから復元してください。」
Eruza 2015年

とてもシンプルで簡単です。これは私にとってはうまくいきました。これはもっと投票されるべきだと
思い

とてもシンプルで簡単です。これが答えです。
Axel 2016

このフォルダを.gitignoreファイルに追加するのは良い考えではありませんか?
Axel 2016

26

Mikeがすでに述べたように、VS2015には「NuGetパッケージの復元を有効にする」オプションはありません。手動で復元プロセスを呼び出す必要があります。ファイルやディレクトリをいじることなく、NuGetパッケージ管理コンソールを使用するのが良い方法です。[クイックスタート]フィールド(通常は右上隅)をクリックしconsole、と入力して、管理コンソールを開き、コマンドを入力します。

Update-Package reinstall

これにより、ソリューション内のすべてのプロジェクトのすべてのパッケージが再インストールされます。単一のプロジェクトを指定するには、次のように入力します。

Update-Package reinstall -ProjectName MyProject

もちろん、これは、Restoreボタン(VS2015によって提供されることもある)が使用できない場合にのみ必要です。より便利な更新コマンドがここにリストされ、説明されています:https : //docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


どうもありがとう、私は同様の問題を抱えていました。あなたの手順で問題を解決しました。
どうも

ここでも同じです。機能し、あちこちに書かれたものの束を必要としない唯一のもの
Harvey Lin

ここで最も役立つ答え!
Neo

13

問題がある場合やパッケージが不足している場合は、プロジェクトを右クリックして、「ソリューションのNuGetパッケージを管理...」を選択するだけです。。これをクリックすると画面が開き、「復元」というメニューバーが表示されます。 戻す

それをクリックすると、必要なパッケージが自動的にインストールされます。
これがあなたが探しているものだと思います。これで私の問題は解決しました。


3
しかし、それはその警告バーが表示された場合にのみ役立ちますが、私の場合はそうではありません。
ニコラスピーターセン、2015年

2
パッケージを手動でインストールするステップは、自動復元の要点を完全に逃します。
Quarkly、2015

私はそれは同じ機能で、これはおそらく受け入れ答えであるべきと考えている
user25064

1
ソリューションを右クリックして復元するオプションを確認できました。「ソリューションのNuGetパッケージの管理」の下にありました。私のためにトリックをしました。
ダリル2016年

1
機能しません-ソリューションに不足しているnugetパッケージに関する警告が表示されますが、nugetパッケージを管理すると、それらをダウンロードするオプションが表示されません。ビルドも復元もできません。また、restoreコマンドは何もしません。
Markus


6

nugetパッケージを含むプロジェクトをVx20XXからVS2015にアップグレードする場合、nugetパッケージに問題がある可能性があります。

エラーメッセージの例:このプロジェクトは、このコンピューターにないNuGetパッケージを参照しています。それらをダウンロードするには、NuGet Package Restoreを有効にします。

アップデート2016-02-06:情報へのリンクがありましたが、機能しません。最近の方法で問題が解決したと思います???

MSBuild統合パッケージの復元と自動パッケージ復元を行う小さなプログラムを作成する問題を修正しました

ここからツールの実行ファイルをダウンロードできます。

結果を教えてください:-)!

ここに画像の説明を入力してください

参照としてのコード:

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

    }
}

このプログラムは、私のソリューションで大量のプロジェクトを変換するのにうまくいきました。最新バージョンには「Directory of NuGet Packages」フィールドも含まれていますが、出力に影響を与えていないようです。それは何をするためのものか?
ChristofferÅrstrand16年

すみません、わかりません。ファイルの内容次第ではないかと思います。おそらく、「FromProjectFileRemoveNugetTargets」という関数を追跡して、ファイルが影響を受けるかどうかを確認できますか?その悪い答えで申し訳ありませんが、私がコーディングしたものを覚えていません:-(!2つの異なるコンピューターで2回使用して成功したことを知っています
Eric Ouellet

5

Visual Studioの[参照]に移動して、不足しているパッケージを確認します。VisualでSolutionを右クリックし、ファイルエクスプローラーで開いているフォルダーをクリックします。次に、パッケージフォルダーを開き、不足しているパッケージフォルダーを削除します。ビジュアルスタジオを開き、ソリューションを構築します。不足しているパッケージはすべて復元されます。私が助けたなら、これを答えとしてマークしてください。


4

asp.net 4プロジェクトでは自動復元に移行しているので、これは必要ありません。古いプロジェクトの場合、変換するために少し作業が必要だと思います。

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


あなたはおそらく正しいです。VS2013でまったく同じ手順を使用してプロジェクトを作成しようとしたところ、「Nugetパッケージの復元を有効にする」がありました。リンクありがとうございます。今すぐチェックします。
Dan Beaulieu

4

このアプローチは私にとってうまくいきました:

  • VS2015を閉じる
  • VS2013でソリューションを一時的に開き、nugetパッケージの復元を有効にします右クリックしてにします(私も再構築を行いましたが、必要ないのではないかと思います)。
  • VS2013を閉じる
  • VS2015でソリューションを再開する

これで、VS2015でもnugetパッケージの復元が有効になりました


4

サンプルプロジェクトgplus-quickstart-csharp-masterをビルドしようとしたときに、同じ問題に直面しました

エラーメッセージを詳しく調べて、このエラーを回避することによる回避策を見つけました。うまくいけば、これが役立つでしょう。

  • ソリューションファイルを右クリックし、Windowsエクスプローラーで開きます。
  • NuGet.Config、NuGet.exe、NuGet.targets含む.nu​​getフォルダーをコピーします(ダウンロードリンクか、単に他のプロジェクトからコピーして置き換えます)
  • ソリューションを再構築してください。

楽しい !!


4

イヴァン・ブラネッツのソリューションは本質的に私にとってこれを修正したものですが、いくつかの詳細を共有できます。

私の場合、自動パッケージ復元TFSを使用してVS 2015にいました。これはすべてかなりデフォルトの設定です。

問題は、別の開発者がTFSからソリューションを取得しようとしたときに、一部のパッケージが完全に復元されないことでした。(なぜ、私はまだよくわかりません。)しかし、packagesフォルダーには、参照用のフォルダーとNuGetパッケージが含まれていましたが、展開されていませんでした(たとえば、.dllを含むlibフォルダーが見つからなかったとします)。そこにはありますが、パッケージが復元されるのを妨げるという非常に適切な概念がありませんでした。

参照には解決されていないことを示す黄色の感嘆符が付いているため、これを認識できます。

したがって、パッケージ内のフォルダー削除する解決策は、パッケージの復元のブ​​ロックの問題を削除します。次に、最上位のソリューションレベルで右クリックして、パッケージ復元するオプションを取得できます。これで機能するはずです。


4

VSを閉じます。パッケージフォルダの下のすべてを削除します。ソリューションを再開します。プロジェクトを右クリックし、「nugetパッケージの管理...」を選択します。「Nuget Package Manager」ウィンドウの上部に黄色のバーが表示され、パッケージを復元するように求められます。これでうまくいきました。


3

パッケージマネージャーコンソール(Visual Studio、[ツール]> [NuGetパッケージマネージャー]> [パッケージマネージャーコンソール]):Update-Package -reinstall -ProjectNameコマンドを実行します。ソリューションエクスプローラーに表示される、影響を受けるプロジェクトの名前です。Update-Package -reinstallを単独で使用して、ソリューション内のすべてのパッケージを復元します。Update-Packageを参照してください。必要に応じて、単一のパッケージを再インストールすることもできます。

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


1

パッケージをインストールしようとしているときにプログラムを実行した結果である可能性もあります。組み込みのIISがバックグラウンドで実行されているときにクリックしようとすると、灰色で表示されます。


1

Visual Studio 2017で他の誰かがこの問題を見つけた場合は、フォルダーではなくプロジェクトが.slnファイルで開かれていることを確認してください。フォルダーで開かれている場合、Visual Studioは設定を取得しません。これは、gitにVisual Studioオンラインサービスを使用している場合、デフォルトで発生します。


1

使用しましたmsbuild /t:restore


クレジットとソース:

私の問題はMSBuildにあったので、@ Vinney Kellyのリンクをたどりました自動パッケージ復元へのMSBuild統合ソリューションの移行

そして...

それはチャームのように機能しました=]

MSBuildmsbuild /t:restoreコマンドを使用して、プロジェクトファイルにリストされているパッケージパッケージを復元します(PackageReferenceのみ)。Visualに含まれているNuGet 4.x +およびMSBuild 15.1+でのみ利用可能 Studio 2017にます。nuget restoreそして、dotnet restoreの両方が該当するプロジェクトのために、このコマンドを使用します。


私の場合、/ t:restoreは/ restoreコマンドを使用しなければならなかったプロジェクトをビルドしません
Kishan Vaishnav

1

他のすべてが失敗した場合(またはおそらくその前に)、NuGetがパッケージソースであるかどうかを確認することができます。VS2017をインストールしましたが、デフォルトではありませんでした。ちょっと変だと思った。

  1. ツール-NuGetパッケージマネージャー-パッケージマネージャーの設定
  2. ダイアログの左パネルで[パッケージソース]をクリックします。
  3. 正符号(+)を使用してNuget URLを追加します:https ://api.nuget.org/v3/index.json

0

パッケージフォルダーを閉じてから再度開く(VS2015)ソリューションを使用する必要がありました。移行しておらず、パッケージをソース管理にチェックインしていませんでした。私が言えることは、何かがめちゃくちゃになっていて、これで修正されたことです。


0

私を助けツール >>> Nugetパッケージマネージャ >>> 一般的にはそのオプションがカチカチNugetが不足しているパッケージをダウンロードすることを許可する、自動的にVisual Studioでビルド中にパッケージを欠けをチェック

ここに画像の説明を入力してください


0

以下のための.NETのコアプロジェクト、実行dotnet restoreまたはdotnet buildコマンドでNuGet Package Manager Console(自動的に復元実行されます)

からコンソールを実行できます

ツール> NuGetパッケージマネージャー>パッケージマネージャーコンソール


0

私も同じ問題に直面しています。Visual Studio 2015で作成したMVCプロジェクトを、Visual Studio 2019で作成したソリューションに追加しようとしています。

Visual Studio 2019にはすでに既存のプロジェクトがあるため、VS 2015で作成したこの既存のプロジェクトを追加すると、同じエラーが発生します。ここですべての答えを試しましたが、問題は解決しません。

私がしたことは、ソリューションフォルダーに.nugetフォルダーを置くだけです。もともとフォルダの階層はこれです:

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)

したがって、ソリューションフォルダー自体に.nugetフォルダーを移動すると、問題が修正されました。

    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バージョン16.4.4 .NET Core 3.1を対象としたソリューション

ここで提案されたほとんどすべてのソリューションを試した後、私はVSを閉じました。私がそれを再び開いたとき、数秒後にすべてが正常に戻った...


-4

さらに簡単な方法として、ソリューションに.nugetフォルダーを追加すると、「Restore Nuget Packages」が表示されます(nuget.exeが存在する必要があるかどうかはわかりません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.