Visual Studio 2017 (.NET Core) での自動バージョン管理 質問する

Visual Studio 2017 (.NET Core) での自動バージョン管理 質問する

私は、.NETCoreApp 1.1 (Visual Studio 2017) でバージョンを自動的にインクリメントする方法を見つけるのに、数時間の大半を費やしました。

AssemblyInfo.cs がフォルダー内に動的に作成されていることはわかっています。obj/Debug/netcoreapp1.1/

以下の古い方法は受け入れられません:[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.*")]

プロジェクトをパッケージに設定すると、そこでバージョンを設定できますが、これは AssemblyInfo.cs ファイルのビルドに使用されるようです。

私の質問は、.NET Core (または .NETStandard) プロジェクトでバージョンを制御する方法を知っている人はいるかということです。

ベストアンサー1

追加 <Deterministic>False</Deterministic><PropertyGroup>.csproj のセクション内

AssemblyVersion *を動作させるための回避策は、「.Net Core の [AssemblyVersion] のワイルドカードに関する紛らわしいエラー メッセージ #2​​2660」

ワイルドカードは、ビルドが決定論的でない場合にのみ許可されます。これは、.Net Core プロジェクトのデフォルトです。csproj <Deterministic>False</Deterministic> に追加すると、問題は解決します。

.Net Core開発者が決定論的ビルドを有益と考える理由については、http://blog.paranoidcoding.com/2016/04/05/deterministic-builds-in-roslyn.htmlそしてコンパイラは決定論的であるべき: 同じ入力は同じ出力を生成する #372

ただし、TeamCity、TFS、またはその他のCI/CDツールを使用している場合は、バージョン番号をそれらによって制御および増分し、ビルドにパラメータとして渡す方がよいでしょう(他の回答で提案されているように)。例:

msbuild /t:build /p:Version=YourVersionNumber /p:AssemblyVersion=YourVersionNumber

パッケージ番号NuGetパッケージの場合

msbuild /t:pack /p:Version=YourVersionNumber   

おすすめ記事