2015-09-18 3 views
14

TL; DR:現在、Linux上でVS2015ソリューションを実行するためのオプションは何ですか?2015年のLinuxでの.NETアプリケーションの実行


私はWindowsで正常に動作し、Linuxに移植するための要求を受け取った.NETアプリケーションを持っています。私は2015年の今日の意味を理解しようと非常に努力してきましたが、私はMonoを指す古い投稿とvNextについて話している新しい投稿(とMonoも言及しています)と本当に混同しています。また、.NETで大丈夫な背景がありますが、一般的にはLinuxについてよく分かりません。

最近のチュートリアルに続き、LinuxでHello Worldコンソールアプリケーションをコンパイルして実行することができました。そのためにはMonoなどのわからないものをいくつかインストールしてから、いくつかの "k"コマンド(kpm restore、kpm build、k run)を実行する必要がありました。しかし、今私は実際のケースのシナリオに移行する方法を知らない。

私はプロジェクトをたくさん持っているVS2015のソリューションを持っているだけで4ここで言及する価値がある: - CommonStuff - ServiceCore - ServiceWindows/ServiceConsole

すべてのコードがServiceCoreプロジェクト(クラスライブラリ)でありますCommonStuff(別のクラスライブラリ)への参照を持っています。 ServiceWindowsはServiceCoreのMain関数を呼び出すWindowsサービスプロジェクトであり、ServiceConsoleはコンソールアプリケーション(Visual StudioからWindowsサービスプロジェクトをデバッグできないためデバッグ上の理由から)と同じことをします。

CommonStuffとServiceCoreには、多くの.NETライブラリとサードパーティのDLLが含まれています。 Windows特有のコードはありませんが、ピンボケやファンキーなものはありません。

ServiceConsoleをLinux上で実行したいアプリケーションにすると考えたら、それを実現するために何をする必要がありますか? Hello Worldをコンパイルすることは一つのことでしたが、現在、すべてのthoのリファレンスで...私はどこから始めるべきかわかりません。また、私はコードをLinux(独自のコード)でコンパイルすることさえできないので、Windowsでコンパイルするコードと、コンパイルされたdll/exeファイルをLinuxで直接実行する必要があります。私はMonoがコンパイルされたアプリケーションを実行できると言ったいくつかの記事を見てきましたが、私が見たMono turorialはそれぞれコンパイルを開始しています。また、私はこのvNextが何であるか分かりません。私はLinuxでコードを実行する能力についての記事を読んでいます。もしそれが.net 6のターゲットになっていれば...しかし、私はそれがどういう意味か、何を意味するのか分かりません。

オプションが今日のものであること、そしてプロフェッショナルなアプリケーションには現実的なものか、それともまだHello Worldsにしか役に立たないのか、誰かが詳細を説明するのに時間がかかると大変感謝します。

おかげ

EDIT:[OK]をので、私がVSに私のコードをコンパイルし、何とかモノを使用してLinux上でそれを実行することができそうです - どのように?

+1

_ "Windowsサービス[...]はありませんWindows固有の" _は計算されません。 「Monoを使用して.NET WindowsサービスアプリケーションをLinuxに移行する方法」を参照してください(http://stackoverflow.com/questions/637948/how-to-migrate-a-net-windows-service-application-to-linux-モノを使用して)。 vNextまたはASP.NET 5は、Webアプリケーションの次のものです。したがって、状況には関係ありません。私はそれ以上にあなたを助けることはできません。私は、 "Hello、World!"を超えてMonoで.NETを実行しようとはしませんでした。同じように。 – CodeCaster

+0

OS-X上の.Net/Monoサービス指向のアプリケーションを開発し、結果として得られるCILをWindowsとLinuxプラットフォームにいつでも展開できます。この質問は非常に一般的なので、直接答えることはできません。 Monoはxplatアプリケーションを実行するための実行可能なCLRプラットフォームですか?そうです。「Hello World」を超えて、はい、プロフェッショナルアプリですか?実際の回答はアプリケーション、コード、ユーザーエクスペリエンス、プラットフォーム要件などに基づいています...あなたは管理されていないInterOpを使用していないと述べましたが、Windows固有のコード、もしあれば、あなたのサービスなどを使用しています... – SushiHangover

+0

それはそれがWindowsサービスであることはそれほど重要ではないと思います。私はWindowsサービスとして動作するコードですが、私が言ったように、コンソールアプリケーションとして実行することができます。具体的には、アプリケーションの目的は、アイドリング(SignalR経由で受信したWebSocketや長いポーリング)を待ってから、サードパーティのDLLによって管理されるいくつかのデータベース(たとえばmysql、)に接続して、私たちのwebservice。 Windows特有の唯一のものはWindowsのログに書いていますが、私はそれを簡単にLinux用のファイルに書き換えることができます。 – Nicolas

答えて

14

Windows上でVisual Studio 2015を使用して、マルチプラットフォームまたはLinuxのみの複雑なアプリケーションを開発することがよくあります。あなたはVSでコンパイルするだけで、linuxにコピーして実行することができます。ほとんどの場合、これはうまくいくでしょう。深刻な開発を行う場合いくつかの不足しているメソッド\異なる署名を見つけるためにモノラルでコンパイルしたいですが、それはが必要ですではありません。

Windowsサービスはコンソールアプリケーションに変更できます。基本的には外部ツールで管理されているコンソールアプリケーションです。 Linuxには、あなたの "サービス"アプリケーションを管理する(障害時に\ stop \ restartを再開するなど)さまざまなツールがあります。

私は通常、問題なくモノで動作するServiceStackを使用します。 nginxの背後にあるコンソールアプリケーションとして、再び自己ホストすることもできます。コードの変更がほとんどまたはまったくなく、apache \ nginxの下でasp.netアプリケーションをホストすることもできます。

半年前、WindowsサーバーからCentOS 7サーバーに2年間開発された大きなプロジェクトを、セントーサにコピーして実行しました(ほとんど変更はせずに、モノラルで再コンパイルしません)。もちろん、そのプロジェクトには多くのサードパーティの依存関係があり、その依存関係の開発者の中にはモノが存在することさえ知らないものもありました。それでも、彼らはちょうど働いた。そのソリューションには約90のVSプロジェクトがありました。

もちろん、すべての複雑なプロジェクトは、特にネイティブライブラリを頻繁に使用すると、移植が容易ではありませんが、通常そうではありません。また、SQL Serverで作業している場合、モノでのSQL Server Driverは私の経験からかなり悪いことに注意してください。私はpostgreを使用して、私は選択肢があればモノとSQL Serverを避ける。モノで画像を扱うことも、バグがあり、不安定ではありません。そこにBitmapクラスを使用することは避けてください。代わりに、imagemagick C APIを使用してください。しかし、深刻で広範なイメージングを行う場合にのみ、基本的な作業のためにそこで行う必要があります。

2015年にLinuxで短時間でLinuxアプリケーションを実行することは、今日問題ではありません。

+0

" VSでコンパイルし、linuxにコピーして実行します。 " - 私はVSでコンパイルしてlinuxにコピーすることができますが、どうすれば正確に実行できますか?どのコマンドを実行する必要がありますか?詳細を教えていただけますか? – Nicolas

+0

Monoをインストールするだけです。あなたの問題が本当にわからないのですか? – user9993

+0

@Nicolas、monoをインストールしてから、 "mono YourConsoleApp.exe"を実行してください。サービスマネージャーの下で実行したい場合は、その下のアプリケーションを実行する方法を読むだけです(モノには関係ありません)。 – Evk

関連する問題