問題 §
UWPプロジェクトが不明の内部エラーでビルドできない。発生するのはReleaseビルドのみである。ターゲットバージョン、最小バージョン、共にビルド16299である。エラーの種類は一定しない。
- アセンブリ 'System.Reflection.Emit.ILGeneration' でメソッド 'ILGenerator.Emit(OpCode)' が欠落しているため、メソッド 'DynamicObjectTypeBuilder.EmitOffsetPlusReadSize(ILGenerator, ArgumentField, ArgumentField)' は常に例外をスローします。欠落しているアセンブリがあったか、より新しい Windows SDK リリースと依存関係があった可能性があります。
- ILT0040: Type 'System.Runtime.InteropServices.SpinWaitExtensions' was not found. Check that your build system references Windows.winmd, references .NET for Windows Store Apps, and is configured to use .NET Native.
- Internal compiler error: 型 'Microsoft.Cci.DummyModuleReference' のオブジェクトを型 'Microsoft.Cci.IAssemblyReference' にキャストできません。
- etc
新規作成したプロジェクトでは発生しない。
原因 §
不明
解決 §
最小バージョンをビルド16299ではなく、それより小さいバージョンに変更する。(ビルド15063等)。ただし、最小バージョンとしてビルド16299を要求するnugetパッケージとは共存しない。
補足1 §
Visual Studioを普通に入れるとWindows SDK 10.0.16299.15が入るようだが、ネット上にはQFE Build: 10.0.16299.91も存在する。しかし、これに入れ換えても問題は解決しない。
補足2 §
ネットを検索すると類似のエラーに遭遇した話がいくらでも出てくるが、それらが対策として書いている様々な方法を試したが、キャッシュクリアや作業ファイルの削除等、それらでは解決できなかった。
感想 §
「暴れん坊将軍16299が、またしても大暴れ……という感じだな」
「何か他にも問題が起きている?」
「実はこれだけでなはなく、そもそもアップデートできないnugetパッケージが2つほど出てしまっている」
「アップデートできないってどういうことだよ」
「アップデートボタンを押しても途中で不明のエラー等でアップデートされない」
「動かないの?」
「そもそもインストールされない」
「えー」
「なぜこんなことになるんだい?」
「品質保証よりも素早いリリースサイクルを優先した当然の帰結だろう。nugetのようなソフトもその当然の帰結として存在する」
「えー。なぜリリースサイクルが優先される」
「そうしないとライバルに負けるし、人気が取れるからだ」
「ライバルの品質はいいのかよ」
「それもダメだろうな」
「えー。それじゃ利用者は何を使ったらいいんだよ」
「利用者とは、実際には使っていない人達があれこれ言って作る世論の被害者の別名だろう。たぶんな」