1

リフレクション操作のために .NET アセンブリをロードし、その後アンロードする方法の 4 番目の回答と同様のコードを実装しました。

2 つのアセンブリ (1 つはデバッグ用、もう 1 つはリリース用) を読み込もうとすると、FileLoadException が発生し、「同じアプリケーション ドメイン内の新しい場所からは読み込めません」というメッセージが表示されます。

私が使用しているコードは次のとおりです。

private String rootAssembly;

private void button1_Click(object sender, EventArgs e)
{
    rootAssembly = "{...path to release version...}\TestApp.exe";
    TempLoadAssembly();
}

private void button2_Click(object sender, EventArgs e)
{
    rootAssembly = "{...path to debug version...}\TestApp.exe";
    TempLoadAssembly();
}

public void TempLoadAssembly()
{
    AppDomain tempDomain = AppDomain.CreateDomain("TemporaryAppDomain");
    tempDomain.DoCallBack(LoaderCallback);
    AppDomain.Unload(tempDomain);
}

private void LoaderCallback()
{
    Assembly assembly = Assembly.ReflectionOnlyLoadFrom(rootAssembly);
    IList<CustomAttributeData> customAttributeDatas = CustomAttributeData.GetCustomAttributes(assembly);
    // do other work here
}

私のコードにバグがありますか、それともアセンブリの 2 つのバージョンをロードできないのでしょうか? この問題を回避するために、新しい一時ドメインで AppDomain.Unload() を呼び出していますが、機能していないようです。

4

0 に答える 0