종속성 연결 문제는 현재 없습니다. 저도 가급적 중복된 종속성은 지우고 있습니다.
그런데, 그것보다 더 중요한 프레임워크 간에 비호환 문제는 있습니다.
구 닷넷이 어디까지를 말씀하시는 것인지는 잘 모르겠으나, 현재는
- 윈도우 전용인 “.Net Framework”
- 크로스 플랫폼을 위한 “.Net Core”
- 크로스 플래폼의 신버전인 “.Net”
체제로 나뉘어 있습니다. 아마 “.Net Framework” 의 초기 버전을 사용하셨던 것 같네요.
이렇게 나뉜 이유는 마이크로소프트가 윈도우 전용을 포기하고, 크로스 플랫폼에 집중하기로 전략을 변경했기 때문입니다. 윈도우 전용 닷넷은 더 이상 버전업을 하지 않고, 크로스 플랫폼만 버전업을 하여, 현재 .Net 7.0 이 정식으로, .Net 8.0 이 프리뷰로 배포되고 있습니다.
여기서 문제가 되는 것은, 특정 프레임워크만을 위한 라이브러리를 그와 다른 프레임워크에서 사용할 경우 문제가 발생할 가능성이 있습니다.
그래서, 닷넷 용 라이브러리의 메뉴얼을 볼 때, 지원 프레임워크가 무엇인지 항상 먼저 살펴봐야 합니다. 예를 들어, 어떤 라이브러리의 메뉴얼 하단에, 아래와 같이 적혀 있으면,
이 라이브러리는 .Net Core 와 .Net Framework 용 앱에는 사용을 하지 못합니다.
사실, 컴파일러가 명확하게 지원이 안된다는 것을 말해주는 경우도 있고,
말해주지 않았는데도 문제가 없는 경우도 있고,
말해주지 않고 문제가 있는 경우도 있고 그렇습니다.
그런데, 닷넷의 모든 프레임워크에서 사용가능한 라이브러리 작성을 위해 .NetStadard 라는 기준이 있습니다. 그러나, 여기에서도 주의할 게 있습니다.
이 기준의 가장 마지막 버전은 .NetStandard 2.1 이고, 그 직전 버전은 .NetStandard 2.0 입니다.
.NetStandard 2.0 은 그야말로 모든 프레임워크이 준수하지만, 2.1은 윈도우 전용인 .Net Framework는 준수하지 않습니다.
즉, 어떤 라이브러리가 .NetStandard 2.0 용으로 작성되었다면 호환성 문제를 검토하지 않아도 됩니다.
개인적으로는 이렇게 쪼개진 프레임워크들이 닷넷이 인기가 없는 가장 큰 요인이지 않을까합니다.
초보자의 경우, .Net Framework 용 윈폼 프로젝트를 생성해 놓고, 정작 학습은 .Net 용 윈폼 문서를 참조한다던가… 하는 그런 웃픈…