환영합니다, 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으로 추정) 버전을 사용하고 있는데, 그냥 안정 빌드로 내려갈까봅니다. 조금 답답하네요.
'C# & .NET' 카테고리의 다른 글
[C# 10.0] C#의 편리한 구문들 모음 (Syntax Sugar) (0) | 2022.02.23 |
---|---|
[C# UWP] UWP에서 설정값 저장하고 불러오기 (0) | 2022.02.23 |
[C# UWP] UWP에선 ConfiguraionManager 대신 이걸 사용하세요 (0) | 2022.02.23 |
[C# ML] C#으로 머신러닝 모델 구축하기 (ML.NET) (5) | 2022.02.20 |
C# 9.0: switch의 기능, 이젠 이런 것까지? (0) | 2021.05.14 |