簡體   English   中英

框架 4.8 的運行庫 .NET 6 API

[英]Running library for framework 4.8 for a .NET 6 API

我看到了一些關於這個主題的相互矛盾的答案,所以我希望有人能找到正確的答案。 我正在構建一個使用 devdept Eyeshot 庫的 API。 這個庫需要 .net 框架 4.8。 我想將 .NET 6 用於我的 API,因為據我所知,框架在 web 開發方面沒有很好的工具。

我為我的解決方案嘗試了兩種不同的設置:

.NET 6 API 和 .NET 6 class 庫,我在其中嘗試引用相關的框架庫。

.NET 6 API 帶框架 4.8 class 庫。

當我調用 class 時,出現錯誤 -“無法從程序集‘mscorlib,Version=4.0.0.0’加載類型‘System.Runtime.Remoting.RemotingServices’”。 但是當我從框架 4.8 API 運行它時它可以工作。

那么,無論 API 多么復雜,或者 API 是否必須針對相同的框架,是否以及為什么要讓它與 .NET 6 API 一起工作?

除非有更新版本,否則你就不走運了。 它所依賴的遠程服務已在 .Net core &.Net 5+ 中被刪除 因此,庫將無法加載,至少如果抖動達到任何使用已刪除 API 之一的方法。

如果這是第一方或開源庫,您可能會考慮更新到 .Net 5+,並用一些更新的 IPC 技術替換遠程服務。 如果是第三方商業圖書館,您可能會禮貌地要求他們更新他們的圖書館,這應該符合他們自己的利益,因為大多數圖書館已經過渡到 .net 5+。

如果這不是一個選項,一個可能的解決方法是在單獨的進程中運行該庫,並使用您最喜歡的 IPC/RPC 方法與該進程通信。

除了其他答案(我正要發布類似的內容)之外,請注意,當您從 .NET 6.0 應用程序引用 .NET 框架庫時,整個代碼將在 .NET 6.0 運行時運行。 沒有創建第二個執行環境,因此 .NET 框架庫實際上針對 .NET 6.0 運行時庫執行,如果它需要不再存在的功能,則會失敗。 許多較舊的庫以這種方式工作得很好,因為運行時大部分是向后兼容的,但有一些明顯的例外。 'System.Runtime.Remoting.RemotingServices就是其中之一。

暫無
暫無

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

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