닷넷 코어에서 닷넷 프레임워크 앱을 실행하는 방법을 알아냈습니다.

카테고리를 어디에다가 해야할지 몰라 일단 자유게시판에 올립니다.

제목은 어그로가 아닙니다. 실제로 JetBrains가 Rider의 ReSharper 백엔드를 닷넷 코어에서 실행시키기 위해서 이것과 비슷한 방법을 사용합니다. (정확히는 JetBrains는 dotnet exec 명령어를 사용한다는 점이 다르지만 runtimeconfig.json을 이용한다는 점에서는 동일합니다.)

먼저 닷넷 코어를 타겟해서 앱을 하나 만듭니다. 빌드를 해 주고 출력 디렉토리의 runtimeconfig.json을 어딘가에 복사해 줍니다.

그리고 닷넷 프레임워크로 타겟을 변경하고 다시 빌드를 해 줍니다.

출력 디렉토리에서 터미널을 열고 dotnet (name).exe를 하면 self-contained 앱 실행에 실패했다면서 실행이 안 될것입니다.

여기서 마법을 써 보겠습니다. 아까 복사한 runtimeconfig.json을 출력 디렉토리로 복사합니다. 그리고 다시 dotnet (name).exe를 실행합니다. 거짓말같이 앱이 실행됩니다!

주의사항: 당연하겠지만 이 방법으로 모든 앱이 실행된다는 보장은 없습니다.

출처: Can .NET 5 run exe targeting .Net Framework? · Issue #62521 · dotnet/runtime · GitHub

9개의 좋아요