午後わてんのブログ

ベランダ菜園とWindows用アプリ作成(WPFとC#)

.NET Core、WPF、ユーザーコントロールのDLLをアプリで使うまでの手順メモ

この前作ったユーザーコントロールを実際に使うまで

ユーザーコントロールのdllファイル
ControlLibraryCore20200620.7z
これを適当なところに展開しておいて

新しいプロジェクトの作成
f:id:gogowaten:20200707100243p:plain
テンプレートの.NET CoreのWPFで作成
今回のユーザーコントロールは.NET Coreで作ったので.NET Frameworkでは動かない

f:id:gogowaten:20200707100350p:plain
名前は20200707_dll使用テストCoreCにした

参照の追加
f:id:gogowaten:20200707100438p:plain
ソリューションエクスプローラーの依存関係の右クリックメニュー、もしくは

f:id:gogowaten:20200707100631p:plain
メニューのプロジェクト→COM 参照の追加

f:id:gogowaten:20200707100725p:plain
参照マネージャーの参照ボタンから

f:id:gogowaten:20200707100810p:plain
さっき展開しておいたdllファイルを指定選択して、追加ボタン

f:id:gogowaten:20200707100852p:plain
こうなって、OK押して

f:id:gogowaten:20200707100912p:plain
ソリューションエクスプローラーで追加されたのが確認できた

XAMLに参照の追加
f:id:gogowaten:20200707101144p:plain
6と7行目の間に追加しているところ
名前は「uc」にした
xmlns:uc="clr-namespace:Cまで入力したら候補に出てきた

f:id:gogowaten:20200707101408p:plain
追加完了

コントロールの追加
f:id:gogowaten:20200707101505p:plain
「<uc」で候補に出てくる

f:id:gogowaten:20200707101619p:plain
追加したけど最初だけは表示されないのでビルドする

f:id:gogowaten:20200707101710p:plain
Ctrl+Bとかでビルド実行

f:id:gogowaten:20200707101734p:plain
表示された、けどウィンドウいっぱいに表示されてよくわからん

f:id:gogowaten:20200707101905p:plain
StackPanelに入れて普通に表示された
これでいいはずなのでデバッグ開始

f:id:gogowaten:20200707102110p:plain
表示された!

f:id:gogowaten:20200707102129p:plain
動いた!

プロパティの確認
f:id:gogowaten:20200707102259p:plain
追加したプロパティの名前はすべて「My」で始まる

f:id:gogowaten:20200707102510p:plain
値と書式を設定したところ
デザイン画面にも反映されている

f:id:gogowaten:20200707102623p:plain
デバッグ開始でも期待通り表示された!

プロパティ名 既定値 説明
MyValue decimal 0m
MyText String "" MyValueを書式に従ってToStringしたもの、表示用
MyMinValue decimal decimal.MinValue 最小値
MyMaxValue decimal decimal.MaxValue 最大値
MySmallChange decimal 1m 小変更値、ボタン押したときの変化値
MyLargeChange decimal 10m 大変更値、ボタンの上でホイール回したときの変化値
MyStringFormat String "" 書式、MyValue.ToString(書式)で使う

f:id:gogowaten:20200707104639g:plain
動作確認

ここまでは.NET Core


.NET Frameworkでは動かなかった
f:id:gogowaten:20200707104955p:plain
WPF アプリ(.NET Framework)で新しいプロジェクトの作成

f:id:gogowaten:20200707105111p:plain
.NET Coreのときと同じように参照の追加して

f:id:gogowaten:20200707105147p:plain
普通に追加できた

f:id:gogowaten:20200707105306p:plain
XAMLへの追加、ここまでは変わりなくできたけど

f:id:gogowaten:20200707105345p:plain
実際にコントロールを追加しところエラー表示

f:id:gogowaten:20200707105541p:plain
試しにビルドしてみると

f:id:gogowaten:20200707105604p:plain
ビルド自体はできたようだけど、エラー表示はそのまま
今度はデバッグ開始してみると

f:id:gogowaten:20200707105934p:plain
途中でエラーになった

f:id:gogowaten:20200707110532p:plain
やっぱりCoreで作ったdllは、Frameworkでは使えないみたいねえ
逆にFrameworkで作ったdllはCoreでも使えるはずだから、Frameworkで作ったほうが良かったかも



関連記事
次回は5日後
gogowaten.hatenablog.com

前回は昨日
GitHubのTagとRelease機能を使ってみた - 午後わてんのブログ
gogowaten.hatenablog.com

2年前
ユーザーコントロール(WPF)のDLLを作ってアプリで使うまでの手順メモ - 午後わてんのブログ
gogowaten.hatenablog.com
このときはXAMLへの追加はツールボックスへ追加していたんだなあ