現在、MEFとDirectoryCatalogを使用して一部の拡張DLLから一部の部品をロードしています。これは私にとって、そしてプログラムを使用するほとんどの人にとっては役に立ちますが、一部のユーザーは、ロードされていない部分をまったく経験しません。いくつかのデバッグ情報を収集すると、MEFはDLLをロードします(catalog.LoadedFilesにリストされています)が、catalog.Partsにはリストされていないようです。MEFパーツのリストが空の場合があります
1人のユーザーがXP sp3を使用し、1人がWindows 7を使用しているため、OSが問題ではないと私は思っています。誰がなぜこれが起こっているのかについての考えがありますか?
以下は、何かを助ける場合に備えて、実際にコンテナを作成するコードです。
private static IEnumerable<Task> CreateTypes()
{
CompositionContainer container = GetContainer();
var exp = container.GetExports<Task>();
return exp.Select(e => e.Value);
}
private static CompositionContainer container;
public static CompositionContainer GetContainer()
{
if (container != null)
return container;
DirectoryCatalog catalog = new DirectoryCatalog(ExtensionDirectory, "*.dll");
container = new CompositionContainer(catalog);
return container;
}
いくつかのコードが役に立ちます。 –
コンテナの作成中にエラーはありませんか? – blindmeis
いいえ、コンテナを作成しても問題ありません。部品リストが一部の人にとって空になるだけです。私はコードで更新しましたが、どのように役立つかわかりません。 – Jamie