1. ホーム
  2. c#

[解決済み】Visual StudioでNuGetパッケージのリストアを有効にするにはどうすればよいですか?

2022-04-01 02:12:52

質問

があります。 類似の投稿 のスタックにありますが、私がVisual Studio 2015を使用しているためか、私の問題には役に立ちません。

VS2015 で "Enable NuGet Package Restore" オプションを表示させるにはどうすればよいですか?

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

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

解決方法は?

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

  1. を削除します。 '.nuget' ソリューションから沿ったソリューションディレクトリ
  2. への参照をすべて削除します。 nuget.targets を使用します。 .csproj または .vbproj ファイルです。公式にはサポートされていませんが、ドキュメントにリンクされている PowerShellスクリプト もし、クリーンアップが必要なプロジェクトがたくさんあるのなら。私は手作業で編集したので、この方法に関する私の経験についてのフィードバックはできません。

ファイルを手作業で編集する場合、以下のようなことが考えられます。

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