私は、.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] のワイルドカードに関する紛らわしいエラー メッセージ #22660」
ワイルドカードは、ビルドが決定論的でない場合にのみ許可されます。これは、.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