web-dev-qa-db-ja.com

NuSpecバージョン属性とアセンブリバージョン

Nugetパッケージを作成するとき、nugetパッケージのファイル名のバージョンは、WebアプリケーションプロジェクトのAssemblyInfoファイルから取得されているようです。また、nuspecファイル内にバージョン属性を作成しました。

これらの2つのバージョン番号の関係は何ですか?また、添付されている規則はありますか?

30
BjartN

convention、NuGetソフトウェア自体、およびギャラリー内のパッケージに適用されるセマンティクスに関しては、 SemVer で説明されているようにバージョン管理を行います。具体的には、nuspecのバージョン番号に「-beta.4」などの接尾辞を付けることで、ベータバージョンを指定できます。たとえば、ギャラリーの表示方法 AutoFacの最新バージョン を確認し、表示方法を比較してください 古いリリース「これは利用可能なAutofacの最新バージョンではありません」というテキストに注意してください。編集:ギャラリーは、現在以外のバージョンに対して特別なメッセージを提供しなくなったようです)および 古いプレリリースバージョン (「これはAutofacのプレリリースバージョンです。」というテキスト付き)。

残念ながら、AssemblyInfo.csAssemblyVersionには文字やハイフンが含まれていない可能性があるため、この方法で使用することはできません。ただし、AssemblyInformationalVersionには文字とハイフンが含まれている場合があります。指定すると、NuGetはAssemblyVersionの代わりにそれを使用してnuspecファイルの$version$トークンを置き換えます。さらに、AssemblyInformationalVersion(WindowsエクスプローラーでDLLの詳細を確認する場合は「製品バージョン」とも呼ばれます)は、少なくとも私にとっては、NuGetのバージョンが一致する必要があるものをより適切に表します。

このアプローチには、さまざまなベータ版の反復とAssemblyVersionの最終的な本番環境の反復を通じて、AssemblyInformationalVersionを同じままにしておくことが期待されているという点で、少し懸念があります。つまり、いくつかのことを許可しています。私のDLLの異なるバージョンは、異なる動作または誤った動作をする可能性がありますが、CLRに関する限りすべて同じです(CLRonlyAssemblyVersionを気にします。ただし、実際には、これは頻繁に発生し(上記のAutoFacパッケージを含む)、問題は発生しないようです。

AssemblyInformationalVersionとその仲間の詳細については、 AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか? に対する2つの優れた投票数の多い回答を参照してください。

20
mo.

アセンブリバージョンとnugetパッケージバージョンの間に関係がある必要はありません。慣例により、多くのメンテナは両方に同じ番号を使用します。

同じ番号を使用するための規則は、nuspecがない場合、またはnuget.exeを使用してトークン化されたnuspecファイルを作成する場合のデフォルトのnuget.exe specでもあります。ただし、$ version $トークンを値に置き換えると、その値が優先され、パッケージファイル名で使用されます。

コマンドラインでバージョンを設定することもできます。これは、上記のすべてよりも優先されます。

Xavierのブログの詳細: NuGet $ version $トークンの説明

9
Jim Counts