[C#] Visual Studio 2019で CS8357コードのエラーが発生した時に対処法


はじめに

Assembly情報のAssemblyVersionにワイルドカードを使用した場合、下記の様なエラーが発生した。

 

指定されたバージョン文字列には、決定性と互換性のないワイルドカードが含まれています。バージョン文字列からワイルドカードを削除するか、このコンパイルの決定性を無効にしてください。

英文では下記の通り

The specifed version string contains wildcards, which are not compatible with determinism. Either remove wildcards from the version string, or disable determinism for this compilation

いままでは、普通に利用できていたのですが、急遽できなくなりました。

今回エラーが発生した環境は下記の通りです。

製品 Microsoft Visual Studio Professional 2019
Version 16.5.4
.NET Framework 4.7.03190

 

どのバージョンからか分かりませんが、仕様変更があったようです。

 

対処策

1) .csprojファイルを開きます。

2) 下記の「Deterministic」要素の値をtrueからfalseに切り替え保存します。

<PropertyGroup>
    ・・・中略
    <AutoGenerateBindingRedirects>true<AutoGenerateBindingRedirects>
    <Deterministic>false</Deterministic>
</PropertyGroup>

3) ソリューションのプロジェクトが「アンロード」されていますので、「再読み込み」などで再度プロジェクトを読み込みます。

4) エラーが消えていることが分かります。

 

最後に

アップデートには気をつけた方が良いですね。

UIで設定を変更できる様にしてもらいたいところです。

 

参考