この特定のケースでは、Linux用に.complicated NETアプリケーションを実行する必要があります。複雑です。つまり、そのプロジェクトは3年間開発されたものであり、Javaまたは他の何か、.NETとJava以降のバージョン)の両方を開発およびサポートします。
アプリケーションが(winapi/dllインポートによって)マウスおよびキーボードイベントを生成し、シリアルポートを使用している。遅延用のタイマーもいくつかあります-シリアルポート通信用です(10-20ms、ここでは大きな精度は必要ありません)。
残りは、単純なコードがたくさんあり、特別なものはなく、奇妙なコントロールはなく、directxもありません。
私は何を期待すべきですか?これは機能しますか?
コードの一部が失敗する場合-少し変更できます。Linuxで.netアプリとミニアプリケーションをネットワーク接続して、マウスとキーボードのイベントを送信したり、RS232通信を作成したりできます。
さらに、Wineと.NET全般について質問したい:
Linux/Wine/Monoで実行する必要がある.NETアプリケーションを作成する方法は?
編集/コメントから移動:
私は数年前にモノを見ましたが、それはひどいものでした。今では成長しており、LINQ、スレッディング、その他の複雑な機能をサポートしています。さらに、ヘルプは本当に深刻に見えます。私はまだ答えを受け入れていません。私は人々がまだ非常に便利なリンクを投稿しているのを見ているからです。この質問に多くの+1が出た場合、私はそれを書き直し、多分これは他の人を助けるでしょう。
ここの誰かがここでLinux上の.NETの実用的な経験を持っていることを願っています...
http://www.mono-project.com でMono.NETについて読みましたか?
これにより、Microsoftの実装とは少し異なるLinux向けの.NETアプリを作成できます。 wineが.NETコンポーネントのどれにも対応しないと思います。
前にドキュメントを読んでください。
PS:これは、monoと.NET間の互換性リストも提供します。 http://www.mono-project.com/Compatibility および MoMA(mono移行アナライザー) は、作成済みの.NETアプリをスキャンして、 Linuxでの展開に互換性があります。
この投稿では、このスレッドで他の人から学んだすべての情報を短くしてまとめました。
Linux用の.NETのオープンソース実装はMonoと呼ばれます。
互換性は十分に文書化されています(以下のリンクを参照)。 Monoは、LINQ、スレッディング、その他の複雑な機能をサポートしています。
InteropServicesもサポートします。 LinuxライブラリでのDllImport(!)を使用することは可能です。たとえば、libc.so
などです。
MonoはAndroidおよびiOSをサポートできます(これらはLinuxベースです)。
Mono互換性分析用ツール MoMA(Mono Migration Analyzer)と呼ばれます
Mono Migration Analyzer(MoMA)ツールは、.NetアプリケーションをMonoに移植するときに発生する可能性のある問題を特定するのに役立ちます。プラットフォーム固有の呼び出し(P/Invoke)と、Monoプロジェクトでまだサポートされていない領域を特定するのに役立ちます。
役立つリンク:
WindowsやLinuxでMonoを実行する.netアプリケーションがいくつかあります。
必要に応じてVisualStudioで開発できます。Mono開発環境を使用する必要はありません。 Linuxで.netアプリケーションを実行するには、ランタイムモノライブラリのみが必要です。
モノは.net 2.0とほぼ100%互換性があるため、これらのアプリをVisualStudioでコンパイルするには、net 2.0ターゲットを使用します。 Monoは後の.netバージョンのAPISも実装しますが、すべてではなく、完全ではありません。 2.0より新しいバージョンの機能を使用する場合は、それらがサポートされているかどうかを確認するか、Mono互換性分析ツールを使用する必要があります。 Visual Studioの代わりにMono開発を使用することもできます。私の前任者はそれを行っていました。結果はほとんど同じで、代わりにVisual Studioを使用することを好みます。
大きな問題は見つかりませんでした。アプリは比較的複雑で、非常にマルチスレッド化されており、非同期I/O、WinForms、ソケット、シリアルポートなどです。
一部のアプリは、MS .netで利用できない.netライブラリを使用しましたが、これらすべてをWindowsにインストールすることもできるため、これらのアプリをWindowsで実行しても問題はありません。
それが役に立てば幸い
.NET Coreを使用してLinuxでC#アプリケーションを開発できます: https://www.Microsoft.com/net/core
インストールした後、dotnet new
ターミナルで、開始するために生成できるアプリケーションテンプレートのリストを取得します。
今日の.NET Core 2.0の時点で、これがリストです。
Templates Short Name Language Tags
--------------------------------------------------------------------------------------------------------
Console Application console [C#], F#, VB Common/Console
Class library classlib [C#], F#, VB Common/Library
Unit Test Project mstest [C#], F#, VB Test/MSTest
xUnit Test Project xunit [C#], F#, VB Test/xUnit
ASP.NET Core Empty web [C#], F# Web/Empty
ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC
ASP.NET Core Web App razor [C#] Web/MVC/Razor Pages
ASP.NET Core with Angular angular [C#] Web/MVC/SPA
ASP.NET Core with React.js react [C#] Web/MVC/SPA
ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA
ASP.NET Core Web API webapi [C#], F# Web/WebAPI
global.json file globaljson Config
Nuget Config nugetconfig Config
Web Config webconfig Config
Solution File sln Solution
Razor Page page Web/ASP.NET
MVC ViewImports viewimports Web/ASP.NET
MVC ViewStart viewstart Web/ASP.NET
現在の最新バージョンは2.0です。