ASP.NET Core 如何使用 .Net full framework 與 .Net core

  • 720
  • 0

這一篇文章相當簡單,主要說明 ASP.NET Core 的程式如何使用不同的 framework 來撰寫.

在上一篇文章中提到了 .net core 程式需使用 .net standard 所定義的平台標準來使用 API,所以這一篇文章就做一個簡單的介紹.

下載 .net core cli 

.net core cli 的安裝程式可以在 https://github.com/dotnet/cli 下載 .NET Core SDK Installer,這包含 .net core 本身所有的東西,所以 cli 也在裡面.

新增 NuGet.config

請選擇一個你要使用的目錄,然後新增一個 NuGet.config 檔案,其內容如下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <clear />
    <add key="cli-deps" value="https://dotnet.myget.org/F/cli-deps/api/v3/index.json" />
    <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

裡面主要是新增了 .net core 的 release nuget path,目前來說你下載的都是 RC2 版本.

新增 project.json

{
  "version": "1.0.0-*",
  "compilationOptions": {
    "emitEntryPoint": true
  },
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0-rc2-*"
        }
      }
    },
    "net451": {}
  }
}

由於後面的內容並不會真正寫 ASP.NET core 的程式碼,所以在這裡並沒有加入 asp.net core 相關的基礎元件,只是簡單定義了兩個 framework,一個是將利用 .net core (netcoreapp1.0)來啟動,另一個是利用 full framework (net451) 來啟動.net451 並不是可以跨平台的,所以只能在 Windows 上跑,因此我也假設你的電腦裝有 .net framework 4.5.1 以上的版本.

新增 Program.cs

using System;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
#if NET451
            Console.WriteLine("Hello from net451");
#elif NETCOREAPP1_0
            Console.WriteLine("Hello from netcoreapp1.0");
#endif
        }
    }
}

以上是一個相當簡單的例子,用來說明如果你的程式碼要支援不同的 framework,也就是可能要支援不同的 .net standard.不同的 .net standard 所提供的 API 定義會有不同,所以你希望你的程式遇到那些不同的 API 定義時能有個選擇,所以上面的程式碼就是一個簡單的例子.

透過 .net core cli 來進行編譯

在你的目錄下,輸入

>dotnet restore

完成後再輸入

>dotnet build

完成後,你會在 .\bin.\Debug 底下看到 net451 和 netcoreapp1.0 兩個目錄.這就是專門為不同 framework 產生的結果目錄.

到 net451 目錄下,你會看到一個 exe 和一個 pdb,你可以直接執行 exe 檔案,你將會看到輸出 Hello from net451 的字樣.這目錄產生的檔案並不具備跨平台的能力,所以只能在 Windows 作業系統上執行.

到 netcoreapp1.0 目錄下,你會看到幾個 json 和 一個 dll 以及一個 pdb,你可以執行 dotnet <name>.dll (<name> 代表你的 dll 檔名),你將會看到 Hello from netcoreapp1.0 出現在畫面上.那幾個 JSON 檔的內容很重要,千萬不能刪除,因為裡面定義了程式所需要用的相依元件與 runtime 資訊.由於這是 .net core 產生的程式,具備跨平台的能力,你可以直接把這些檔案複製到其它平台,然後利用該平台的 dotnet 來執行該元件.

透過以上簡單的範例,你就可以知道該如何在你的程式裡寫符合不同 framework 程式碼的方式.不過最簡單的方式還是將所有程式碼用 netcoreapp 的 framework 來寫就好,畢竟是跨平台,任何平台都可以,而且可以少去那些 #if ...  #endif 的標記.

希望這個簡單的例子能對你有幫助.