我正在處理一個程序中的問題。它由2個DLL組成,其中dll引用的是dll B.Dll A包含一個公共方法,其中第一個動作(在實例化B中的任何類之前)將檢查某個網絡位置以查看新版本的dll B是否可用。如果是這樣,它會將它下載到當前B的相同位置,這不應該成爲一個問題,因爲B中沒有任何內容會被實例化。可悲的是,它是實例化的,所以我得到一個錯誤,它已被擁有A的進程引用,並且不能被替換。如何防止在.NET中智能加載DLL?
您是否瞭解它已被引用的原因,以及是否有解決方案來避免此問題?
public class L10nReports//Class in DLL A
{
public L10nReports() //constructor
{
}
//only public method is this class
public string Supervise(object projectGroup, out string msg)
{
//Checks for updates of dll B and downloads it if available. And fails.
manageUpdate();
//first instanciation of any class from dll B
ReportEngine.ReportEngine engine = new ReportEngine.ReportEngine();
string result = engine.Supervise(projectGroup, out msg);
return result;
}
好的電話沒有內聯 – 2011-03-24 16:04:49
猜猜我是怎麼找到的?它仍然很痛。 – GvS 2011-03-24 16:07:19
我把類實例化的另一種方法(請參閱我的評論在菲利普里克的答案),但這是行不通的。添加非內聯屬性不會改變,我仍然得到相同的錯誤,dll被引用。 – Antoine 2011-03-24 16:31:18