WSLUbuntuで.NETを使用したクロスプラットフォーム開発の開始

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

WSL1を有効にする

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

WSL2を有効にする

次に、Windowsオペレーティングシステムを再起動します。

Restart-Computer

UbuntuをWSLにインストールする

MicrosoftストアからUbuntuをダウンロードします。

マイクロソフトストア上のUbuntu 20.04 LTS 4

MicrosoftストアのUbuntu20.04 LTS

UbuntuをWSL にインストールする方法の詳細については、WSLwikiページ5でUbuntuを確認してください

Windowsターミナルをインストールする

MicrosoftストアからWindowsターミナルをダウンロードします。

マイクロソフトストアでのWindowsターミナル 6

MicrosoftストアのWindowsターミナル

GitHubからWindowsターミナルダウンロードすることもできます。

WSLでUbuntuを実行する

Windowsターミナルを開いて実行します。

ubuntu.exe

初めてWSLでUbuntuを実行すると、Ubuntuがインストールされ、Windowsユーザーから独立したLinuxユーザーを作成するように求められます。

WSLでUbuntuを実行する

Windowsターミナルを終了して再度開くと、ドロップダウンメニューにUbuntuが表示されます。

ドロップダウンのUbuntu

settings.jsonでWindowsターミナル設定し、Ubuntuをデフォルト項目として設定できます。

WSLでUbuntuを更新する

定期的に更新を確認し、WSL上のUbuntuでアップグレードを実行する必要があります。apt(Ubuntuパッケージマネージャー)を使用して実現します。

更新を確認するには、次のコマンドを実行します。

sudo apt update

sudo apt update

アップグレードを取得するには、次を実行します。

sudo apt upgrade

sudoaptアップグレード

あなたは使用することができ&&、同じ行に接続し、追加するためにそれらを-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を使用している場合は、することができ、対応するリソースライブラリを見つけるには、マイクロソフトのドキュメント 7LTSと中間バージョンの違いについて詳しくは、8ページのリリースサイクルをご覧ください

バージョン20.04用のMicrosoftのリソースライブラリとキーパッケージをダウンロードします。

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb

Microsoftリポジトリとキーパッケージをダウンロードします

dpkg -iを使用して、Microsoft ResourcePackを手動でインストールします。

sudo dpkg -i packages-microsoft-prod.deb

Microsoftリポジトリパッケージをインストールします

aptを更新すると、Microsoftリソースライブラリがチェックされ、アップグレードされていることがわかります。

aptアップデート

.NETSDKをインストールします

aptを使用して、Microsoftリポジトリから.NETおよび関連する依存関係をインストールします。

sudo apt-get install dotnet-sdk-3.1 -y

.NETSDKをインストールします

新しいワークスペース

新しい作業ディレクトリを作成して開きます。

mkdir dotnetproject
cd dotnetproject/

ワークスペースを作成する

新しい.NETプロジェクトを作成します

dotnet new新しい.NETコンソールプロジェクトを作成するために使用します。これにより、名前付きProgram.csファイルとその他の必要なフォルダーおよびファイルが作成されます。

dotnet new console

新しい.NETプロジェクトを作成します

.NETアプリケーションを探索する

新しい.NETプロジェクトのファイルを一覧表示します。

ls

Program.cs内容を確認してください

cat Program.cs

.NETアプリをご覧ください

サンプルプログラムを実行します。

dotnet run

サンプルプログラムを実行する

.NETアプリケーションをカスタマイズする

お気に入りのエディターで開きますProgram.cs:vi、nano、emacs、またはリモートWSL拡張機能を備えたVS Code

リモートWSL拡張機能を使用したコード

ここでは、WSLのUbuntuに含まれているnanoを使用します。

nano Program.cs

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);

コードを置き換える

このコードはここに もあります9

このアプリケーションは、現在のユーザーがWindowsとLinuxのどちらを使用しているかを確認してから、OSカーネルのバージョンを提供します。

終了して保存し、次を実行します。

dotnet run

終了して保存して実行します

.NETアプリケーションをクロスプラットフォームにする

dotnetproject.csprojLinuxとWindowsの両方のプラットフォーム用にビルドするように.NETに指示するには、.NETプロジェクトファイルを更新する必要があります。

エディターdotnetproject.csproj開いて、以下を追加します。

<PropertyGroup>
    <RuntimeIdentifiers>win10-x64;linux-x64</RuntimeIdentifiers>
</PropertyGroup>

これにより、.NETは、Windows 10x64とLinuxx64の両方の自己完結型バイナリを構築できるようになります。

.NETアプリケーションをクロスプラットフォームにする

クロスプラットフォームアプリケーションを構築する

プロジェクトを構成すると、.NETアプリケーションの構築は非常に簡単になります。

dotnet publish -r win10-x64
dotnet publish -r linux-x64

dotnetpublish

プロジェクトは/bin/、各プラットフォームのバイナリファイルフォルダーと、それに必要なすべてのライブラリに含まれています。

ls bin/Debug/netcoreapp3.1/

ls bin / Debug / netcoreapp3.1 /

Linuxバージョンをテストする

Linuxバイナリファイルは次のように直接実行できます。

./bin/Debug/netcoreapp3.1/linux-x64/publish/dotnetproject

Linuxビルドをテストする

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

Windowsビルドをテストする

これまで、LinuxとWindows用に同じアプリケーションを構築して実行してきました。WSLを使用してそれらを同時にテストできます。


著者:haydenb
翻訳者:Technical Zemin
出版社:Technical Verses
リンク:英語テキスト

公開番号:技術翻訳ステーション


  1. https://ubuntu.com/blog/creating-cross-platform-applications-with-net-on-ubuntu-on-wslWSL上のUbuntuで.NETを使用したクロスプラットフォーム開発の開始↩︎

  2. https://ubuntu.com/wsl UbuntuのWSLに↩︎

  3. https://ubuntu.com/blog/ubuntu-on-wsl-2-is-generally-available WSL2上のUbuntuが一般提供されています↩︎

  4. https://www.microsoft.com/store/productId/9N6SVWS3RX71 MicrosoftStoreのUbuntu20.04LTS↩︎

  5. https://wiki.ubuntu.com/WSL UbuntuのWSLのwikiに↩︎

  6. https://www.microsoft.com/store/productId/9N0DX20HK701MicrosoftストアのWindowsターミナル↩︎

  7. https://docs.microsoft.com/en-us/dotnet/core/install/linux-ubuntu ↩︎

  8. https://ubuntu.com/about/release-cycle ↩︎

  9. https://pastebin.ubuntu.com/p/swbPxXXSKD/ ↩︎

おすすめ

転載: blog.csdn.net/weixin_47498376/article/details/112051033