簡介
在Windows上開發,然後發佈開發好的應用到Linux服務器是一個非常常見的流程。在.Net Core 開發中,同樣也有這個流程,本文以圖文形式就如何部署Windows下開發的.Net Core程序至Ubuntu系統進行介紹。
新建.Net Core 項目
首先,我們使用VS新建一個 .Net Core 控制檯的項目,項目結構如下圖所示:
其中,Program.cs 的代碼如下所示:
using System;
namespace DotnetCoreDemo1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
發佈
有了代碼以後,現在我們進行發佈操作。首先,在“解決方案資源管理器”中右鍵項目,選擇“發佈。。。”,在彈出的以下菜單中進行配置:
① 點擊編輯圖標彈出“配置文件設置”窗體。如上圖所示配置②和③,然後點擊“保存”。
完成以上配置後,點擊④即可進行程序發佈,在程序發佈以後,即可在“目標位置”的文件夾中看到以下內容。
上傳程序
在以上圖片中,只需要上傳選中的文件即可,我們可以使用SCP上傳,如
$ > D:\..\netcoreapp3.1\publish>scp DotnetCoreDemo1* [email protected]:
DotnetCoreDemo1 100% 85KB 1.5MB/s 00:00
DotnetCoreDemo1.deps.json 100% 494 32.3KB/s 00:00
DotnetCoreDemo1.dll 100% 4096 267.5KB/s 00:00
DotnetCoreDemo1.pdb 100% 680 47.6KB/s 00:00
DotnetCoreDemo1.runtimeconfig.json 100% 154 10.1KB/s 00:00
運行程序
完成以後,進入遠程的服務器,先給程序以可運行權限,然後即可運行,如下圖所示。
PS: 我們也可以直接運行dll文件,dotnet DotnetCoreDemo1.dll
。
更多的測試
本文所使用的服務器上的.Net Core 的版本是3.1,對應的庫支持C#7.0,所以以下測試代碼使用了一些C#7.0的特性進行測試。
class Program
{
static void Main(string[] args)
{
test1();
test2(5);
test2("hello");
test2(null);
test2(DateTime.Now);
}
static void test() => Console.WriteLine($"{DateTime.Now} test()");
static void test1(){
var ms = new Dictionary<int, string>
{
{19, "nineteen" },
{23, "twenty-three" },
{42, "forty-two" }
};
Console.WriteLine(ms[19]);
test();
}
static void test2(object obj){
int sum = 0;
if (obj is int)
sum += (int)obj;
else sum++;
Console.WriteLine($"sum={sum}\tobj.Value={obj}, obj.TypeName={obj?.GetType().Name}.");
}
}
執行結果