2010-01-08 48 views

回答

0

是的,好像我必須手動加載程序集,無論如何。

我發現的一個解決方案是訂閱AppDomain的AssemblyResolve事件。當找不到程序集並且允許您手動提供程序集時引發此事件。

  1. 重新註冊的事件處理程序這樣

AppDomain.CurrentDomain.AssemblyResolve + = MyResolveEventHandler;

static Assembly MyResolveEventHandler(object sender,ResolveEventArgs args) return {Assembly.LoadFrom(@「OldAsm \ Asm.dll」); }

  • 一旦達到使用該特定代碼的代碼在.NET Framework將嘗試加載組件,它會崩潰,將調用的處理程序(MyResolveEventHandler)。
  • 我會繼續尋找解決正確引用的方法,而無需編寫任何代碼,也無需將任何內容放入GAC中。如果有人找到方法,請發佈。

    謝謝

    0

    Activator.CreateInstance。檢查msdn的例子。

    +0

    感謝您的答案,但我試圖避免反思。我想要做的就是強制框架解決到正確的文件。我在這個DLL中有很多不同的類型,並且使用反射會很昂貴的實現。 – Krikor 2010-01-08 16:37:29

    +1

    您將不得不使用Load ... Methods自己加載DLL。與IO相比,這樣做反射將是微不足道的。反思有一個「壞」的聲譽,因爲大多數人從來沒有衡量它。儘可能避免,是的,但在正確答案時不要完全避開。 – 2010-01-08 23:08:41

    相關問題