簡體   English   中英

COM 與 .NET 互操作 6

[英]COM Interop with .NET 6

我們有一個用 C# 編寫的 .NET class 庫,我們正在嘗試從 .NET Framework v2.0 升級到 .NET 6。 使用 .NET 2.0,庫通過導入庫的 .TLB 的 C++ 代碼實例化/使用。

為了使用 COM 使用 .NET 6 個庫,您現在必須自己向 C# 接口/類以及 .csproj 添加屬性,以便在編譯時創建一個名為 .comhost.dll 的額外 DLL,然后您根據https://learn.microsoft.com/en-us/do.net/core/native-interop/expose-components-to-com使用 regsvr32 注冊。 開箱即用不再支持使用類型庫,但我嘗試使用此處的“dscom”實用程序生成 TLB https://github.com/dspace-group/dscom 不幸的是,它一直失敗,並出現錯誤提示 System.Windows.Forms 找不到,我花了幾天時間試圖讓它工作,但我放棄了。

微軟的教程沒有建議實例化新創建的COM object的最佳方法,所以我想知道是否回到調用CoCreateInstance或LoadLibrary的舊方法,或者是否有更好的方法? 如果基於 TLB 的方法仍然有效,那就太好了。

只是對此的更新。 我設法使用 dscom 實用程序生成了一個類型庫。 我必須提供一個名為“--asmpath”的附加參數來指向 .NET 運行時程序集的位置(在本例中為 C:\Program Files\do.net\shared\Microsoft.WindowsDesktop.App\6.0.0)我的程序集依賴於它,然后它起作用了。

暫無
暫無

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

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