.NET 5.0 이상 버전을 Windows 7에서 구동 가능할까요?

현재 서비스 운용 중인 프로그램이 .Net Framework 3.5, Winform 프로젝트로 된 프로그램을 사용 중입니다.

이번에 Windows XP 지원을 종료하면서 .Net 버전을 올리려 하는데, Windows 7 지원으로 인해 고민이 됩니다.

장기적으로 보면 .Net 5 이상을 사용하는 게 맞는데 Windows 7에서 정상 구동 할 지를 모르겠습니다.
모든 Windows 7 환경의 테스트가 힘들 것 같아 질문 드리려 합니다.

  1. Windows7에서 Net 5 이상 버전 사용 시 문제가 되지 않을 최대 버전이 몇 일까요?
  2. .Net 을 설치하게 하지 않고, 임베드로 넣어서 실행 할 수 있을까요? 만약 가능하면 실행했을 때 성능에 저하가 있을까요?
  3. 여러분들이 보시기에는 .Net Framework 4.8과 .Net 5 이상 중 어느 것을 사용하는게 맞다고 보시나요? ( 현재 제 상황이라면 )
1개의 좋아요
  1. 먼저 이 링크를 보신다면 질문에 대한 답을 구하실 수 있을 듯 합니다.

.NET 6이 윈도 7을 지원할 수 있는 (일부 추가 조건 필요) 가장 높은 버전이지만,
짝수버전이라 LTS임에도 불구하고 닷넷6도 이미 지원 기간이 끝나서 고려를 조금 해보셔야 할 듯 하네요!

그리고 사실 윈도 7, 심지어 윈도 10마저도 이젠 지원 기간이 종료되는 수순이라
가능하시다면 장치 자체의 윈도를 올리는 걸 권장드리지만, 여의치가 않으실까요?

  1. 임베드라고 하시면 배포 옵션의 자체 포함 기능을 말씀하시는 걸까요?
  2. 기존이 레거시라면 닷넷 프레임워크 기조를 유지하시는 것도 좋겠다는 생각이 들었습니다.
    4.8 → 5도 breaking change가 아예 없지는 않았거든요.
    Windows 종속적인 라이브러리가 범용으로 바뀌면서 작업이 필요하실 수도 있습니다.
2개의 좋아요

우선 .net 5는 지원 종료 되었으므로 .net 6 이상이라고 봐야하는데요. 윈도우 7이 이미 지원 종료된지 오래된 버전이므로 질문자 말씀대로 해봐야 아는 문제로 보입니다.

  1. 지원 종료되지 않은 .net은 윈도우 10 이상입니다.
  2. 따로 성능 저하 여부에 대해서 듣지는 못했습니다.
  3. .net framework를 사용합니다.
2개의 좋아요

저희는 응용 프로그램 배포만 하고, 사실상 사용자의 환경이 문제가 되는 상황입니다.
사용자 보고 Window 업데이트를 하라고 강요 할 수 없는 상황인지라 고민중입니다

임베드는 Win7/10에서 .Net5 런타임 설치 없이 동작이 가능한지 여쭤본 것입니다!

1개의 좋아요

흔히 말하는 모던 닷넷, 즉 Core 를 포함한 NET 5 이상은
기본적으로 런타임 설치가 필요한 게 맞습니다.
하지만! 배포 옵션에 가시면

기본적인 실행 런타임을 함께 포함하여 배포할 수 있는 옵션
(결과적으로 사용자 입장에선 미설치와 같이 느껴지겠지요.)이 있고,
그 과정에서 너무 많은 파일들이 튀어나와 불편하시다면
단일 파일 배포도 가능함을 알려드립니다.

단점이라 함은 위와 같은 과정 하에
기본 바이너리에 비해 용량이 커진다는 단점이 있습니다.
xp 시절의 pc를 사용한다면 염두에 두셔야 할 부분일 수도 있습니다.

1개의 좋아요

감사합니다. 결정에 참고가 되었습니다!

1개의 좋아요

감사합니다. 최종 결정권이 저에게 있는 것은 아니지만 해당 내용으로 건의 드리려 합니다. 감사합니다

1개의 좋아요

사심 가득한 입장으로서는
최대한 최신 닷넷을 쓰는게 좋겠지만^^
사용자 입장도 고려해야 하고, 유지보수 및 사용환경도 고려해야해서 말이죠.

단 주의하셔야 할 부분!

보통 생각하면 .NET Framework는
윈도 업데이트만 꾸준히 받아도 윈도 7에도 4.8까진 지원 가능하다고 보셔도 되는데요,

만약 사용자 환경이 인터넷 연결이 되지 않아, 윈도 업데이트가 안 되는 환경이라면 이것도 신경 써 주셔야 합니다.

보시다시피 윈도 7도 업데이트가 진행되지 않으면 기본 설치 버전은 .NET Framework조차도 3.5에 그칩니다.

2개의 좋아요

기본적으로 사용자 통계를 봤을 때 윈도우 업데이트가 되어있는 곳이 많지 않았습니다.
일단 프로그램 변경 시 요구사항은 닷넷을 런타임으로 포함하면 좋겠다 인데…
만약 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가 있는데, 이를 참고해서 진행 해 주시면 될듯하네요.

1개의 좋아요

윈도우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을 적극 활용하여 미래에도 대비하면 되지 않을까 싶네요.

4개의 좋아요

저도 .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 이상으로 가는게 낫지 않을까? 라는)했던 것 같습니다.

아직 결정은 안났지만 결정에 많은 도움이 될 것 같습니다. 감사합니다 ㅎㅎ

어차피 장기적으로 윈도우 10 이상을 가실 계획이라면 저는 지금 버전은 크게 고민하지 않으시고 그냥 개발하시는 게 좋을 거 같습니다.

위에서 언급되지 않은 정보 중에서 통합버전인 .NET 부터 포함된

dotnet publish --self-contained 옵션이 있기 때문에 어플리케이션 안에 소형 .NET을 포함시켜서 사용자가 .NET을 설치하지 않아도 되게 합니다.

문제는 제가 공장도 2년 다녀봐서 아는데 많이들…그냥 빌드하셔서 압축하신다음에 USB로 출장가셔서 복붙하시는 경험이 있는지라

dotnet build가 아닌 dotnet publish를 하셔야 한다는 점 꼭 말씀드리고 싶습니다. (아니라면 다행이지만)

1개의 좋아요

저는 이 부분에 이견이 있습니다.

오히려 응용 프로그램이라면 PC의 컴퓨팅 파워가 온전히 Desktop Application의 것이라서 신규 .NET에서 지원하는 최신 & 최적화된 API를 사용하여 개발자가 수동으로 만들어야 하는 기능들이 추가되어 정렬된 코드로 만들어진 것을 미리 이용할 수 있기 때문에 컴퓨팅 파워를 더 잘 끌어낼 수 있다고 생각합니다.

또한 .NET 자체에서 만들어진 기능을 이용하면, 그것을 계속 유지보수하고 업데이트 해줄 것이라서 .NET을 버전만 올리더라도 혜택을 받을 수 있는 여지도 존재하죠. 이 부분은 언급하신 ASPNETCore도 같은 맥락이겠네요.

추가로 현대적인 문법으로 유지보수도 더 좋게 할 수 있다고 생각합니다.

(물론 공장이 특성이라면 개발자 분들이 신규 C# 문법에 거부감을 느껴서 도입을 꺼리실 수도 있지만 이것은 다른 문제 ㅎㅎ)

1개의 좋아요

저도 장비 업계 다녀봐서 USB 부분 공감 되네요 ㅎㅎ
그때는 net 4.7써서 self-contained는 사용하지 못했지만 ㅠㅠ…
publishing 관련해서는 몰랐는데 이번에 알게 되었네요 감사합니다!

1개의 좋아요

제가 기억하기로는 esu는 형식적인 요구사항일 뿐이고 6 런타임만 설치해도 잘 돌아갔었습니다.

1개의 좋아요

감사합니다, 참고하겠습니다!