2

以下のエラーが発生し続けますが、理解できませんでした。誰か助けてくれないかしら。

エラー: モジュールMyExternalAssembly.MyNamespace.MyModuleのタイプを読み込めませんでした。

SilverlightアプリケーションでMEFを使用しているときにこのエラーが発生した場合は、MefExtensionsアセンブリへの参照のCopyLocalプロパティがメインアプリケーション/シェルでtrueに設定され、他のすべてのアセンブリでfalseに設定されていることを確認してください。

エラーは次のとおりです。ロードされたアセンブリからモジュールタイプMyExternalAssembly.MyNamespace.MyModule、MyExternalAssembly.MyNamespace、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=nullを取得できません。より完全修飾されたタイプ名を指定する必要がある場合があります。

コード:

ロード画面(モジュールをロードし、さまざまな用途のアセンブリ参照を保存します)

    string[] dynamicLibraries = Directory.GetFiles(pluginDirectory, "*.dll", SearchOption.AllDirectories);

    // Parse through the DLL's and look for types that implement "IModule".
    foreach (string file in dynamicLibraries)
    {
        // Get the plugin assembly information.
        Assembly plugin = Assembly.LoadFile(file);

        // Get all types that are exported for plugins.
        IEnumerable<Type> modules = plugin.GetTypes()
            .Where(t => typeof(IModule).IsAssignableFrom(t));

        if (modules.Count() > 0)
        {
            ApplicationState.Instance.Plugins.Add(plugin, modules);
        }
    }

これがConfigureModuleCatelogメソッドです

protected override void ConfigureModuleCatalog()
{
    base.ConfigureModuleCatalog();

    ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;

    foreach (var assembly in ApplicationState.Instance.Plugins)
    {
        foreach (var type in assembly.Value)
        {
            this.ModuleCatalog.AddModule(new ModuleInfo
            {
                ModuleName = type.FullName,
                ModuleType = type.AssemblyQualifiedName,
                Ref = new Uri(assembly.Key.Location, UriKind.RelativeOrAbsolute).AbsoluteUri,
                InitializationMode = InitializationMode.WhenAvailable
            }); 
        }
    }
}

基本的に、この「プラグイン」辞書を維持/使用し、Modularizationを適切にwprkする方法が必要です。そしてアイデア?

ありがとう!

4

1 に答える 1

1

よくわかりません。あなたは Unity と言っていますが、あなたのコードは MEF 型を使用しています。IModuleまた、MEF を使用している場合、いったいなぜ実装を手動で見つける必要があるのでしょうか。MEF を使用して動的な解決を行う必要があります。

于 2012-04-16T17:53:23.690 に答える