今日、パッケージをインストールするときにNuGetの奇妙な動作に直面しました。
簡単な説明:ビルドスクリプトの結果として、NuGetパッケージがあります。毎回バージョンを変更するわけではないので、ビルドごとにが生成されMyPackage.1.0.0.nupkgます。ビルドの最後のステップとして、ローカルネットワーク内に展開されているNuGetサーバーにパッケージをプッシュします。
今、別のマシンで実行nuget install MyPackage -Source http://myserver/nugetします。これにより、明らかにNuGetパッケージがインストールされます。
MyPackageこの問題は、バージョンの-まだバージョンの別のアップデートをプッシュすると発生し1.0.0ます。クライアントマシンに再インストールしようとすると、以前のバージョンのパッケージが表示されます。
責任があるのはローカルキャッシュであることがわかりました。パッケージがインストールされている場合はローカルキャッシュに入り、次に同じバージョンのパッケージがインストールされると、キャッシュから取得されます。けっこうだ!
ただし、その一方で、コマンドの-NoCacheオプションがありnuget install、ローカルキャッシュを無視することを期待しています。
しかし、これは真実ではありません。で初めて実行すると-NoCache、キャッシュが更新され、真の最新バージョンがインストールされます。ただし、次回、-NoCacheオプションを使用しても、パッケージがキャッシュから取得されます。
期待されますか?バージョンが変更されていないためですか?
念のため、すべてのNuGet操作はNuGet.exePowerShellセッションを使用して実行されます。
更新:キャッシュの有効期限によってのみ説明できる奇妙な動作を観察します。パッケージがキャッシュされると、しばらく経つまでnuget install、キャッシュからパッケージをプルするための後続のすべての呼び出し。正確な期間はわかりませんでしたが、間違いなく1時間以上です。この後、キャッシュ内のパッケージを更新すると、状況は同じになります...nuget install