午後わてんのブログ

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

dllファイル(クラスライブラリ.NET framework)の作り方と使うまでの手順メモ

 
Visual Studioでdll(クラスライブラリ)の作り方と使うまでのメモ
 
作るdllの機能は
  • 2つの整数を足す
  • 2つの整数をかける
 
 
デバッグ用(DLLの確認用)のプロジェクトとDLL用のプロジェクトを用意する
 
 
デバッグ用のプロジェクト作成

f:id:gogowaten:20191211164930p:plain

新しいプロジェクト作成
コンソールアプリでもいいんだろうけど、いつものWPFで作成
名前は「20180218_dll_test」にした
ファイルの名前はMainWindow.xaml.csになる
 
ソリューションにDLLのプロジェクトを追加する

f:id:gogowaten:20191211165009p:plain

ソリューションエクスプローラーの一番上の項目を右クリック
追加→新しいプロジェクト
 
 

f:id:gogowaten:20191211165025p:plain

クラスライブラリ(.NET framework)を選択
名前は初期値のClassLibrary1のままにした
 
追加したところ

f:id:gogowaten:20191211165037p:plain

プロジェクトの名前がnamespaceになっている
ファイル名はClass1になっている
クラスの名前はファイル名と同じClass1ってのが用意されている、ここに書いていく
 
 
デバッグ(確認)用のプロジェクトからDLL用のプロジェクトにアクセスできるように
参照の追加をする

f:id:gogowaten:20191211165050p:plain

ソリューションエクスプローラーで
デバッグ(確認)用のプロジェクトの参照の右クリックメニューから
参照の追加
 

f:id:gogowaten:20191211165104p:plain

左側の項目からプロジェクトを選ぶと
ソリューションに追加したプロジェクトが表示されるみたい
 

f:id:gogowaten:20191211165115p:plain

チェックを入れてok
これで追加される
 

f:id:gogowaten:20191211165125p:plain

参照のところにClassLibrary1が表示された
これでこのデバッグ(確認)用のMainWindowとDLLが繋がった
 
 
DLLの機能を書いていく
イメージ 9
足し算と掛け算の機能を追加したところ
足し算のDllTestはstatic
掛け算のDllTest2は普通の関数にした
 
 
クラスの名前変更してみる
イメージ 11
名前の右クリックから名前の変更
 
イメージ 12
MyTestClassにしてみた
 
 
確認用のMainWindowに戻って
Dllの機能が使えるか確認してみる
そのまえにネームスペース?を追加
イメージ 10
using ClassLibrary1;を追加
 
確認
イメージ 13
myまで打ったら入力候補にMyTestClassがでてきた!
 
イメージ 14
足し算のDllTestが入力候補にでてきた
staticを指定してあるとNewでクラスを作成しなくても使えるみたい
便利
 
イメージ 15
いいね
 
イメージ 16
DLLに書いた足し算の関数に2と3を渡して
結果をMessageBoxで表示してみる
 
イメージ 17
いいね
 
 
掛け算の方
イメージ 18
掛け算の関数DllTest2はstaticじゃないので
Newでクラスを作成してからになる
 
イメージ 19
おなじようにできた
 
 
DLLファイルの場所

f:id:gogowaten:20191211165200p:plain

普通のアプリ作成と同じようにプロジェクトの中のbin\Debugの中の
ClassLibrary1.dll
できている
このままのDebugバージョンでも使えそうだけど
Releaseバージョンで64ビット版にしたいので
 
DLLをRelease、64bitでビルド

f:id:gogowaten:20191211165209p:plain

DebugからReleaseに変更
 
Any CPUから64bitに変更

f:id:gogowaten:20191211165220p:plain

 

取り消し修正2018/11/24
以下の範囲は間違っていた
ここから間違い

f:id:gogowaten:20191211165229p:plain

構成マネージャーの
アクティブソリューションプラットフォーム
 
イメージ 24
新規作成から
 
イメージ 25
x64を選択でok
 
イメージ 26
アクティブソリューションプラットフォームがx64になった

ここまで間違っていた

ここから修正追記2018/11/24

f:id:gogowaten:20191211165306p:plain

構成マネージャーのプラットフォーム
ここで新規作成
 

f:id:gogowaten:20191211165346p:plain

新しいプラットフォームでx64を選択しておk
これでできた

ここまで修正追記2018/11/24

 
これでx64が選択できるようになる

f:id:gogowaten:20191211165356p:plain

x64を選択して
 

f:id:gogowaten:20191211165408p:plain

ソリューションのビルド
 

f:id:gogowaten:20191211165418p:plain

Releaseフォルダを見てできているのを確認
これでDLLの作成は完了
次はこれを別プロジェクトで使う
 
 
 
 
 

 
作ったDLLを使ってみる

f:id:gogowaten:20191211165432p:plain

新しくプロジェクトを作成
いつものWPFアプリ
名前は20180218_作ったdllを使うにした
 
 
参照の追加でdllを使えるようにする

f:id:gogowaten:20191211165443p:plain

ソリューションエクスプローラーの参照の右クリックメニュー
参照の追加で
 

f:id:gogowaten:20191211165500p:plain

参照をクリック
 

f:id:gogowaten:20191211165509p:plain

さっき作ったdllファイルを指定
 

f:id:gogowaten:20191211165518p:plain

こうなって、ok押すと
 

f:id:gogowaten:20191211165531p:plain

追加される
 
アプリのプロパティのターゲットフレームワークを4.7.1以上にする
イメージ 47
ムダに新しいバージョンで作ってしまって
Visual Studio 2017の初期設定だと4.6だから変更する必要がある
 
これで使えるようになった
 
 
ネームスペースを追加
イメージ 36
追加されたので入力候補に出てくる
 
 
イメージ 37
クラスも入力候補に出てくるし
 
実行すると
イメージ 38
使える!
 
 
dllファイルの場所
これで別の新しいプロジェクトからでもdllファイルを使うことができた
参照の追加をすることで使えるようになっているようなんだけど
参照ってことは場所の指定だけなのかなと思ったら

f:id:gogowaten:20191211165553p:plain

dllファイル自体がコピーされていた
わざわざコピーするってことはこれを使っているはず
じゃあ元のdllに機能を付け足したりなど変更した場合はどうなるんだろうと試したら
結果はコピー先も変更された、すごい
 
試した経過

f:id:gogowaten:20191211165602p:plain

元のdllのプロジェクトを開いて新しい関数(200足す)を追加して
Release x64でビルド
 
別プロジェクトから追加した関数が使えるのか確認

f:id:gogowaten:20191211165611p:plain

追加した関数も入力候補に出てくる
 
イメージ 42
実行すると
イメージ 43
期待どおりの結果
 
 

f:id:gogowaten:20191211165625p:plain

上が元のdll、下がdllを参照している別プロジェクトのdll
更新日時の時間を見るとおなじになっている
なので元のdllファイルが更新されると参照先のファイルも自動で更新されるみたい
 

 
dllはVBのときにも作った気がするけど忘れていたので
今回はC#で作って、手順だけメモしてみた
色々いじっていたらできたってだけだから間違っていたりムダなところがあるはず
 
 
続きは翌日
別プロジェクトからもDLLを編集する方法
https://blogs.yahoo.co.jp/gogowaten/15378793.html
今回の記事の方法で
WPF、Color(RGB)とHSVを相互変換するdll作ってみた、オブジェクトブラウザ使ってみた ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15380324.html
2018/03/30は40日後
ユーザーコントロール(WPF)のDLLを作ってアプリで使うまでの手順メモ ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15436544.html
 
 
2018/11/24は9ヶ月後
WPF色一覧表示してHSVで並べ替えするアプリできた ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
https://blogs.yahoo.co.jp/gogowaten/15766408.html