3桁のみのパッケージバージョンを生成する必要がありnuget pack
ます(セマンティックバージョニングを行いたい)が、AssemblyVersion
属性が「1.0.0」に設定されているcsprojで呼び出すと、結果のnupkgファイルはバージョン「1.0」で終了します.0.0" がメタデータ (およびファイル名) に含まれています。AssemblyVersion
コマンド ライン ツールが、属性で指定された桁数を受け入れないのはなぜですか?
nuget spec
これは、このようなスタブ nuspec ファイルを生成する csproj ファイルに対する呼び出しから開始しました(実際には、プレースホルダー値を持つタグがさらに含まれていますが、必要ないため削除しました)。
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Release notes.</releaseNotes>
<copyright>Copyright 2015</copyright>
</metadata>
</package>
この nuspec ファイルを TFS で csproj ファイルと同じフォルダーにチェックインすると、次のように pack を呼び出すことができます。
nuget pack MyProject.csproj
プロジェクトの AssemblyInfo.cs ファイルには、バージョンを明示的に設定する行が含まれています。
[assembly: AssemblyVersion("1.0.0")]
ツールがアセンブリ バージョンを取得するときに 4 桁を使用しているという事実を除いて、すべて問題なく動作しています。ファイルエクスプローラーでdllを右クリックして詳細に移動すると、Windowsでもバージョンが3桁しか表示されません。NuGet が 4 桁を使用するのはなぜですか? 私はおそらく明らかな何かを見逃していますか?
nuspec でバージョンをハードコーディングすることは、明らかに理想的ではありません。これは、バージョン番号が常に同じであることを意図しているにもかかわらず、2 つの異なる場所でバージョン番号を維持する必要があるためです。$version$
つまり、これは、NuGet 自体がプロジェクトから抽出する方法を知っている特別なプレースホルダー値の背後にある考え方であるはずでした。