在 WSL Ubuntu 上使用 .NET 进行跨平台开发新手入门
翻譯自 haydenb 2020年6月3日的文章《Getting started with cross-platform development using .NET on Ubuntu on WSL》?[1]
.NET 是一個開源軟件框架,用于在 Linux、Windows 和 macOS 上構建跨平臺應用程序。WSL 上的 Ubuntu [2]允許您同時為 Ubuntu 和 Windows 構建和測試應用程序。當我們把這些融合在一起時會發(fā)生什么呢?這篇博客將演示如何在 WSL 上安裝 .NET 開發(fā)棧,并構建一個簡單的操作系統(tǒng)感知應用,然后在 Linux 和 Windows 上測試它。
啟用 WSL 1
以管理員方式啟動 PowerShell 并運行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux如果您只想安裝 WSL 1,您可以重啟電腦并跳過下一步。
Restart-Computer如果您要安裝 WSL 2,請不要重啟,繼續(xù)下一步操作:
啟用 WSL 2 (Windows 10 2004+)
想要了解更多關于 Ubuntu on WSL 2 的細節(jié),請查看 “Ubuntu on WSL 2 Is Generally Available”?[3]。
以管理員方式啟動 PowerShell 并運行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart然后重啟 Windows 操作系統(tǒng):
Restart-Computer在 WSL 上安裝 Ubuntu
從 Microsoft Store 中下載 Ubuntu:
Ubuntu 20.04 LTS on the Microsoft Store?[4]
想要了解更多在 WSL 上安裝 Ubuntu 的方法,請查看?Ubuntu on WSL wiki 頁面?[5]。
安裝 Windows Terminal
從 Microsoft Store 中下載 Windows Terminal:
Windows Terminal on the Microsoft Store?[6]
也可以從 GitHub 下載 Windows Terminal。
運行 WSL 上的 Ubuntu
打開 Windows Terminal 并運行:
ubuntu.exe當您首次在 WSL 上運行 Ubuntu 時,它將安裝,并提示您創(chuàng)建一個 Linux 用戶,這個用戶是獨立于 Windows 用戶的。
退出并重新打開 Windows Terminal,您將會發(fā)現(xiàn) Ubuntu 出現(xiàn)在下拉菜單中:
您可以在 settings.json 中設置 Windows Terminal,將 Ubuntu 設置為默認項。
更新 WSL 上的 Ubuntu
您應該定期檢查更新,并在 WSL 上的 Ubuntu 中運行升級。我們用 apt (Ubuntu 包管理器)來實現(xiàn)。
要檢查更新,請運行:
sudo apt update要獲得升級,請運行:
sudo apt upgrade您可以通過用?&&?將它們連接在同一行并添加?-y?標簽,自動更新并應用可用的升級:
sudo apt update && sudo apt upgrade -y添加微軟的 .NET 資源庫和簽名密鑰
我們需要為 apt 添加微軟的 .NET 資源庫和簽名密鑰。我們將從微軟下載并安裝一個包來完成這項工作。
請確保您正在為您的 Ubuntu 版本安裝正確的資源庫。您可以使用下面的命令檢查 Ubuntu 的當前版本:
cat /etc/os-release下面的示例使用 Ubuntu 20.04,來自 Canonical 的最新 LTS 發(fā)行版。如果您仍在使用 Ubuntu 16.04、18.04 或 19.10,您可以在微軟文檔?[7]中找到相應的資源庫。想要了解更多關于 LTS 和中間版本之間的區(qū)別,我們有一個發(fā)布周期頁面?[8]。
為 20.04 版本下載微軟的資源庫和密鑰包:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb使用 dpkg -i 手動安裝微軟資源包:
sudo dpkg -i packages-microsoft-prod.deb現(xiàn)在當你更新 apt 時,你會看到微軟資源庫已檢查升級了:
安裝 .NET SDK
使用 apt 從微軟資源庫安裝 .NET 和相關依賴項:
sudo apt-get install dotnet-sdk-3.1 -y新建工作區(qū)
創(chuàng)建一個新的工作目錄并打開該目錄:
mkdir dotnetproject cd dotnetproject/新建一個 .NET 項目
使用?dotnet new?創(chuàng)建一個新的 .NET 控制臺項目,這會創(chuàng)建一個名為?Program.cs?的文件和其他一些必要的文件夾和文件:
dotnet new console探索我們的 .NET 應用
列出您的新 .NET 項目中的文件:
ls查看?Program.cs?的內(nèi)容:
cat Program.cs運行示例程序:
dotnet run自定義我們的 .NET 應用
在您最喜歡的編輯器中打開?Program.cs:vi、nano、emacs 或者有 remote WSL 擴展的 VS Code:
在這里,我們使用 WSL 上的 Ubuntu 中包含的 nano:
nano Program.cs首先,我們添加 Interop services 命名空間:
using System.Runtime.InteropServices;然后把:
Console.WriteLine("Hello World!");替換成:
Console.WriteLine($"Hello {System.Environment.GetEnvironmentVariable("USER")}");if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) {Console.WriteLine("We're on Linux!"); }if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) {Console.WriteLine("We're on Windows!"); }Console.WriteLine("Version {0}", Environment.OSVersion.Version);這段代碼也可以在這里?[9]找到。
這個應用程序告訴我們:當前的用戶,檢查是在 Windows 還是 Linux 上,然后給出 OS 內(nèi)核版本。
退出并保存,然后運行:
dotnet run讓我們的 .NET 應用程序跨平臺
我們需要更新 .NET 項目文件?dotnetproject.csproj,告訴 .NET 同時為 Linux 和 Windows 平臺構建。
在我們的編輯器中打開?dotnetproject.csproj?并添加:
<PropertyGroup><RuntimeIdentifiers>win10-x64;linux-x64</RuntimeIdentifiers> </PropertyGroup>這將引導 .NET 同時為 Windows 10 x64 和 Linux x64 構建自包含的二進制文件。
構建我們的跨平臺應用程序
當我們配置好項目后,構建 .NET 應用程序變得如此簡單:
dotnet publish -r win10-x64 dotnet publish -r linux-x64可以在項目的?/bin/?文件夾中找到每個平臺的自包含二進制文件及其所有必需的庫:
ls bin/Debug/netcoreapp3.1/測試 Linux 版本
您可以直接運行 Linux 二進制文件,如下所示:
./bin/Debug/netcoreapp3.1/linux-x64/publish/dotnetproject測試 Windows 版本
要運行 Windows 版本,請將其復制到 Windows 文件系統(tǒng)中:
cp -r ~/dotnetproject/bin/Debug/netcoreapp3.1/win10-x64/publish /mnt/c/Users/Hayden/OneDrive/Desktop/譯者注:
此處的?/mnt/?為 Ubuntu 系統(tǒng)中看到的 Windows 文件系統(tǒng)的根目錄,/mnt/c/?即為 Windows 系統(tǒng)中的 C 盤。
然后運行:
/mnt/c/Users/Hayden/OneDrive/Desktop/publish/dotnetproject.exe至此,我們已經(jīng)為 Linux 和 Windows 構建并運行了相同的應用程序。我們可以使用 WSL 同時測試它們。
相關鏈接:
https://ubuntu.com/blog/creating-cross-platform-applications-with-net-on-ubuntu-on-wsl?Getting started with cross-platform development using .NET on Ubuntu on WSL???
https://ubuntu.com/wsl?Ubuntu on WSL???
https://ubuntu.com/blog/ubuntu-on-wsl-2-is-generally-available?Ubuntu on WSL 2 Is Generally Available???
https://www.microsoft.com/store/productId/9N6SVWS3RX71?Ubuntu 20.04 LTS on the Microsoft Store???
https://wiki.ubuntu.com/WSL?Ubuntu on WSL wiki???
https://www.microsoft.com/store/productId/9N0DX20HK701?Windows Terminal on the Microsoft Store???
https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu???
https://ubuntu.com/about/release-cycle???
https://pastebin.ubuntu.com/p/swbPxXXSKD/???
作者 :haydenb ?
譯者 :技術譯民??
出品 :技術譯站(https://ITTranslator.cn/)
END
總結
以上是生活随笔為你收集整理的在 WSL Ubuntu 上使用 .NET 进行跨平台开发新手入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core中使用cooki
- 下一篇: 明源云·天际,地产⾏业的Salesfor