我有以下情況。有n個文件夾,每個包含兩個組件:C#反射,AppDomain:從不同的文件夾執行相同的程序集
Assembly1.dll和Assembly2.dll
所有Assembly1.dll的是完全一樣的
所有Assembly2.dll的彼此略有不同,但具有相同的類別/方法。
所有Assembly1.dll的參考Assembly2.dll
在我的計劃,我想裏面創建Assembly1一些類的實例,並調用這個類的一個方法:
for(int i = 0; i < 100; i++)
{
Assembly myAssembly1 = Assembly.LoadFrom("Directory"+ i + "\\Assembly1.dll");
Type myType = myAssembly1.GetType("MyClass");
object myObject = Activator.CreateInstance(myType);
myType.Invoke(myMethodName, BindingFlags.InvokeMethod, null, myObject, null);
}
這段代碼被執行的每個文件夾包含一個Assembly1.dll 問題是,第一個工作正常,但此後Assembly2.dll已被加載,不會重新加載。但是,它需要被當前文件夾(編號i)內的文件替換。這是因爲它略有不同。
在我每次調用上面這段代碼時,都會採用相同的assembly2。
我已經搜索了類似的問題,並且發現了一些關於使用自定義AppDomains的建議。我試過這個,但是我無法讓它正常工作。
有人可以給出一個代碼示例如何初始化一個新的AppDomain並在這個新的域內執行上述代碼(以便引用的Assembly2.dll將被正確加載和卸載)?
還是有人有不同的想法如何解決這個問題?
最良好的祝願, 基督教
請將解決方案轉換爲單獨的答案並標記爲正確。 –