簡體   English   中英

使用4.6v dll而不將當前項目目標框架從v4.0升級到v4.6 C#

[英]Using 4.6v dll without upgrading current project target framework from v4.0 to v4.6 C#

我有一個要求,我不應該將我的WPF應用程序的4.0版本升級到4.6,因為我們使用的是一些舊式第三方控件,這會導致錯誤數,但是我應該在WPF項目中使用版本4.6的dll。 請為我建議一些解決方法。

我是COM編程新手。 我認為上述情況是可能的,例如,我們使用Outlook 2016 dll等,通過將它們作為COM組件添加到我們的項目中,在我們的4.0項目中使用4.5v。 它所需要的只是操作系統的運行時版本應為4.5。

您不能在已用4.0運行時初始化的進程中使用.Net 4.6程序集。 原因是4.6的運行時與4.0的運行時相同,因此它不能像2.0程序集那樣並排運行。 即使正在導出的VM作為COM接口導出,也將無法正確解釋已加載類型的方法表。 原因是,即使正在通過Runtime / COM / Runtime間接層,該進程中也會加載相同的4.0 CLR和系統程序集,並且從4.6程序集實例化運行時類型似乎會導致CLR方法RuntimeTypeHandle::CreateInstance以錯誤地解釋方法表。

找不到構造函數

唯一的方法是將4.6程序集托管在另一個進程中,並遠程安裝到該程序集中。 無論如何,這可能都是Outlook加載項所發生的事情,它們是由dllhost.exe或Outlook進程之外的類似Shell進程托管的。

您可以在此處找到上述評論的屏幕截圖。 只要我們在機器上有4.6運行時。 我們可以使用反射來做到這一點:

demo_screenshot

暫無
暫無

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

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