33

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

これらの2つのバージョン番号の関係はどのようなものであり、慣例はありますか?

4

2 に答える 2

22

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

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

このアプローチには少し懸念がありAssemblyVersionます。さまざまなベータ版のイテレーションと最終的な本番環境のイテレーションで同じままになると予想されますAssemblyInformationalVersion。つまり、動作が異なる可能性のあるDLLのいくつかの異なるバージョンを公開することができます。または間違っていますが、CLRに関する限り、すべて同じです(CLRは)のみを考慮しAssemblyVersionます。ただし、実際には、これは頻繁に発生し(上記のAutoFacパッケージを含む)、問題は発生しないようです。

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

于 2013-08-14T17:13:29.707 に答える
10

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

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

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

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

于 2012-08-15T13:45:11.903 に答える