6

ソリューションでNuGetパッケージの復元を有効にしました。nuget.exeバージョン2.0.30828.5を使用しています。通常のパブリックフィードにあるパッケージの場合、NuGetパッケージの復元は正常に機能します。つまり、「Packages」ディレクトリに何も存在せず、ローカルのNuGetキャッシュ(C:\ Users \ {username} \ AppData \ Local \ NuGet \ Cache)がクリアされている場合、NPRは完全に機能します。

ただし、カスタムフィード(カスタムフィードには基本認証があります)のパッケージにNPRを使用しようとすると、次のようになります。

EXEC : warning : Unable to prompt for credentials. Consult NuGet's help documentation for ways to specify credentials.
c:\<localpath>\.nuget\nuget.targets(80,9): error : Unable to find version '2.0.1.0' of package '<packageName>'.
c:\<localpath>\.nuget\nuget.targets(80,9): error MSB3073: The command ""c:\<localpath>\.nuget\nuget.exe" install "c:\<localpath>\packages.config" -source ""  -RequireConsent -o "c:\<localpath>\packages"" exited with code 1.

NuGetコードを確認し、nuget.exeを逆コンパイルして、「資格情報の入力を求めることができません。資格情報を指定する方法については、NuGetのヘルプドキュメントを参照してください」という文字列を見つけると、そこに表示されますが、率直に言って、誰であるかを特定できません。そのエラーメッセージを利用します。

(NuGetUIまたはパッケージマネージャーコンソールから)パッケージを追加すると、資格情報の入力を求められ、正常に機能します。これは、パッケージの復元でのみ問題になります。

このコマンドを実行してみました:

NuGet.exe source Update -Name {feedname} -UserName {myusername} -Password {mypassword}

しかし、同じ結果が得られます。

NuGetパッケージ復元の基本認証を使用してカスタムNuGetフィードにクレデンシャルを指定する方法を知っている人はいますか?

2012年9月18日更新

この問題に関する最新情報があります。nuget.exe source Update ...コマンドを実行すると、ソリューションのローカルの.nugetフォルダーにあるNuGet.configファイルにセクションが追加されていることがわかりました。次に、ビルドの実行中にprocmon.exeを実行すると、このファイルが表示されていないことに気付きました。代わりに、「C:\ Users {username} \ AppData \ Roaming\NuGet」ディレクトリでNuGet.configファイルを探していました。次に、セクションをローカルのNuGet.configファイルから\ AppData \ Roaming \ NuGetディレクトリのNuGet.configファイルにコピーして貼り付けたところ、機能しました。

だから...問題は、このプロセスの正しいベストプラクティスは何ですか?

4

1 に答える 1

6

私はこれを今働いています。これは、それを機能させるために私がしたことです。まず、次のコマンドが表示されます。

NuGet.exe source Update -Name {feedname} -UserName {myusername} -Password {mypassword}

それについて行く正しい方法です。注意点として、"nuget.exe source Update" コマンドを実行すると、nuget.exe は、実行中の nuget.exe と同じディレクトリに NuGet.config ファイルが存在する場合、そのファイルを探します。存在する場合は、そこに変更を保存します。存在しない場合は、%AppData%\NuGet ディレクトリにある NuGet.config ファイルに変更が保存されます。

追加の注意点は、Package Restore がビルドの一部として実行されるとき、%AppData%\NuGet ディレクトリの NuGet.config ファイルのみを調べ、nuget の同じディレクトリにある NuGet.config ファイルを無視することです。 .exe が実行されています (これがバグなのか意図的なものなのかはわかりません)。

そのため、NuGet.config ファイルを含まないディレクトリにある nuget.exe を使用してこのコマンドを実行し、%AppData%\NuGet ディレクトリの正しい NuGet.config ファイルに変更が保存されるようにする必要があります。

于 2012-09-18T17:55:38.373 に答える