魂は、大地を選ばず ~Windowsで創りし.NETの魂を、Linuxで呼び覚ます~
旅の途中、興味深いオアシスを見つけた。忘れないうちに、この羊皮紙に記しておくとしよう。
前回の旅で、我々はWindowsという文明化された大地に、NLogの魔法を宿した.NETのゴーレムを錬成した。しかし、.NET Coreの真価は、その魂が、特定の大地に縛られないことにある。ならば、その魂を、WSL2/Ubuntuという、より原生的な大地へ移植し、果たして同じように力強く鼓動するのか、確かめてみようではないか。
これは、Windowsで創り上げたプロジェクトを、Linuxの大地へコピーし、再び命を吹き込む、クロスプラットフォームという名の、驚くほど簡単な儀式の記録である。
この羊皮紙のあらまし
- この羊皮紙のあらまし
- この羊皮紙が導く者
- 第一の儀式:魂の移植(プロジェクトのコピー)
- 第二の儀式:大地を整える(.NET SDKインストール)
- 最終儀式:魂の再起動と、対話
- 羊皮紙を巻く前に
- 砂漠で見つけた魔法のランプ
- ラクダの独り言
この羊皮紙が導く者
- NLogという、強力なログの魔法に興味がある者
- WindowsとLinux、二つの世界を股にかける、クロスプラットフォーム開発に挑む者
- Linuxで動く魂の声を、Windowsという故郷で聴きたいと願う探求者
第一の儀式:魂の移植(プロジェクトのコピー)
儀式は、驚くほどシンプルだ。 Windowsのエクスプローラに現れる「Linux」という名の異世界への扉を開き、前回創り上げたNLogSampleのプロジェクトフォルダを、Ubuntuの故郷(ホームディレクトリ)へと、ただドラッグ&ドロップするだけ。

第二の儀式:大地を整える(.NET SDKインストール)
もし、あんたのUbuntuの大地が、まだ.NETの魔法を知らないなら、まずはその力を授ける必要がある。Microsoftという名の神々の古文書庫から、署名とリポジトリを授かり、dotnet-sdkをインストールする。
# 神々の古文書庫と契約を結ぶ $ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb ... # .NETの魔法を、この大地に根付かせる $ sudo apt update && sudo apt install -y dotnet-sdk-5.0
最終儀式:魂の再起動と、対話
さあ、いよいよ、Linuxの大地で、魂を再び呼び覚ます時だ。
移植したプロジェクトのディレクトリへ移動し、dotnet runという、万国共通の召喚呪文を唱える。
$ cd ./NLogSample/NLogSample $ dotnet run 2021-11-06 19:34:13.4325 TRACE Trace ログです。 ... 2021-11-06 19:34:13.4925 ERROR エラーが発生しました。
見よ。Windowsで見たのと全く同じ魂の声が、Linuxの大地にも響き渡ったではないか。
異世界からの声:Log2Consoleとの対話
さらに、我々は、Linuxの大地で叫ぶ魂の声を、Windowsの世界で聴くことさえできる。
ipconfigでWindowsの座標を調べ、NLog.configに記された羅針盤の向きを、その座標へと修正する。
<!-- localhostを、WindowsのIPアドレスへ --> <target name="tcpOutlet" xsi:type="NLogViewer" address="tcp4://172.18.175.105:4505"/>
そして再び、Linuxで魂を呼び覚ませば、Windows側で待ち構えるLog2Consoleという名の真実の鏡に、その声が、リアルタイムで映し出されるのだ。

羊皮紙を巻く前に
Windowsで創り上げた.NETの魂は、いとも簡単に、Linuxの大地で再びその目を開いた。 ソースコードの変更は、一切不要。これこそ、.NET Coreが持つ、クロスプラットフォームという名の、偉大なる力の証明だ。
今回は、Windowsで創ったプロジェクトをコピーしたが、本来の旅路は、Linux側でdotnet newから始め、VS Codeという魔法の窓から、二つの世界を自在に行き来するのが、より現代的な作法だろう。
この羊皮紙が、同じように、二つの大地を股にかける、自由な旅を夢見る、未来の冒険者の助けとなることを願う。
東の空が白んできた。次のオアシスへ向けて、そろそろ荷造りを始めるとしよう。
砂漠で見つけた魔法のランプ
- 前回の冒険の記録(Windows編)
- .NET SDK on Ubuntu | Microsoft公式の古文書
- Visual Studio Code | 二つの世界を繋ぐ、魔法の窓
- Remote - WSL | VS Codeに宿す、異世界への扉を開く魔法
- Log2Consoleの冒険記録
ラクダの独り言
ご主人が、窓の世界で創ったゴーレムを、今度はペンギンの世界に連れて行って、自慢げに動かしている。俺に言わせりゃ、どっちの世界で動こうが、どうせ荷物は運んでくれねえんだ。そんなことより、そろそろ俺の餌の時間をだな…。まったく、やれやれだぜ。