22

改善された自動パッケージ復元プロセスを使用して、不足している NuGet パッケージを復元しています。

ビルド時に、パッケージ ソースからのダウンロードが開始されると、[復元] ダイアログがポップアップします。これは正しいです。

復元ダイアログ

パッケージが packages フォルダーに復元されていることがわかりますが、すべての復元が完了していません。次の種類のエラーが発生します。

Error   10  NuGet Package restore failed for project MyProject: System.InvalidOperationException: Unable to find version '6.0.1' of package 'Newtonsoft.Json'.
   at NuGet.PackageHelper.ResolvePackage(IPackageRepository repository, String packageId, SemanticVersion version)
   at NuGet.VsEvents.PackageRestorer.RestorePackage(PackageReference package)
   at NuGet.VsEvents.PackageRestorer.RestorePackages(String packageReferenceFileFullPath, IFileSystem fileSystem)
   at NuGet.VsEvents.PackageRestorer.PackageRestore(ProjectPackageReferenceFile projectPackageReferenceFile).

これは、複数のパッケージ ソースがあるためでしょうか?

ここに画像の説明を入力

たとえば、NuGet は、nuget.orgソースではなく、プライベート パッケージ ソースで 'Newtonsoft.Json' を検索している可能性があります。

.nuget/NuGet.configファイル:

<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="private" value="http://privatePackageSource.com/nuget" />
  </packageSources>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

Visual Studio 2013 と NuGet 2.8.5 を使用しています。

編集:

Fiddler を使用して、NuGet が実際に間違ったソースでパッケージを検索していることを確認しました。私のプライベートリポジトリから次のパッケージをリクエストしています。

この投稿も読んで、activePackageSourceセクションをNuGet.configファイルに追加しました。

<configuration>
  <packageSources>
    <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
    <add key="private" value="http://privatePackageSource.com/nuget" />
  </packageSources>
  <activePackageSource>
    <add key="All" value="(Aggregate source)" />
  </activePackageSource>
  <solution>
    <add key="disableSourceControlIntegration" value="true" />
  </solution>
</configuration>

しかし、それは問題を解決しません。

4

3 に答える 3

18

実際、グローバル NuGet.config ファイル (C:\Users\UserName\AppData\Roaming\NuGet\NuGet.config) によって上書きされていました。Visual Studio を再起動すると、クリアされたようです。

于 2014-10-10T05:30:53.707 に答える
11

何らかの理由で、NuGet.config で nuget.org キーが無効になっていました。NuGet パッケージ マネージャーの設定を確認したところ、すべてが正しいものでした。VS2013を再起動したところ、うまくいきました。動作する NuGet.config は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
 <configuration>
  <solution>
   <add key="disableSourceControlIntegration" value="true" />
  </solution>
 <packageRestore>
  <add key="enabled" value="True" />
  <add key="automatic" value="True" />
 </packageRestore>
 <packageSources>
   <add key="nuget.org" value="https://www.nuget.org/api/v2/" />
 </packageSources>
 <disabledPackageSources />
 <activePackageSource>
   <add key="Microsoft and .NET" value="https://www.nuget.org/api/v2/curated-feeds/microsoftdotnet/" />
 </activePackageSource>
</configuration>
于 2015-03-04T20:21:18.480 に答える