WPFのXAMLはUIデザインを組むうえで非常に便利だが、複雑なデザインになると階層が深くなって可読性が落ちるのが難点です。そのため、特に使い回さないブロックも User Control として同一アセンブリ内に切り出すのだが、マークアップ時のインテリジェンスは有効なのだがコンパイル時にMC3047エラーが生じるようになった。
調べてみるとGitのIssueに同じ問題を提示している人がいたので覚え書き代わりにメモを残しておくことにする。
要約すると.NET 5から.NET 6になったときに仕様が変わったことが原因らしい。プロジェクトファイルで明示的に指示すればコンパイルできるようになる。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <IncludePackageReferencesDuringMarkupCompilation>false</IncludePackageReferencesDuringMarkupCompilation> </PropertyGroup> </Project>
解決はするが、この設定はGUIでは表示されない。バグっぽい気もするし、User Control は別プロジェクトにすべきという方針なのかもしれない。
0 件のコメント:
コメントを投稿