0. はじめに
.Netの「System.Diagnostics.Process.Start」メソッドがLinux環境で動作するか検証する機会がありましたので、少し抽象化してこのような記事を書くことにしました。
まぁぶっちゃけ Microsoft公式ドキュメント には、一部のオーバーロードを除いて実行できるみたいに書かれているのですが、実際に動かして確認してみたいと思ったわけです。
1. 環境
- Windows 10
- Linux (Ubuntu)
- WSL2
- Visual Studio 2019 (Community)
- C#
- .Net Core 3.1
- .Net Standard 2.0
2. 動作確認用のアプリを実装する
「Process.Start」メソッドを使用して、SVNのログを出力するだけの簡単なアプリを実装しました。
分担は以下のようになっています。
名前 | 種類 | なんだこれは |
---|---|---|
SvnLib | .Net Standard | SVNのログを出力するライブラリ |
SvnTest | .Net Core | ↑を実行するコンソールアプリ |
実装はGitHubにアップしました。
3. Linux用にアプリを発行する
Windowsで動かす分には普通にビルドしてexeを発行すればいいのですが、Linuxで動かすにはLinux用のアプリを発行します。
Visual Studioを使用し、以下の手順で行います。
①対象プロジェクトのコンテキストメニューにて、「発行」を選択します。
②ターゲットタブにて「フォルダー」を選択し、「次へ」を押下します。
③特定のターゲットタブにて「フォルダー」を選択し、「次へ」を押下します。
④「参照」にてアプリの発行先を選択し、「完了」を押下します。
⑤「構成」又は「ターゲットラインタイム」の鉛筆(?)を押下します。
⑧指定したフォルダに発行されます。赤丸がLinuxアプリファイルになります。
4. Windows 10でLinuxを使うための環境構築
今回はWindowsでWSL2使ってLinuxを動かすので、そのための環境構築を行います。
私は以前Dockerを使用した際に環境構築していたので今回は不要でした。
当時は以下のサイトを参考にさせて頂きました。
5. Linux上で実行してみる
今回の場合はLinuxにsubversionを入れる必要がありましたので、↓を実行します。
sudo apt install subversion
環境が整ったところでアプリを実行させてみます。
cd /mnt/c/xxxxxx/SvnTest-Linux
./SvnTest "log --xml -v file:///mnt/c/xxxxxx -l 5" "svn"
----
5 : zzz変更
4 : zzz追加
3 : yyy削除
2 : xxx変更
1 : xxx新規追加
----
OK!
6. おわりに
次使う機会あるかな?と思ったことでも、抽象化してアウトプットしておくことが大事だと感じました!!