닷넷프레임워크로 빌드된 콘솔 및 윈폼 응용프로그램을 mono를 활용해 리눅스에서 실행할수있다는 사실은 일찍이 알고있었고,

컨테이너상에서도 GUI출력을 하는법이 있다는것도 들어본적이 있으나, 접근성 대비 그닥 유용해보이지 않아 조사하지 않고있었다.


sickcodes/dock-droid: Docker Android - Run QEMU Android in a Docker! X11 Forwarding! CI/CD for Android!

헌데 위 컨테이너를 구경하다 WSL환경에서 GUI출력이 냅다 되버렸다.


문득 같은방법으로 모노도 출력이 가능한가 싶어 테스트해보니까 냅다 되었다.


docker run -it --device /dev/kvm -v /tmp/.X11-unix:/tmp/.X11-unix -e "DISPLAY=${DISPLAY:-:0.0}" -v "/mnt/c/Users/user/.. :/path" mono

mono /path/gui.exe


최상단의 캡쳐는 WebBrowser는 원하는대로 출력되지 않은것을 확인한것이다. CefSharp을 쓰면되런지는 모르겠다.

추후조사 : https://www.mono-project.com/docs/gui/winforms/webbrowser/


뭐가됬든 신기하던 재밋고 잘되던 영양가있는 미래비전은 아니기때문에 메모만 하고 종료



+2025-02-18


보다 윈도우종속적인 기능을 활용할경우 모노만으로 실행이 불가능한경우가있는데, wine-mono로 가능해질수 있었음.

Aspire로 집어넣고 실험하다가 역시뻘짓임으로 다시 폐기


builder.AddContainer("winform", "kobigurk/wine_mono")

    .WithEndpoint(504, 504)

    .WithBindMount(("../WindowsFormsApp1"), "/app")

    .WithEntrypoint("bash")

    .WithArgs("-c", "wine msiexec /i /wine-mono-4.7.0.msi /SILENT; cd app; wine *.exe");