我需要參考一個僅適用于 .NET 4.8 的專有客戶端庫,沒有其他選擇,這是一個非常狹窄的供應商庫,我們必須將它與 .NET 48 一起使用。
正在開發的新應用程式是一個服務應用程式,需要長期維護。并且可以將此應用程式僅安裝在 Windows 上。但是我們希望應用程式能夠從 .NET 6 中受益,同時能夠使用 .NET 4.8 客戶端庫。
所以我的問題是:什么是/可能是一個好的解決方案:
- 尊重我需要 4.8 中的一些代碼來使用該庫。
- 利用 .NET 6 和未來的增強功能
謝謝你的幫助!
uj5u.com熱心網友回復:
是的,您可以從 .NET 6 參考 .NET 4.8 程式集。但是,不能保證它會按預期作業。僅當它不使用任何 .NET 6(或更確切地說是 .NET 4.8 支持的 .NET Standard 版本)中不存在的 API 并且它使用的 API 沒有中斷(對于該應用程式邏輯)更改時,它才會作業。
您可以通過使用以下內容創建 .NET 4.8 庫來輕松測驗它:
public class Test
{
public static void OldNet()
{
Console.WriteLine("Hello from old .NET");
}
}
然后從 .NET 6 參考它并呼叫:
OldNet4.Test.OldNet();
運行,它會列印“Hello from old .NET”沒問題。
但是,如果您例如Thread.Abort在舊的 .NET 4.8 庫中使用 - 在 .NET 6 上運行時,它不會中止目標執行緒,而是會 throw PlatformNotSupportedException,這是破壞性更改的一個示例。如果它呼叫缺少的 api,那么它會拋出TypeNotFound或類似的例外。
所以最終結果取決于被參考的庫。
uj5u.com熱心網友回復:
是的,客戶端可以使用 .NET Framework 4.8 撰寫,服務器使用 .NET Core 6 撰寫。客戶端和服務器也可以使用不同的編程語言撰寫,因此您的用例沒有理由不可能。但是,無法從 .NET Framework 程式集參考 .NET Core 程式集。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355969.html
