日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET项目迁移到.NET Core操作指南

發布時間:2023/12/4 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET项目迁移到.NET Core操作指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

??這篇文章,匯集了大量優秀作者寫的關于".NET遷移到.NET Core"資料文章以及微軟官方教程文檔。是我在遷移公司框架項目到.NET Core.NET Standard時遇到的問題,并將相關資料整理成這篇文章。記錄如何一步一步把項目遷移到.NET Core。

在此感謝這些革命前輩,填平的坑,走出的路……

.NET Core提供的特性

  • 1.開源、免費

  • 2.輕量級、跨平臺

  • 3.組件化、模塊化、IOC+Nuget、中間件

  • 4.高性能

  • 5.統一了MVCWebAPI編程模型

  • a)?比如:ASP.NET Core?MVC?Web API 直接或間接繼承同一個基類 ControllerBase,提供可使用的API也一致化

  • b)?比如:舊ASP.NET時代,寫全局filter需要針對MVC?Web API?分別編寫代碼,但在ASP.NET Core,直接使用一套中間件代碼即可

  • 6.可測試性

  • 7.微服務、容器化支持

  • 8.標準化?.NET API?規范- .NET STANDARD,整體架構如下圖:

  • .NET Core性能提升

  • 1.TechEmpower機構

  • ??TechEmpower機構會定期對各語言主流的web框架做性能測試

    ??https://www.techempower.com/benchmarks/

  • 2.博客園博主、微軟MVP –?楊曉東,做的 “Hello World”性能測試

  • ASP.NET Core 1.1性能對比評測(ASP.NET,Python,Java,NodeJS)

  • 編號

    對比方

    系統環境

    宿主環境

    測試結果(QPS

    1

    ASP.NET Core?vsASP.NET Core

    Windows

    Kestrel?vs?IIS

    45.6k vs 15.2k

    2

    ASP.NET Core?vsASP.NET

    Windows

    IIS?vs?IIS

    15.2k vs 18.2k

    3

    ASP.NET Core?vsASP.NET

    Windows

    Kestrel?vs?IIS

    45.6k vs 18.2k

    4

    ASP.NET Core?vs?Python Django

    Linux

    Kestrel?vs?uwsgi

    26.7k vs 1.57k

    5

    ASP.NET Core?vs?Java Servlet

    Linux

    Kestrel?vs?Tomcat

    26.7k vs 18.3k

    6-1

    ASP.NET Core?vsNodeJS Express

    Linux

    Kestrel?vs?self host

    26.7k vs 15.6k

    6-2

    ASP.NET Core?vsNodeJS Koa

    Linux

    Kestrel?vs?self host

    26.7k vs 17.5

    性能測試工具:

    ????微軟出品:Benchmarks

    ????https://github.com/aspnet/benchmarks

    其他閱讀:

    ????是什么優化讓 .NET Core 2.0性能飆升?

    ????.NET Core 3中的性能提升(譯文)

    ????Java(11,12) 與 .NET Core(2.2,3.0)的性能對比測試

    遷移工作量評估(API兼容性分析)

    度量.net framework 遷移到.net core的工作量

    可移植性分析工具:.NET Portability Analyzer

    ?【Cli 版本】??【Visual Studio Extension 版本】

    ? 評估會給出類似如下報告:

    ??.NET Standard Versions

    遷移方案制定

    微軟官方《組織項目以支持 .NET Framework 和 .NET Core》文章中,有介紹兩種遷移方案:

    方案一、將現有項目和?.NET Core?項目合并為單個項目(多目標框架)

    方案二、將現有項目和新的?.NET Core?項目分離(拷貝到新項目)

    通過類名、命名空間,查詢API的實現信息

    遷移過程中,有類庫命名空間被調整,nuget歸屬包被調整,具體類庫在.NET Core哪個版本中被實現也不是很清楚,通過下面兩個查詢助手,即可解決這些問題。

    1、查詢命名空間、類庫在哪個nuget package包中定義(第一次查詢比較慢)

    2、查詢 NET API 在各版本中實現

    結果圖如下:

    類庫項目、應用項目如何選擇框架類型

  • 1.如何組織一個同時面向多目標框架的 C# 項目解決方案

  • 2..NetStandard;.netCore;FX(.NetFrameWork)之間引用關系

  • ?.NET Standard 2.0中,我們使在?.NET Standard?庫中通過一個兼容層去引用已有的?.NET Framework?的庫成為可能。當然,這只對那些只使用了適用于?.NET Standard API??.NET Framework?庫有效。

    FX引用.NetCore:不通過

    .NetStandard引用.NetCore:不通過

    .NetCore引用FX:通過

    .NetCore引用.NetStandard:通過

    .NetStandard引用FX:通過

    FX引用.NetStandard:通過

    具體參見:

    ??【譯】介紹 .NET Standard?--?【原文】

    ??關于.net core 和 .net fx相互引用的問題

    .NetStandard;.netCore;FX(.NetFrameWork)之間引用關系

  • 3.項目支持多目標框架

  • 支持多目標框架,并解決第三方庫引用差異的問題(在 csproj 文件中指定包含條件)

    目標框架名稱列表 (命名全小寫)

    如何調試多目標框架類庫?

    NET Standard/Core項目使用條件判斷輸出多版本xml注釋文檔

  • 4.多目標框架中共享代碼方案

  • 1、【首選】.NET Standard,需要目標SDK支持對應的?.NET Standard?版本。

    2、共享項目。直接共享了源碼,只要在目標項目中指定了條件編譯符,那么源碼便能針對各種不同的目標框架進行分別編譯。

    3、[add as link]使用鏈接共享 Visual Studio 中的代碼文件

  • 5.條件編譯符號 (命名全大寫)

  • 指令:?#if #elif #else #endif?||&&!

    因為目標框架提供的API不相同。故必要時可添加條件編譯符號以便支持不同的運行時版本。

    微軟有針對各個目標框架有預定義預處理器符號,vs編譯時會自動識別到這些框架條件編譯符號。

    .NET Framework 4.5 --> NET45

    .NET Framework 4.6 --> NET46

    .NET Framework 4.6.1 --> NET461

    .NET Standard 1.0 --> NETSTANDARD1_0

    .NET Standard 1.6 --> NETSTANDARD1_6

    .NETCOREAPP 2.0 --> NETCOREAPP2_0

    參考:

    #if指令文檔

    如何將條件編譯符號(DefineConstants)傳遞給msbuild

    遷移到.NET Core,但只運行在windows平臺上

    使用 Windows 兼容性包將代碼移植到 .NET Core

    如何:將 Windows 窗體桌面應用程序移植到 .NET Core

    如何:將 WPF 桌面應用移植到 .NET Core

    兼容.NET Core.NET Standard API

    遷移HttpHandler與HttpModule到 ASP.NET Core 中間件

    .NET CORE 2.0 踩坑記錄之ConfigurationManager

    .NET Core/Standard 2.0?編譯時報“CS0579: Duplicate 'AssemblyFileVersionAttribute' attribute”錯誤

  • 1.自動生成AssemblyInfo的原理

  • 2.解決方案:不自動創建 AssemblyInfo 文件

  • ASP.NET Core開發之HttpContext

  • .net core 使用JsonConvert替代JavaScriptSerializer

    ASP.NET Core 中重復讀取 Request.Body 的正確姿勢

    JsonRequestBehaviorcore中被移除的問題

  • 1.[ASP.NET MVC]解決"若要允許 GET請求,請將 JsonRequestBehavior 設置為AllowGet"

  • 2.[ASP.NET Core]core中不會拋出AllowGet異常,對于DenyGet則使用[HttpPost]代替

  • https://stackoverflow.com/questions/38578463/asp-net-core-the-name-jsonrequestbehavior-does-not-exist-in-the-current-cont

    https://stackoverflow.com/questions/8464677/why-is-jsonrequestbehavior-needed?r=SearchResults

    獲取ASP.NET Core中的Web根路徑和內容根路徑(移除的MapPath)

    為什么我的會話狀態在ASP.NET Core中不工作了?

    由于ASP.NET Core 2.1中引入的Cookie同意和非必要cookieGDPR功能引起。(GDPR,即General Data Protection Regulation,《通用數據保護條例》)

    ASP.NET4.5ASP.NET Core中共享cookies認證信息(加解密方式不一致問題)

    ? ?.NET跨平臺之旅:ASP.NET Core從傳統ASP.NET的Cookie中讀取用戶登錄信息

    ? ?開源方案:[git]idunno.CookieSharing

    ASP.NET Core如何獲取客戶端IP地址(被移除的ServerVariables對象)

    ASP.NET Core中?BuildManager.GetReferencedAssembiles()?的替代方案

    1AppDomain.CurrentDomain.GetAssemblies()

    2https://stackoverflow.com/questions/53989393/is-there-an-alternative-for-buildmanager-getreferencedassemblies-in-asp-net-co

    ? (可以正常注入使用,但是調試時會報FileNotFoundException

    ??

    .NET Core 2.0遷移System.Runtime.Caching

    遷移EF框架

    【微軟官方】從 EF6 到 EF Core的遷移系列

    【微軟官方】EF Core 版本升級遷移系列

    修改為?ASP.NET Core?風格的應用

    ??按照上面的方式修改API兼容性后,框架類庫可以順利遷移到.NET Core,編譯通過,代碼運行也正常。但是ASP.NET Core風格的應用,其寫法也是有很多變化的。具體參考下面文檔:

    將傳統 ASP.NET 應用遷移到 .NET Core

    【微軟官方】ASP.NET 遷移到 ASP.NET Core教程系列

    【微軟官方】ASP.NET Core 版本升級遷移系列

    ??后續,我會再整理一篇 《ASP.NET Core?學習教程》 資源匯總的文章,目的是有條理的匯總大量優秀的ASP.NET Core知識點文章,方便大家學習和知識查找。

    原文地址:https://www.cnblogs.com/heyuquan/p/dotnet-migration-to-dotnetcore.html

    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?

    總結

    以上是生活随笔為你收集整理的.NET项目迁移到.NET Core操作指南的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。