1. ホーム
  2. .net

dotnet packでパッケージのバージョンは常に1.0.0です。

2023-08-13 18:44:56

質問

TLDR:どこが dotnet pack は、アセンブリのためのnugetパッケージを作成するときに、バージョン情報を引っ張ってくるのですか?

.NET 4.6.1 プロジェクトから .NET Core プロジェクトへ移行したライブラリがあり、このプロジェクトでは project.json . この期間の CI (TFS 2015 vnext を使用) では、バージョン番号を取得して、project.json ファイルのバージョン番号を新しいバージョンに置き換えることにしていました。このとき dotnet pack コマンドはうまくバージョンをピックアップし、更新されたバージョン番号の新しいパッケージを作成します。

先週、私は TFS 2015 から TFS 2017 にアップグレードしました。 project.json が更新された .csproj ファイルに置き換えられていることがわかりました。 私はCIを更新しました。 私のCI中 - 私は私を更新します。 /Properties/AssemblyInfo.cs ファイルを置き換えて AssemblyVersion タグを現在のビルドのバージョンに置き換えます。 それからソリューションをビルドします - うまくビルドできました。 そして、ソリューションをパッケージ化します。

しかし AssemblyVersionAssemblyFileVersion に設定されています。 AssemblyInfo.cs に正しいビルド番号が設定されます。 dotnet pack が生成する .nupkg ファイルは、まだ *.1.0.0.nupkg .

何が足りないのでしょうか?

以下は私のpackコマンドです。

dotnet pack $projectFile -o $currentDirectory

どのように解決するのですか?

を使用する場合 dotnet pack を使うと、バージョンはプロジェクトの定義から取得されます(以前は project.json であったものが、現在は *.csproj ) ではなく AssemblyInfo.cs . つまり、新しいワークフローは project.json .

から project.json から csproj への移行ドキュメントより を使えば VersionPrefixVersionSuffix のプロパティがあります。

の前に。

{
  "version": "1.0.0-alpha-*"
}

今すぐ

<PropertyGroup>
  <VersionPrefix>1.0.0</VersionPrefix>
  <VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>

また、単一の Version プロパティを使用することもできますが、docs はこの場合、パッケージング中にバージョン設定を上書きする可能性があることを警告しています。

<PropertyGroup>
  <Version>1.0.0-alpha</Version>
</PropertyGroup>