목적: 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 Forms 애플리케이션을 만들었습니다.
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
우분투에서 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 가져오기.. 완료하고 다시 컴파일을 시도했을 때 Mono가 개체, 정수, 이중 등과 같은 일반적인 Microsoft 개체 파일 형식을 인식하지 못한다는 수백 개의 오류가 발생했습니다.
이제 나는 길을 잃었고 당신의 도움이 필요합니다. Linux에서 Windows Forms 애플리케이션 GUI를 실행하는 방법은 무엇입니까? 아니면 디버깅 프로세스가 성공했나요?
고마워하는,