5

私は、主に Visual Studio 2012/c# を使用して Microsoft 開発スタックで開発を行ってきた長年の経験があります。しかし、今のところ、Linux でアプリを開発する必要があります。私はC ++を知っていますが、実際に触れてから何年も経ちました。いくつか質問があります。

  1. Mono を使用して開発し、Linux および Windows 用にバイナリをコンパイルして、コードを変更せずに (または最小限の) コード変更を行うことはできますか?
  2. Visual Studio 2012 を使用して Windows プラットフォームで開発し、Windows プラットフォームで Linux 用にコンパイルできますか? Windows プラットフォームで Linux 用にコンパイルするには、仮想マシンを使用する必要がありますか?
  3. WindowsプラットフォームでLinuxアプリを開発する場合、開発環境をどのようにセットアップしますか(Windowsで開発し、LinuxとWindows用にコンパイルします。テストに使用するLinuxボックスは別のマシンです。)

私が取り組んでいるものに関するいくつかの情報。私のプロジェクトは、ネットワーク チャネル分析に関するものです。クライアントはおそらくUIのない​​安価な産業用Linuxボックスです。mono/c# を使用してクライアントを開発しています。サーバーは、vs2012 c# を使用して開発された Windows です。ほとんどの場合、UIとしてwpfを使用しています。Linux(クライアント)とWindows(サーバー)の間でネットワーク/通信ライブラリを共有することを計画しています。Linux を使用する際の主な関心事は、クライアントがほぼ千単位であるため、コスト削減です。

ありがとうございました。

4

3 に答える 3

4

Mono は、Windows のネイティブ ファイル形式である PE (Portable Executable) 形式で実行可能ファイルを実行します。アプリが純粋な MSIL である限り、"Linux 用にコンパイル" する必要はありません。また、p/invoke を介してネイティブ DLL を使用する場合でも、Mono と Wine が連携して Linux で Windows ファイルを実行します。

(ネイティブ Linux アプリケーションで使用される a.out および ELF 実行可能形式には、.NET メタデータを格納するメカニズムがありません。PE 形式は .NET をサポートするように変更されたため、.NET Framework (Micro Framework ではない) 実装は、プラットホーム)

于 2013-08-28T05:44:01.663 に答える
3

最初に考慮すべき最も重要なことは、

  • Mono の WinForms には問題があります。ほとんどのサード パーティ コントロールが正しく機能しないだけでなく、libgdiplus 自体も Microsoft の GDI+ と 100% 互換ではありません。これは良い選択肢のように思えるかもしれませんが、後で非互換性と懸命に戦う必要があるかもしれません。
  • Mono はまだ WPF をサポートしていないため、WPF はオプションではありません。
  • GTK# は、Linux ディストリビューションと自然に調和する UI に最適です。Windows プロジェクトを適切にリファクタリングすると、Windows ソリューションと Linux ソリューション間で非 UI コードを共有できるはずです。これは、Mono が推奨するものです (Windows、Linux だけでなく、Mac/MonoMac、iOS/Xamarin.iOS、および Android/Xamarin.Android にもネイティブ UI フレームワークを使用します)。

それでは、質問に戻ります。

  1. 実際のプロジェクトでコードを変更しないでほしいと思うべきではありません。いいえ、それは不可能です。前述したように、UI 以外のほとんどの部分を共有する機会があります。
  2. 非 UI 部分と Windows のみの部分を VS2012 を使用して開発し、Windows でテストすることができます。Mono の WinForms または GTK# を使用する場合は、MonoDevelop を使用して Linux で開発およびデバッグする必要があります。したがって、Linux の仮想マシンまたは物理マシンのいずれかが必要です。
  3. 私の場合、Linux/MonoDevelop と Windows/VS を頻繁に切り替えます。

Mono + C# は C/C++ を使用するよりもはるかに生産性が高いため、Banshee や Tomboy など、多くの成功した Linux アプリが Mono で開発されています。

于 2013-08-28T08:35:51.767 に答える