簡體   English   中英

如何更換已加載的部件

[英]How to replace a loaded assembly

好吧,我這里有一個非常獨特的問題。 我收到錯誤基本上是因為我引用的是dll的最新版本,但我仍然希望保留默認引用,因為我項目中的大多數代碼都應該使用此dll。 發生錯誤是因為它試圖使用僅在dll的較早版本中可用的對象。 因此,我想將此dll的較舊版本用於此特定的代碼部分。 我曾嘗試使用Assembly.LoadFrom(pathToAssembly)加載此dll的較早版本,但它似乎仍在引用dll的較新版本。 有誰對我如何將對該dll的引用替換為舊版本有任何想法?

您唯一真正的選擇是確保程序集經過嚴格簽名,確保沒有程序集綁定重定向到較新版本,並且比手動(使用Assembly.LoadFrom )將第二個版本加載到您的appDomain中。 這樣,代碼將能夠使用程序集的精確版本,並且兩個程序集可以同時加載到同一appDomain中。

請注意,如果您需要在鏈接到不同程序集的代碼段之間傳遞對此類對象的引用,將導致徹底的噩夢。

如果你想額外的 痛苦 樂趣-負荷字節和使用反射兩個組件構建類型的每個版本...

我強烈建議通過使用不同版本的程序集將代碼加載到至少單獨的appDomain(最好是單獨的進程)中來避免所有麻煩。 如果您仍然決定采用冒險方式將多個版本的程序集加載到同一應用程序域,請確保閱讀來自https://blogs.msdn.microsoft.com/suzcook/2003/09/19/loadfile-vs的所有程序集加載博客文章。 -loadfrom /

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM