VS2022 컴파일은 정상인데 디자이너만 오류가 발생.

안녕하세요

비주얼 스튜디오 2022에서 이해가 안되는 디자이너 오류가 발생합니다.

기존 노트북은 윈도우10이고 vs2022 17.8.1 버전을 사용하고 아무 문제 없었습니다.
새로 구매한 노트북에서는 윈도우11이고 vs2022 17.9.4 버전입니다.

윈도우10에서 개발하던 똑같은 소스를 윈도우11로 바뀐 새 노트북에서 열었더니 디자이너에서 오류가 발생합니다.
빌드도 정상적으로 되고 실행도 되고 디버깅도 잘됩니다.
디자이너에서 오류가 발생하는것 말고는 모든게 정상적으로 동작합니다.

문제되는 로직을 간단하게 설명하면
리소스 dll을 분리하고 윈폼 부모클래스에서 form load 이벤트에서 리소스dll에서 이미지를 가져와 처리하는 부분이 문제인거 같습니다.

윈폼과 윈폼에 상속할 부모클래스는 .netframework 4.7.2 이고
리소스와 관련된 프로젝트는 netstandard2.0 입니다.
system.drawing.common 8.03 누켓 패키지를 받아 개발했습니다.

.netframework 4.7.2에 내장된 Ssystem.Drawing.Image 클래스와 system.drawing.common에 내장된 Image 클래스와 어떤 문제가 발생하는게 아닌가 싶은데 왜 디자이너에서만 문제가 발생하는지 모르겠습니다.

윈도우11 문제인지 새로 설치한 비주얼스튜디오 릴리즈 버전의 문제인지…
GetImage 부분만 삭제하면 윈도우11 노트북에서도 아무 문제가 없습니다.

또한 윈도우11 노트북에서 vs2019로 동일소스를 열어서 보면 디자이너 문제가 없습니다.
빌드도 잘 되구요.

해결방법이나 의심갈만한 힌트라도 있으면 말씀해 주시면 정말 감사드리겠습니다.

답글 달아 주실 모든 분들께 미리 감사의 말씀 드립니다.

오류가 나는 부분만 간략하게 만든 샘플소스 첨부합니다.

1 Like

윈폼 디자이너가 .NET Strandard Target의 프로젝트를 불러오지 못하는 버그인 듯 합니다.
MyResources 프로젝트와 MyClassLibrary의 TargetFramework을 net472로 설정하면 잘 로딩되는 듯 합니다.

<PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <!--<TargetFramework>netstandard2.0</TargetFramework>-->
</PropertyGroup>

또는 DesignerTestForm 프로젝트를 직접 수정하셔서 UseWinFormsOutOfProcDesigner 속성을 추가해보세요.

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
   ...
    <UseWinFormsOutOfProcDesigner>True</UseWinFormsOutOfProcDesigner>
  </PropertyGroup>

winforms/docs/designer/designer-selection.md at main · dotnet/winforms (github.com)

이 옵션과 관련해서 64비트로 구동되는 VS2022 내부에서 윈폼을 처리하기 위한 동작이 17.9 버전부터 뭔가 변경이 발생한 것 같습니다.

5 Likes

TarketFramework 바꾸는건 공용라이브러리라 쪼금 어려울듯 하고
True 하니까 샘플에서는 디자이너가 열리는데…
실제 개발소스에서는 또 다른 오류가 발생하기는 하네요.
일단 한걸음 전진된거 같습니다.
감사합니다.

2 Likes