C# & .NET

[CS1545] GGHS Todo V1.5A, 오류와의 싸움

카루-R 2021. 10. 17. 15:30
반응형

환영합니다, Rolling Ress의 카루입니다.

아, 딱히 환영하진 않아요. 제가 지금 무지하게 스트레스를 받은 상태거든요.

문제의 원흉입니다. CS1545에러. 프로퍼티나, 인덱서나, 이벤트가 지원되지 않는다고 합니다. 이게 무슨 소리일까요? 음... 잘 모르겠어요. Microsoft에서도 확실한 대답을 해주지 않아서요. 심지어 뭐 어느 파일에 문제가 있다, 이것도 아니고... 그냥 GGHS Todo 프로젝트가 문제다! 이러면 제가 어떻게 아나요. 이걸 다 갈아 엎어야 하는데.

저는 맨 처음에 Visual Studio 2022 Preview의 버그인 줄 알았습니다. 그래서 전체 재설치도 해봤는데...문제가 안 없어지더라고요? 그래서 계속 일주일 동안 삽질을 하다... 그냥 다른 방법을 선택했습니다. 애초에 record 타입이란 건 immutable을 지원하기 위한 class의 한 형태의 불과하니... 아예 class로 선언하는 겁니다.

GGHS Todo는 여러분의 일정을 관리하기 위해 내부적으로 Todo라는 record를 사용했습니다. 여기에 마감기한, 과목, 제목, 메모를 넣을 수 있게끔요. 그래서 record를 사용했는데.. 생각해보니까 우리가 뭘 하나 메모한다고 해서 메모를 평생 수정하지 않으리란 법도 없죠. 아마 그래서 오류가 나지 않았나 싶습니다. 아 물론, 릴리즈 모드에서 오류가 나면 대부분이 그렇듯 이번에도 .Net Native Tool Chain에서 오류가 난 겁니다. 정말 끈질기게 괴롭혀주는 군요.

하는 수 없이 기존 Task 객체의 타입을 변경했습니다. 이 당시에는 C#의 record 타입을 잘 알지 못했어요. 뭐 C# 10에서는 record struct도 나온다고 하는데, 지금 상황이랑은 관련이 없으니 생략하죠. 아무튼, 저렇게 만들어줍니다. 여기서 default constructor을 정의한 이유는 XML Serialization 때문에 그래요. default ctor이 없으면 Serialization이 안 됩니다. 오류를 뿜어대요. 왠진 모르겠는데.

경고가 몇 개 있긴 합니다만, 이건 nuget 패키지에서 나오는 에러같네요. 저것도 뭔지 모르겠습니다. 근데, 막상 스토어에 제출하니까 이제 아무런 문제가 없네요. 뭔가 VS 2022에도 문제가 있긴 한 것 같습니다. 저 혼자 겪는 문제도 아닌 것 같고, 패키지 인증 키트도 어딘가 나사가 빠져있고.

현재 제가 노트북에 Windows 11 Dev 22471 (22H1으로 추정) 버전을 사용하고 있는데, 그냥 안정 빌드로 내려갈까봅니다. 조금 답답하네요.

반응형