新的項目我們想用ASP.NET Core來開發,但是苦於我們歷史的遺產很多,比如《使用 JavaScriptService 在.NET Core 裡實現DES加密算法》,我們要估計等到.NET Core 1.2我們才會有大部分的API,通過NodeJs方式有點曲線救國的味道,很多人會不認同,如果要在純的.NET Core下運行我們的ASP.NET Core項目,在特定的時間進度內很難辦到,不僅僅我們所依賴的一些API還沒有,還有我們大量的.NET Framwork的庫還來不及遷移到.NET Standard 兼容。本文就是向你介紹如何在我們的.NET Framework 4.5以上的環境下跑我們的ASP.NET Core項目,讓我們跟上.NET Core的發展步伐。
Scott hanselman 寫了一篇文章《How to reference an existing .NET Framework Project in an ASP.NET Core 1.0 Web App》向我們介紹了如何.NET Framework 4.5以上的環境下跑我們的ASP.NET Core項目。這篇文章裡有一張圖解釋了這麼做的原理:
.NET 4.5以上的版本和.NET Core的底層的編譯器和運行時都是一樣的,ASP.NET Core 1.0也可以跑在NET Framework 4.6上,我們通過Visual Studio 2015 Update 3創建一個Web項目的時候有一個模板:
我們上面看到了3個ASP.NET Web項目類型:
我們選擇ASP.NET Core Web應用程序在.NET 框架上運行模板創建項目,創建出來是這樣的:
接著我們再創建2個.NET Framework 4.5的庫,然後在asp.net core應用裡面引用:
我們來看asp.net core項目的project.json, 不久的將來在Visual Studio 2017 RC發布的時候,project.json 的功能會和csproj以及msbuild 合並在一起, 你會注意到 ClassLIbrary1 沒有列出的最高級別依賴項節點下,但作為一種框架特定依賴像這樣:
此外請注意,在這種情況下它是一種type="project"的依賴關系,在這種情況下,我沒有建立 NuGet 包來進行引用。不過因為 .NET Core toolin 是在預覽中有一些缺陷,這些缺陷要等等工具完善來修復。