モジュラー アプリケーション開発に WPF プリズムを使用しています。モジュール カタログ ファイルに存在する各モジュールは異なるフォルダーにあり、一度に 1 つずつリージョンに追加および削除されます。各モジュールは独自のフォルダーとアプリケーション exe から読み込まれます。は別の場所にあります。モジュールのすべての依存関係は、独自のフォルダーにあります。1 つのモジュール (dll) では、リージョンに追加されるビューにはリソース ディクショナリがあり、ResourceDictionary のソースは次のようになります: Source="/UIControls.Wpf.MessageBox;component/Themes/Generic.xaml"
アプリケーション exe が存在する場所にリソース DLL (UIControls.Wpf.MessageBox.dll) が存在する場合、それは機能します。つまり、ビューが領域に追加されます。ただし、このリソース DLL は、モジュール DLL が存在するフォルダーに存在する必要があります (モジュールのすべての依存関係は独自のフォルダーにあります)。したがって、アプリケーション exe がある場所からこの DLL を削除すると、FileNotFound 例外が発生し、モジュールが読み込まれません。リソース ディクショナリのソース/パスをモジュールのコードベースとして指定するにはどうすればよいですか? ソースをアプリケーション exe 相対としては望まない。モジュールがロードされる場所、つまりそのコードベースからのパスとしてソースが必要です。ソース コードがアプリケーションの exe 相対にならないようにする方法やその他の構文はありますか。いくつかの解決策を教えてください。私が持っているオプションの 1 つは、AssemblyResolved イベントを使用することです。しかし、私はそれを使いたくありません。