2017-04-26 115 views
0

我們的開發團隊有許多.net framework 4.6項目(VS 2015)。 我們想開始一個新的.net核心項目,最終在Linux上部署。.net core&.net framework in the same team

我們已經安裝了VS 2017和.net core 2.0預覽版。

但是我們怎樣才能重用這個新的現有庫項目呢?

我們研究但我們不清楚: - 我們需要將舊項目的目標從「.Net Framework 4.6」改爲「.NetStandard 1.x」? (並解決不兼容) - 或者我們可以使用它們嗎? (但如何?)

感謝

+1

就我所知,你不能像使用.NET桌面庫一樣使用.Net庫,你必須重新編譯它們,並花費一些時間1)讓代碼在有限的可用工具上運行; 2)測試你的代碼,以確保它的行爲與原來的.Net完全一樣。例如,據我所知,LINQ正在使用Expression,並在.Net中編譯爲IL,而在.Net Core中進行解釋。有時可能會有明顯的差異。 –

+0

@ Sergey.quixoticaxis.Ivanov:就我所知,.NET Core並不解釋表達式樹......而且從.NET Core 2.0開始,桌面程序集也應該可用,我相信 - 這就是計劃。 –

+0

@JonSkeet我目前正在開發使用EFCore的UWP軟件,並且正在解析LINQ的聲明來自EFCore github上的MS人員之一。也許這是舊版本的真實情況,也許它只是.net本機特定的,也許我錯了。我不確定。 我希望這個計劃很快就會變成現實,我們會更樂意將我們的服務器端轉移到Linux上,但是我們的第一次嘗試太耗費時間,所以我們至少現在就推遲了這個想法。 –

回答

0

您可以使用/參考舊的項目,只有當你在你的新項目目標全框架(這是不是這樣的,如果你要在Linux上運行它們)。

如果您從預覽開始,您應該將舊項目轉換爲.Net Core項目,並且要麼以.NET Core 2.0 Preview或NetStandard 2.0 Preview爲目標。如果您不打算在您的應用程序之外引用/使用您的舊項目,那麼定位.NET Core 2.0 Preview可能會更好,因爲它可能提供比NetStandard 2.0 Preview更多的API。

3

微軟發佈官方指南的移植過程:https://docs.microsoft.com/en-us/dotnet/articles/core/porting/

總結:

  1. 處理您的依賴關係(通過遷移它們),遞歸
  2. 您重新指定項目。應用程序轉移到.NET核心,圖書館可能的話轉移到.NET標準。
  3. 使用一些有用的工具,以驗證您的端口
  4. 測試

所以,分享.NET Framework和.NET核心之間的事情,你的圖書館應該面向.NET標準,儘可能多地。否則,您可能會共享代碼並且必須執行多個構建 - 一旦定位到.NET Framework並再次定位.NET Core,就會構建。