こんにちは。よっしーです。
今回は、Visual Studio 2017 の C#(.NET Framework)で作ったコンソールアプリを
.NET Core を使ってLinux上で動かす。という前回からの続きです。
まず、Linux(Ubuntu)へ .NET Core をインストールします。
(現在最新バージョンの .NET Core 2.1 を入れます)
公式サイト(https://dotnet.github.io/)にディストリビューションごとの
インストール手順が記載されていますので参考にして下さい。
私の手元には Ubuntu14.04 があったので、今回はそこへインストールしました。
Microsoftのキーとフィードを登録
$ wget -q https://packages.microsoft.com/config/ubuntu/14.04/packages-microsoft-prod.deb |
$ sudo dpkg -i packages-microsoft-prod.deb |
.NET Core をインストール
※ 公式サイトの手順は、sdkをインストールしていますが、
今回は実行環境のみインストールしたいので、runtimeをインストールしています。
今回は実行環境のみインストールしたいので、runtimeをインストールしています。
$ sudo apt-get install apt-transport-https |
$ sudo apt-get update |
$ sudo apt-get install dotnet-runtime-2.1 |
これで実行環境が用意できました。
あとは、前回 Visual Studio で作成した、
実行ファイル一式を、Linux上へ配置します。
$ tree |
. |
|-- dotnet_sample.deps.json |
|-- dotnet_sample.dll |
|-- dotnet_sample.pdb |
`-- dotnet_sample.runtimeconfig.json |
これで準備完了です。さっそく実行してみましょう。
dotnet コマンドにDLLファイルをパラメータとして渡して実行します。
$ dotnet dotnet_sample.dll コマンドライン引数A コマンドライン引数B |
コマンドライン引数A, コマンドライン引数B |
/home/yossy/dotnet_sample |
コマンドライン引数とカレントディレクトリのパスを表示し、
text.txt を出力しています。内容を覗いてみると。。。
$ cat test.txt |
コマンドライン引数A |
コマンドライン引数B |
コマンドライン引数として渡した文字列が正しく格納されています。
Linux上で.NET Framework を用いたプログラムが動作していることがわかります。
今回、簡単なサンプルプログラムを作ってみましたが、注意する点として、
WindowsとLinuxではパスの扱いが異なる。ということが挙げられます。
例えばディレクトリ階層を "¥¥" で連結しているようなプログラムは、
Windows側だと正しく動きますが、Linux側ではパス異常となります。
× Windows側でしか正しいパスにならない。 |
string path = Directory.GetCurrentDirectory() + "\\" + "test.txt"; |
○ パス結合するライブラリを用いることでWindows/Linux共通で動作する |
string path = Path.Combine(Directory.GetCurrentDirectory(),"test.txt") |
上手くそれらを使うようなプログラミングを心がけましょう。
ではまた~。
0 件のコメント:
コメントを投稿