.NET 3.5 で WPF を使用して GUI アプリケーション フレームワークを構築しています。
私のメイン アプリケーションには依存関係がほとんどありません。そのジョブの 1 つは、外部アセンブリ (プラグイン) をロードし、そこからウィンドウとコントロールを要求することです。
その部分はうまく機能します。
プラグインが WPF フレームワークで定義されていないコントロールを使用すると、問題が発生します。たとえば、WPF Toolkit を参照し、DatePicker
. メイン アプリケーションがXAMLファイルを読み取り、DatePicker
.XAMLParseException
タイプ 'Microsoft.Windows.Controls.DatePicker' が見つかりません。コンパイル時に使用されるアセンブリは、読み込み時に使用されるものとは異なる可能性があり、型が欠落しています。
この例外がスローされる理由は明らかで、メイン アプリケーションに WPF Toolkit への参照を追加すると問題が解決します。しかし、プラグインで使用されるすべてのコントロールに対して、メイン アプリケーションに参照を追加することはできません。それらのコントロールが何であるかわからないからです。
また、メイン アプリケーションが を使用してプラグインをロードすることも追加しますAssembly.LoadFrom
。
質問は次のとおりです。
プラグインにその依存関係をメイン アプリケーションのディレクトリにコピーさせてから、それらも読み込ませる必要がありますか? 他のオプションは何ですか? この問題は .NET 4 で何らかの形で対処されていますか?