2020年6月3日のhaydenbの記事「 UbuntuonWSLで.NETを使用したクロスプラットフォーム開発の開始」からの翻訳1
.NETは、Linux、Windows、およびmacOSでクロスプラットフォームアプリケーションを構築するためのオープンソースソフトウェアフレームワークです。Ubuntuの 2 WSLには、あなたが構築し、同時にUbuntuとWindowsの両方のためのテスト・アプリケーションを可能にします。これらをマージするとどうなりますか?このブログでは、.NET開発スタックをWSLにインストールし、単純なOS対応アプリケーションを構築して、LinuxとWindowsでテストする方法を紹介します。
WSL1を有効にする
管理者としてPowerShellを起動し、次を実行します。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
WSL 1のみをインストールする場合は、コンピューターを再起動して次の手順をスキップできます。
Restart-Computer
WSL 2をインストールする場合は、再起動せずに次の手順に進んでください。
WSL 2を有効にする(Windows 10 2004以降)
WSL 2上のUbuntuの詳細については、「WSL2上のUbuntuが一般提供されています」3を確認してください。
管理者としてPowerShellを起動し、次を実行します。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
次に、Windowsオペレーティングシステムを再起動します。
Restart-Computer
UbuntuをWSLにインストールする
MicrosoftストアからUbuntuをダウンロードします。
マイクロソフトストア上のUbuntu 20.04 LTS 4
UbuntuをWSL にインストールする方法の詳細については、WSLwikiページ5でUbuntuを確認してください。
Windowsターミナルをインストールする
MicrosoftストアからWindowsターミナルをダウンロードします。
GitHubからWindowsターミナルをダウンロードすることもできます。
WSLでUbuntuを実行する
Windowsターミナルを開いて実行します。
ubuntu.exe
初めてWSLでUbuntuを実行すると、Ubuntuがインストールされ、Windowsユーザーから独立したLinuxユーザーを作成するように求められます。
Windowsターミナルを終了して再度開くと、ドロップダウンメニューにUbuntuが表示されます。
settings.jsonでWindowsターミナルを設定し、Ubuntuをデフォルト項目として設定できます。
WSLでUbuntuを更新する
定期的に更新を確認し、WSL上のUbuntuでアップグレードを実行する必要があります。apt(Ubuntuパッケージマネージャー)を使用して実現します。
更新を確認するには、次のコマンドを実行します。
sudo apt update
アップグレードを取得するには、次を実行します。
sudo apt upgrade
あなたは使用することができ&&
、同じ行に接続し、追加するためにそれらを-y
利用できるラベル、自動更新やアプリケーションのアップグレードを:
sudo apt update && sudo apt upgrade -y
Microsoftの.NETリポジトリと署名キーを追加します
Microsoftの.NETリポジトリと署名キーをaptに追加する必要があります。これを行うために、Microsoftからパッケージをダウンロードしてインストールします。
ご使用のバージョンのUbuntuに適切なリポジトリをインストールしていることを確認してください。次のコマンドを使用して、Ubuntuの現在のバージョンを確認できます。
cat /etc/os-release
以下の例では、Canonicalからの最新のLTSリリースであるUbuntu20.04を使用しています。あなたはまだUbuntuの16.04、18.04、または19.10を使用している場合は、することができ、対応するリソースライブラリを見つけるには、マイクロソフトのドキュメント 7。LTSと中間バージョンの違いについて詳しくは、8ページのリリースサイクルをご覧ください 。
バージョン20.04用のMicrosoftのリソースライブラリとキーパッケージをダウンロードします。
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
dpkg -iを使用して、Microsoft ResourcePackを手動でインストールします。
sudo dpkg -i packages-microsoft-prod.deb
aptを更新すると、Microsoftリソースライブラリがチェックされ、アップグレードされていることがわかります。
.NETSDKをインストールします
aptを使用して、Microsoftリポジトリから.NETおよび関連する依存関係をインストールします。
sudo apt-get install dotnet-sdk-3.1 -y
新しいワークスペース
新しい作業ディレクトリを作成して開きます。
mkdir dotnetproject
cd dotnetproject/
新しい.NETプロジェクトを作成します
dotnet new
新しい.NETコンソールプロジェクトを作成するために使用します。これにより、名前付きProgram.cs
ファイルとその他の必要なフォルダーおよびファイルが作成されます。
dotnet new console
.NETアプリケーションを探索する
新しい.NETプロジェクトのファイルを一覧表示します。
ls
Program.cs
内容を確認してください。
cat Program.cs
サンプルプログラムを実行します。
dotnet run
.NETアプリケーションをカスタマイズする
お気に入りのエディターで開きますProgram.cs
:vi、nano、emacs、またはリモートWSL拡張機能を備えたVS Code:
ここでは、WSLのUbuntuに含まれているnanoを使用します。
nano Program.cs
まず、相互運用サービスの名前空間を追加します。
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);
このアプリケーションは、現在のユーザーがWindowsとLinuxのどちらを使用しているかを確認してから、OSカーネルのバージョンを提供します。
終了して保存し、次を実行します。
dotnet run
.NETアプリケーションをクロスプラットフォームにする
dotnetproject.csproj
LinuxとWindowsの両方のプラットフォーム用にビルドするように.NETに指示するには、.NETプロジェクトファイルを更新する必要があります。
エディターdotnetproject.csproj
を開いて、以下を追加します。
<PropertyGroup>
<RuntimeIdentifiers>win10-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>
これにより、.NETは、Windows 10x64とLinuxx64の両方の自己完結型バイナリを構築できるようになります。
クロスプラットフォームアプリケーションを構築する
プロジェクトを構成すると、.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ファイルシステムにコピーします。
cp -r ~/dotnetproject/bin/Debug/netcoreapp3.1/win10-x64/publish /mnt/c/Users/Hayden/OneDrive/Desktop/
翻訳者注:Ubuntuシステム
の/mnt/
ルートディレクトリは次のとおりです。Windowsファイルシステム、/mnt/c/
つまりWindowsシステムCドライブを参照してください。
次に、以下を実行します。
/mnt/c/Users/Hayden/OneDrive/Desktop/publish/dotnetproject.exe
これまで、LinuxとWindows用に同じアプリケーションを構築して実行してきました。WSLを使用してそれらを同時にテストできます。
著者:haydenb
翻訳者:Technical Zemin
出版社:Technical Verses
リンク:英語テキスト
https://ubuntu.com/blog/creating-cross-platform-applications-with-net-on-ubuntu-on-wslWSL上のUbuntuで.NETを使用したクロスプラットフォーム開発の開始↩︎
https://ubuntu.com/wsl UbuntuのWSLに↩︎
https://ubuntu.com/blog/ubuntu-on-wsl-2-is-generally-available WSL2上のUbuntuが一般提供されています↩︎
https://www.microsoft.com/store/productId/9N6SVWS3RX71 MicrosoftStoreのUbuntu20.04LTS↩︎
https://wiki.ubuntu.com/WSL UbuntuのWSLのwikiに↩︎
https://www.microsoft.com/store/productId/9N0DX20HK701MicrosoftストアのWindowsターミナル↩︎
https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu ↩︎