(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が追加される
なぜ?
これは、仕様であとからアップデートしろってことなのか?
それとも、パッケージを作る時のnuspecファイルを作り間違えてるのか?
どっちでもなくVS2015のNugetパッケージマネージャーから追加するときのオプションで依存しているパッケージの追加バージョンを古いものを指定するとなっていました。
依存関係の動作が”最低”となっていると古いものが追加されるらしい
最低 |
最高-パッチ |
最高-マイナー |
最高 |
とあるがどうなるかやってみた
依存関係の動作:最高-パッチ
NinoLogLib 2.0.0を依存関係”最高-パッチ”で追加
NinoInterface 1.0.1
NinoLogLib 2.0.0
依存関係の動作:最高-マイナー
NinoLogLib 2.0.0を依存関係”最高-マイナー”で追加
NinoInterface 1.1.0
NinoLogLib 2.0.0
依存関係の動作:最高
NinoLogLib 2.0.0を依存関係”最高”で追加
NinoInterface 2.0.0
NinoLogLib 2.0.0
(∩´∀`)∩ワーイ!!
結構ハマりかけたけど新たな発見
詳細はリファレンスに書いてました
Package Manager Ui