반응형

Visual Studio 2022의 Preview 버전이 4.1까지 나왔다.

이제 충분히 안정화되었을 것이라 보고 VS2019로 만들었던 프로젝트들을 하나씩 이관하기 시작했다.

언제나 그렇듯 대부분의 프로젝트들은 별 문제 없이 잘 이관되었고, 몇 개만 문제를 일으켰다.

그리고, 언제나 그렇듯 이런 프로젝트들은 해결책 찾기가 너무나 어려웠다.

 

그중 가장 고갱님 당황하셨어요? 시추에이션은 Paint.NET 프로젝트.

C/C++ 프로젝트와 달리 별다른 마이그레이션도 필요없을 줄 알았는데, 현실은 언제나 시궁창...

 

 

그렇지 않아도 무슨 얘긴지 모르겠는데, 기계번역된 결과는 너무나 읽기 어렵다...

좌우지간 버전 간의 충돌이란 얘긴데...

 

1. 안일한 불의의 길[각주:1]

Paint.NET 포럼을 뒤져보니, 이미 많이 벌어졌던 문제[각주:2]이고, 완벽하진 않아도 나름의 해결책이 있는 것 같았다.

이 문제는 VS2022의 문제가 아니라, Paint.NET이 4.3.x로 업데이트되면서 발생[각주:3]한 문제였다.

 

대상 프레임워크를 .NET 5.0[각주:4]로 바꾸면 간단할 것 같은데...

막상 프로젝트 설정에 가보면 새 버전을 선택할 수가 없다.

 

.NET 5.0은요? 네?

 

포럼에서 가장 간단하게 언급된 솔루션은 관련된 Paint.NET의 dll 파일들을 구버전으로 대체해서 컴파일하는 것.

 

문제를 일으킨 원흉들

 

일단 Paint.NET의 구버전[각주:5]을 설치해서 저 dll 파일들을 백업해둔 뒤 다시 현재 버전으로 업데이트한다.

그리고, 이 파일들을 적절한 위치에 저장한 뒤, 프로젝트-참조에서 순정품 파일들 대신 이 파일들을 참조하도록 수정.

 

이렇게 하고 컴파일하면 잘 동작한다.

하지만, 디버깅 기능을 사용할 수 없다는 치명적인 문제가 있다.

 

2. 험난한 정의의 길[각주:6]

다시 처음부터 CodeLab을 사용해서 샘플 코드로부터 VS 프로젝트를 생성해보니 생성된 파일의 내용이 많이 다르다.

 

.NET Framework 4.x 시절에 생성된 csproj 파일은 아래와 같은 형태를 갖는다.

 

 

그런데, .Net 5.0 기반의 csproj는 아래와 같이 생겼다.

 

 

두 파일을 비교해가면서 조심스럽게 같은 형식으로 바꿔줬다.

그리고 다시 프로젝트 설정으로 가보면 아래와 같이 완전히 다른 형식으로 바뀌어있다.

 

.NET 5.0 선생님 반갑습니다

 

소스 파일인 .cs 파일에서도 약간의 변화가 있었다.

버전 번호를 명시할 때 1.0.* 형식을 사용할 수 없어 1.0.0.0 형식으로 수정해야 된다.

또한, assembly: SupportedOSPlatform 항목이 추가되었다.

 

이것까지 수정하면 정상적으로 컴파일도 되고, 디버깅도 할 수 있다.

 

 

  1. 물론 개드립임 [본문으로]
  2. VS2019에서도 있었던 문제라는 뜻 [본문으로]
  3. .NET 5.0으로 업데이트됨 [본문으로]
  4. 5.0부터는 "Framework"이라는 이름을 떼어버렸음 [본문으로]
  5. 4.2.x의 마지막 버전이 4.2.16이라 이 버전을 사용함 [본문으로]
  6. 역시 개드립임 [본문으로]
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band