2016年11月25日金曜日

VB WPF 用の dll を作る

嵌りました!。  嵌りました!。
参照が上手く行かず、 WPF 前提の dll が出来ない ... 。
正確には、 コードを書いて行っても、 インテリセンスが働かないのですよね。
まいった!。


WPF は やはり Form と 勝手が違いますね。
以前と 同じ調子で、 共通化する為の dll を書こうと思っても、
System.Windows.Media.Imaging 等の Presentation.Core に纏わる部分が書けません!。

散々、悩んだ挙句、 以下の方法で 回避 しました。
  ( WPF の dll とは言っても、 User Interface の無い 一般的な Class Library です。) *1.
何方か、 他に良い方法が有ったら、教えて! ... 。


Test 用の Solition/Project 作成 (仮名 若しくは 暫定名 で作成)。
Class を設けて それをアクセスし、 動く様にする。
動くレベルは基本的な状態で可。
全てを書き込まなくても可。

別 Solition/Project 作成し、
正式名を与える (作りたい dll 名で)。

ここで、WPF Application として、正式名 Project を作成。
Test で書いた Class のみを Existing Item から Copy 。
Property で Misc の Full Path が該当 Project Folder 配下にあるのを確認。
Assembly  Inf. 書き換え。

  Test Project を既成のものとして も Copy (これで今後はテストして行く)。
     もうこれからは Test 用の Solition/Project は不要(削除 可)。


正式名 Project の
My Project で Application Type を WPF Application から WPF Class Library に変更。
Warning が ふたつ。
 Warning    1    Library project file cannot specify ApplicationDefinition element.   ClassXXX
 Warning    2    The project file contains a property value that is not valid.        ClassXXX

App.xaml           のプロパティで ApplicationDefinition から None に変更。
App.xaml.vb        のプロパティで Compile から None に変更。
MainWindow.xaml    のプロパティで Page から None に変更。
MainWindow.xaml.vb のプロパティで Page から None に変更。

Project (or Solution) を Build 。
お目当ての dll が Release に作られる。

Test Project に戻り、Solution Explorer で Class 名を変更 Ex. ClassXXXBase 。
Release された dll を参照に加える。
実際に参照している Window.vb の Class 名は弄らない。


あ~、 でも、 実際に書き直していると、 こんがらがっちゃって、 頭 が パンク ... !。
最初に作った Test 用の Solition/Project は、
Visual Studio の Projects Folder から退避させて置いた上で、
一旦、 VS を閉じて開き直した方が、 間違いが少ない かも です。



[2017/06/27] UI の無い普通の dll のを追記 *1.

0 件のコメント:

コメントを投稿