將 Net 項目升級 Core項目經驗:(一)遷移Net項目為Net Core\Standard項目


遷移Net項目為Net Core\Standard項目

背景
我們公司內部有自己ORM開發框架,最新因為需要將系統遷移到國產服務器上,所以首先需要將最基礎的ORM框架改造可以運行在國產服務器上。對於我們Net來說,優選Net Core。在遷移的過程中,將一些經驗和坑記錄下來,幫助自己記憶同時也給有同樣需求的Net朋友一些幫助。

原始項目 Beyonbit.Framework 預覽

image
看上圖的當前項目,為我們的ORM框架。本次遷移主要將Beyondbit.Framework項目從Net Framework 3.5 遷移為 Net Core\Standard 2.0。

新建一個Net Standard 類庫為Beyonbit.Framework

新建的步驟很簡單,就不截圖說明。

為什么創建一個項目,而不是將現在的項目升級

幾點考慮:

  1. 當前類庫是一個非常穩定的類庫
  2. 這個類庫是一個歷史類庫,有非常多的功能,並且我不知道所有的功能
  3. 在將這個類庫升級成功前,這個類庫需要繼續提供給Net Framework 項目使用
  4. 類庫升級成功后,很有可能比不穩定,在穩定的這段期間,依然需要穩定的類庫給Net Framework 使用
  5. 為什么不重新復制一份代碼,在這個復制的代碼上改造?當然首先我會建立一個分支。同時,基於以上原因,我希望的是同一份代碼可以編譯出Net Framework和Net Core\Standard類庫

可以看看微軟的建議《組織項目以支持 .NET Framework 和 .NET Core

Net Standard和Net Core的關系

簡單來將 Net Standard就是以前微軟的共享類庫的升級版,dll可以運行在WPF、ASP.NET、WinFrom、Silverlight、UWP的類庫。
而Net Core生成的類庫,依然只能運行在NetCore運行時上。
這個了解共享類庫的概念會很好理解,不了解的話,可以看看其他同學寫的文章。
linezero同學的《.NET Core 2.0及.NET Standard 2.0
或微軟的文章《.Net Core, .Net Framework, .Net standard library, Xamarin 之間關系

移植現有代碼到Net Core上

項目創建好了,如何將現在的類文件遷移到新項目上呢。可能有以下方案:

  1. 把所有文件復制到新項目上
  2. 把所有文件用快捷方式的辦法添加到新項目上

在遷移這方面可以看看凌晨三點半同學的文章《遷移.net framework 工程到.net core》和《度量.net framework 遷移到.net core的工作量

不過我的做法和凌晨三點半同學的不一樣。我是在參看log4net的開源代碼時,看到的思路,借鑒了這個更簡單的方法。

使用文本編輯器打開新建項目的.csproj文件

我的項目內容如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
</Project>

在文件中添加一下代碼:

   <ItemGroup>
    <Compile Include="..\..\Beyondbit.Framework\**\*.cs" />
  </ItemGroup>

這句代碼的意思是,將Beyondbit.Framework目錄下的所有文件和目錄都用快捷方式包含到項目中。
效果如下:
image
可以看到新項目的文件和老項目的文件是一模一樣的,並且圖標可以看出是快捷方式添加的。

Build 當前項目

項目已經遷移OK了,我們可以Build一下項目,然后將所有錯誤消滅。
我的項目編譯結果如下:
image

總共有60個錯誤。最后調整發現不止60個錯誤,當這60個錯誤處理后,再編譯,產生了新的錯誤,加起來有100個錯誤左右。

總結
遷移第一步工作結束,后續第二部的工作是來消滅錯誤,第三部是遷移單元測試和集成測試項目,以及最終的多個平台運行的測試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM