nugetパッケージを作成する場合、nugetパッケージのファイル名のバージョンは、WebアプリケーションプロジェクトのAssemblyInfoファイルから取得されているようです。また、nuspecファイル内にバージョン属性を作成しました。
これらの2つのバージョン番号の関係はどのようなものであり、慣例はありますか?
nugetパッケージを作成する場合、nugetパッケージのファイル名のバージョンは、WebアプリケーションプロジェクトのAssemblyInfoファイルから取得されているようです。また、nuspecファイル内にバージョン属性を作成しました。
これらの2つのバージョン番号の関係はどのようなものであり、慣例はありますか?
規則、NuGetソフトウェア自体、およびギャラリー内のパッケージに適用されるセマンティクスに関しては、SemVerで説明されているようにバージョン管理を行います。具体的には、nuspecのバージョン番号に「-beta.4」などの接尾辞を付けることで、ベータバージョンを指定できます。たとえば、ギャラリーにAutoFacの最新バージョンがどのように表示されるかを確認し、古いリリースがどのように表示されるかを比較します(「これは利用可能なAutofacの最新バージョンではありません」というテキストに注意してください。 編集:ギャラリーは特別なメッセージを提供しなくなったようです。非現在のバージョンの場合)および古いプレリリースバージョン(「これはAutofacのプレリリースバージョンです。」というテキストを含む)。
残念ながら、AssemblyVersion
inにAssemblyInfo.cs
は文字やハイフンが含まれていない可能性があるため、このように使用することはできません。ただし、AssemblyInformationalVersion
文字とハイフンが含まれている場合があります。指定した場合、NuGetはnuspecファイルAssemblyVersion
のトークンを置き換える代わりにそれを使用します。$version$
さらに、AssemblyInformationalVersion
(WindowsエクスプローラーでDLLの詳細を確認する場合は「製品バージョン」とも呼ばれます)、少なくとも私にとっては、NuGetのバージョンが一致する必要があるものをより適切に表します。
このアプローチには少し懸念がありAssemblyVersion
ます。さまざまなベータ版のイテレーションと最終的な本番環境のイテレーションで同じままになると予想されますAssemblyInformationalVersion
。つまり、動作が異なる可能性のあるDLLのいくつかの異なるバージョンを公開することができます。または間違っていますが、CLRに関する限り、すべて同じです(CLRは)のみを考慮しAssemblyVersion
ます。ただし、実際には、これは頻繁に発生し(上記のAutoFacパッケージを含む)、問題は発生しないようです。
AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?に対する2つの優れた投票数の多い回答を参照してください。AssemblyInformationalVersion
と友達の詳細については。
アセンブリバージョンとnugetパッケージバージョンの間に関係がある必要はありません。慣例により、多くのメンテナは両方に同じ番号を使用します。
nuget.exe
nuspecがない場合、またはnuget.exe spec
トークン化されたnuspecファイルを作成するために使用する場合は、同じ番号を使用するための規則もデフォルトです。ただし、$ version $トークンを値に置き換えると、その値が優先され、パッケージファイル名で使用されます。
コマンドラインでバージョンを設定することもできます。これは、上記のすべてよりも優先されます。
Xavierのブログの詳細: NuGet $version$トークンの説明