一套代码同时支持.NET Framework和.NET Core
在.NET Core的遷移過程中,我們將原有的.NET Framework代碼遷移到.NET Core。如果線上只有一個小型的應用還好,遷移升級完成后,只需要維護.NET Core這個版本的代碼。
但是,如果是一個大型分布式應用,幾百臺Server,上千個.NET 應用進程。這種場景下,在一定的時期內,我們需要同時維護.NET Framework和.NET Core兩套代碼,同一個產品
特性,需要分別在兩套代碼中實現,這種代碼同步的工作量是非常大的。因此,在這種場景下,有必要使用同一套代碼既支持.NET Framework又支持.NET Core.
帶著這個需求場景,我們展開今天的.NET Core技術研究分享。先總結一下整體的思路:
1. 在Project工程層面支持多個目標框架,面向不同的.NET 目標框架添加不同的引用
2. 代碼中使用預處理指令同時支持.NET Framework 和 .NET Core
3. 編譯生成兩個.NET框架的Dll,制作支持多個.NET目標框架的Nuget包
我們先看第一步:
一、在Project工程層面支持多個目標框架,面向不同的.NET 目標框架添加不同的引用
在這個示例代碼中,我們使用了.NET Standard 2.0 Class Library Project。 目標框架同時支持.NET Framework 4.5.1和.NET Standard 2.0
?
?
?雙擊Project, 進入XML文件編輯模式
我們重點編輯TargetFramework這個節,改為TargetFrameworks,例如:
保存后,會提示:
? 全部重新加載后,新的Project的依賴項是這樣的:
? ?
這樣,這個Project就支持了多個.NET 目標框架,我們可以面向不同的.NET 目標框架添加不同的引用,當然如果依賴的Nuget也同時支持相同的.NET 目標框架,那就最匹配了:例如:Newtonsoft.Json
添加Nuget引用后,Project在不同的.NET 目標框架的引用是這樣的:
當然,我們可以為單獨為指定的.NET 目標框架添加不同的引用,例如:
?
參考鏈接:https://docs.microsoft.com/en-us/dotnet/standard/frameworks
二、. 代碼中使用預處理指令同時支持.NET Framework 和 .NET Core
如果同一塊業務邏輯,在.NET Framework和.NET Core實現不一樣,我們在同一個代碼中,如果通過預處理指令實現:
參考鏈接:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if
這個地方有個對照表:
這樣,代碼寫完后,編譯一下,可以看到有兩個文件夾生成:
三. 編譯生成兩個.NET框架的Dll,制作支持多個.NET目標框架的Nuget包
?上個步驟中生成的兩個.NET 目標版本的dll,可以分別制作支持多個.NET 目標框架的Nuget包。
?右鍵Project屬性設置中,可以設置Nuget打包
?
? ?編譯工程:Successfully created package 'C:\Users\zhougq\source\repos\TestLibrary\bin\Debug\TestLibrary.1.0.0.nupkg'.
? 使用PackageExplorer編輯生成好的Nuget包:
?
? 以上就是本次的.NETCore 技術分享。
原文鏈接:https://www.cnblogs.com/tianqing/p/11614303.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的一套代码同时支持.NET Framework和.NET Core的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软想将新版Edge浏览器引入Linux
- 下一篇: 从壹开始 [Admin] 之五 ║ 实现