기본적으로 사용자 통계를 봤을 때 윈도우 업데이트가 되어있는 곳이 많지 않았습니다.
일단 프로그램 변경 시 요구사항은 닷넷을 런타임으로 포함하면 좋겠다 인데…
만약 4.8로 사용하는 경우 런타임으로 포함을 못시켜서 결국 3.5를 그대로 유지하자라고 할 수 있을 것 같습니다. (기존 프로그램 UI가 너무 잘못되어 있어 결국 프로그램을 새로 짜긴 합니다)
이런 상황이면 .net frameowork 3.5와 .net 5/6중에서 뭘 사용하시나요? 어차피 닷넷에서 지원은 둘 다 끝난거라 지원 측면 제외하고 고려해야 할 것 같습니다.
.net5/6을 고려하는 이유는 결국 장기적으로 win10/11로 유저층이 옮길 것인데…
그때 가서 .net 버전을 올릴려면 지금이라도 .net 5/6으로 해놔야 나중에 win7 지원을 종료 할 때 .Net 버전 업데이트가 편하지 않을까 싶어서 입니다.
어차피 NET Framework마저 업데이트가 필요한 상황이라면요…
가능하다면 6을 고려하시면 좋겠다고 생각합니다만… 쪼금 먼 길이 될 수도 있겠습니다.
닷넷 6 마저도 처음 첨부드린 링크를 확인하시면 아시겠지만,
기본적으로 Windows 7 SP1 + ESU 설치 및 Microsoft Visual C++ 2015-2019 Redistributable가 필요하고요,
여기서부터가 출발선입니다.
이제 여기서 NET 6 런타임을 설치해야 간신히 작동하는 부분입니다.
그렇다고 닷넷 5를 쓰기에는
Winform도 그렇고, 처음 새 닷넷에 도입되고 얼마 되지 않던 시절이라 많이 불안정하지 않을까 걱정됩니다.
이 부분은 공식적인 내용이 아니니, 충분히 테스트 및 검토 하시면 해결 될 수도 있습니다.
이런식의 breaking changes가 있는데, 이를 참고해서 진행 해 주시면 될듯하네요.
윈도우7에 WinForm 프로그램인 것 같은데 저라면 .NET Framework 4.8 또는 최소 .NET Framework 4.7.2로 개발할 것 같습니다.
다른 분 들 포스팅 등을 봤을 때 WinForm이나 WPF는 낮은 .NET 버전에서는 .NET Framework보다 몇몇 부분에서는 오히려 더 안좋을 것 같아 보이더군요.
.NET 8과 .NET Framework 앱을 동시에 몇년 째 개발하고 있는 입장에서 봤을 때, 인스톨러에 .NET Framework 4.8 오프라인 설치 인스톨러를 포함시켜서 .NET Framework 4.8이 없을 때만 설치되게 하면 되므로 인터넷 연결도 필요없고 윈도우 업데이트 여부도 상관없으니 윈도우 7에 .NET Framework 배포는 별 문제가 안됩니다.
그리고, 미래를 위해 대비하실거라면 UI와 상관없는 비즈니스 로직들은 .NET Standard 2.0으로 개발해놓으시면 .NET이든 .NET Framework이든 모두 사용할 수 있습니다. 위에서 .NET Framework 4.7.2를 언급한 것은 .NET Standard 2.0 어셈블리를 불필요한 외부 어셈블리 참조를 최소화하면서 사용할 수 있는 버전이 4.7.2부터이기 때문입니다.
게다가, .NET Framework에는 기존에 있던 수많은 WinForm용 서드파티 컴포넌트를 그대로 사용할 수 있다는 것도 큰 장점입니다.
그리고, 솔직히 성능 측면에서 본다면 ASP.NET Core같은 서버 쪽이 아닌 윈도우 클라이언트 쪽은 .NET이나 .NET Framework이나 얼마나 차이가 날까 싶네요.
참고로, .NET Framework 3.5로 개발된 프로그램도 exe.config 파일에 .NET Framework 4.0 지원된다고 xml에 설정 추가해주면 .NET Framework 4.0으로 돌아갑니다.
제 경험으로는 호환성에는 문제가 없었으며, 이런 식으로 기존 exe을 일단 그대로 가져가면서 .NET Framework 4.x로 차츰 이전하되, .NET Standard 2.0을 적극 활용하여 미래에도 대비하면 되지 않을까 싶네요.
저도 .Net 5는 너무 초기라 걱정되서 6가 나을거 같다라고 생각은 했는데, 역시 ESU 외에도 추가로 설치해야 되는 부분이 있군요…
Vmware에서 설치 테스트를 해보고 안되겠다 싶으면 3.5든 4.8이든 .net frameowork로 가는게 맞을 것 같습니다 ㅠㅠ… 고민해주셔서 감사합니다.
몇몇 사용자분들 확인해봤는데 SP1 극 초반 Windows 7에 업데이트도 비활성화 된 사람들이 많아서 .Net Framework 4.8을 설치하려 해도 ESU가 없어서(또는 낮아서) 인증서 관련 문제로 안되는 상황이 많더라구요! 수동으로 ESU를 설치하다 보니, 이걸 시작으로 .Net 5/6 을 고민(어차피 ESU를 설치해야 하면 .net 4.8이 아니라 5/6 이상으로 가는게 낫지 않을까? 라는)했던 것 같습니다.
오히려 응용 프로그램이라면 PC의 컴퓨팅 파워가 온전히 Desktop Application의 것이라서 신규 .NET에서 지원하는 최신 & 최적화된 API를 사용하여 개발자가 수동으로 만들어야 하는 기능들이 추가되어 정렬된 코드로 만들어진 것을 미리 이용할 수 있기 때문에 컴퓨팅 파워를 더 잘 끌어낼 수 있다고 생각합니다.
또한 .NET 자체에서 만들어진 기능을 이용하면, 그것을 계속 유지보수하고 업데이트 해줄 것이라서 .NET을 버전만 올리더라도 혜택을 받을 수 있는 여지도 존재하죠. 이 부분은 언급하신 ASPNETCore도 같은 맥락이겠네요.
추가로 현대적인 문법으로 유지보수도 더 좋게 할 수 있다고 생각합니다.
(물론 공장이 특성이라면 개발자 분들이 신규 C# 문법에 거부감을 느껴서 도입을 꺼리실 수도 있지만 이것은 다른 문제 ㅎㅎ)