以前に .NET Core 3 の WPF でデザイナを使うために、XAML ファイルを .NetFramework プロジェクトで開くという力強い記事を書きました。 ViewModel は .NET Standard クラスライブラリを作るとスマートというスマートな記事も書きました。 その続編です。
■ .NET Core プロジェクトに ViewModel を追加したい。
.NET Core と .NET Standard では、使える API に差がありますし、あまりないと思いますが場合によっては手間をかけずに一つの .exe として出力したいなど、特殊な要求もあるかもしれません。
そこで、SharedProject(共有プロジェクト)です。
■ 共有プロジェクトの作成
- 共有プロジェクトは
共有プロジェクト
で作成します。
- デザイナで SharedProject に作った ViewModel が見えています。
■ ViewModel より先の Model など
しかし、完璧に見えたこの方法もここで大きな問題に当たります。
Model クラスを .NET Core プロジェクトに作った場合、.NET Framework プロジェクトでエラーが出てしまいます。Model クラスも SharedProject に置けば解決しますが、そうするのならばできれば .NET Standard クラスライブラリで作りたいところです。
■ プリプロセッサ ディレクティブ
そこで、プリプロセッサ ディレクティブです。
ViewModel の中の Model に依存する部分を .NET Core プロジェクトでの有効にしてしまいましょう。
■ 動作
デザイナも使えるし、ViewModel も使えるしいい感じにできました。やはり SharedProject ですね。