目的:Linux上でVS2005で作成されたWin32 .Net2.0 Formsアプリケーションを実行します。私は以下を試しました:
- このリンクに従ってMonoをインストールしました。run-net-2-0-applications-for-win
実行してみました。 ->最終的に次の警告が表示されました。
WARNING: The runtime version supported by this application is unavailable.
デフォルトのランタイムを使用する:v4.0.30319
未処理の例外:
Unhandled Exception:
System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes' or one of its dependencies.
File name: 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes'
[ERROR] FATAL UNHANDLED EXCEPTION: System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes' or one of its dependencies.
File name: 'System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=969db8053d3322ac, Retargetable=Yes'
2. 次に、app.config ファイルを使用して、VS2015 で以下を含む「Hello world」シンプルな Windows フォーム アプリケーションを作成しました。
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
UbuntuでMonoDevelopを使ってコンパイルして実行しました。成功しましたが、上記の警告が表示されました。<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
私が一人で言ったのとは異なり、プロセスをデバッグして、アプリケーションで欠けている部分が何であるかを見てみましょう。
私は3つの異なるデバッガ(winedbg、IDA、およびmono --debug)を試しましたが、文書が簡単でわかりやすいので、後者を試すことにしました。ドキュメントによると、Mono Developmentデバッガツールは、プログラムが「MonoDevelop」で開発され、「デバッグ」モードでコンパイルされた場合、またはWindowsで開発され、MonoDevelopで正常にコンパイルされた場合にのみ使用できることがわかりました。
アプリをコンパイルしようとすると、アプリへのすべての参照が一致しないため、インストールに時間がかかりました。
sudo apt-get install libmono-system-windows-forms4.0-cil
システム *.dll をインポートします。
今私は迷子になり、あなたの助けが必要です。 LinuxでWindowsフォームアプリケーションGUIを実行するには?それともデバッグプロセスが成功しましたか?
ありがとう、