読者です 読者をやめる 読者になる 読者になる

Nugetパッケージマネージャーのインストールと更新オプションでハマった件

C# VisualStudio Nuget

(nuget package manager install option dependency)
VS2015が出て半年が経ったこの頃、1年ほど前から社内でNugetの使用が検討&検証されていましたが本格導入が決まり、自社製の共通ライブラリからNugetpackage作成 → パッケージ参照に変更をやっていると、依存関係で古いバージョンがインストールされる自体が発生したので事象まとめ

作成したパッケージ

パッケージ名 最新バージョン 過去バージョン 依存関係
NinoInterface 2.0.0 2.0.0
1.1.0
1.0.1
1.0.0
なし
NinoLogLib 2.0.0 2.0.0
1.0.0
NinoInterface

事象

NinoLogLib(2.0.0)を追加した時に、依存関係に設定されているNinoInterfaceを追加するが、最新の2.0.0ではなく1.0.0が追加される

f:id:orzmakoto:20160218194932p:plain


なぜ?
これは、仕様であとからアップデートしろってことなのか?
それとも、パッケージを作る時のnuspecファイルを作り間違えてるのか?


どっちでもなくVS2015のNugetパッケージマネージャーから追加するときのオプションで依存しているパッケージの追加バージョンを古いものを指定するとなっていました。

f:id:orzmakoto:20160218195132p:plain
依存関係の動作が”最低”となっていると古いものが追加されるらしい

最低
最高-パッチ
最高-マイナー
最高

とあるがどうなるかやってみた

依存関係の動作:最高-パッチ

NinoLogLib 2.0.0を依存関係”最高-パッチ”で追加
f:id:orzmakoto:20160218195321p:plain

NinoInterface 1.0.1
NinoLogLib 2.0.0

依存関係の動作:最高-マイナー

NinoLogLib 2.0.0を依存関係”最高-マイナー”で追加
f:id:orzmakoto:20160218195509p:plain

NinoInterface 1.1.0
NinoLogLib 2.0.0

依存関係の動作:最高

NinoLogLib 2.0.0を依存関係”最高”で追加
f:id:orzmakoto:20160218195613p:plain

NinoInterface 2.0.0
NinoLogLib 2.0.0

(∩´∀`)∩ワーイ!!
結構ハマりかけたけど新たな発見

詳細はリファレンスに書いてました
Package Manager Ui