0
標題是我想要完成的事情的自我解釋。我有一個建立在3.5中的COM可見組件,而我的新項目是4.0。下面的代碼非常類似於我想從3.5組件運行的代碼。如何從3.5項目中延遲綁定CLR 4.0程序集?
Assembly a = Assembly.LoadFrom(@"C:\MyCLR4.exe");
Type t = a.GetType("MyCLR4Class");
object o = Activator.CreateInstance(t);
最終我得到的錯誤「這個組件由運行時比當前加載的運行新建成並不能裝載」
我敢用我所別處找到氣餒。我需要的是解決方法來完成這一點。 謝謝!
我不認爲你可以在CLR2中加載CLR4程序集(這正是你要做的......)。這個錯誤信息很清楚。 – Mark 2010-09-30 16:11:07
我可以理解,如果我有一個直接參考,因爲執行彙編只知道它自己的CLR。在運行時和後期與反射綁定我不明白。兩個CLR都安裝在機器上,每個DLL都知道在哪裏啓動自己,以及相應的CLR是相互獨立的。我知道錯誤很明顯,但不知何故,我仍然希望有一種解決方法。 – 2010-09-30 16:15:39
據我所知,這需要使用託管接口http://msdn.microsoft.com/en-us/library/dd380851.aspx。有一個codeplex項目可以幫助從託管代碼http://clractivation.codeplex.com/使用它們,或者複製系統的某些部分來爲你做這件事(例如,使用COM來獲取4.0程序集 - http:// blogs。 msdn.com/b/clrteam/archive/2009/06/07/in-process-side-by-side-part-2-common-in-proc-sxs-scenarios.aspx [but old info]) – 2010-10-14 00:52:13