將 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個錯誤左右。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章