0

xunit v 1.9.1パッケージに依存するプロジェクトが 1 つあり、その出力アセンブリが nuget パッケージとして公開されているとします。Install-Packageコマンドを使用してパッケージをインストールすると、依存する xunit パッケージはv1.9.1 ではなく v1.9.2 としてインストールされます。

このケースは他のパッケージでは観察できません。このケースを作る意味はありますか?

この質問では、nuget のバージョンはv2.7です。


[アップデート]

次のコード スニペットは、上記のテスト プロジェクトの nuspec ファイルの一部です。

<dependencies>
  <dependency id="xunit" version="1.9.1" />
  <dependency id="Moq" version="4.0.10827"/>
</dependencies>

テスト プロジェクトをインストールすると、Moq パッケージは上記と同じバージョンとしてインストールされましたが、最新の Moq バージョンはv4.1.1308.2321であり、semver によると変更を壊していません。逆に、xunit パッケージは最新のv 1.9.2としてインストールされました。

4

2 に答える 2

1

これは、パッケージ マニフェストに依存します。packコマンドで から依存関係を検出するように指定すると、バージョンがcsproj1.9.1 として指定されます。ただし、NuGet はこれを必要なバージョンではなく、最小バージョンとして扱います。

http://docs.nuget.org/docs/reference/versioning#Specifying_Version_Ranges_in_.nuspec_Filesを参照してください 。

現在、新しいバージョンは 1.9.2 であるため、セマンティック バージョニングによる重大な変更とは見なされないため、安全にインストールできます。

http://semver.org/を参照

NuGet がバージョンを解決する方法については、このブログ投稿にも注意してください。つまり、指定されたメジャーおよびマイナー バージョンの最新のパッチがインストールされます。

http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html

于 2013-08-27T17:01:48.300 に答える
0

バージョンを明示的に指定しますか? そうでない場合は、1.9.2 がインストールされていることにまったく驚かないでしょう。これが最新であり、1.9.1 と下位互換性があるからです。

これは、一般的にパッケージ管理システムで予期される動作であり、バージョンを明示的に指定しない場合、最新のものを取得しようとします。

プロジェクトの参照エントリでその動作を変更できます (正確なバージョン番号または最小バージョン番号を伝えます)。nuget パッケージのメタデータに依存することもあります。

于 2013-08-27T16:54:23.120 に答える