아리송한 닷넷

무아   
   조회 5161   추천 0    

.net 3.5 프래임p으로 짠 어플리케이션이 
.net 4.5 가 설치된 (정확히 말하면 windows7 SP1 을 업데이트 최신판 까지 업데이트.) 시스템에서 돌리면 안돌아가나요?
계속 dll 쪽 오류를 내뿜네요.

위 어플은 windows7 SP1 ( 업데이트 이전 .net 3.5 상태) 의 시스템에선 잘 돌아갑니다.

위 어플을 .net 4.0 프래임으로 바꿔서 어플리케이션을 만들면
windows7 SP1 풀업데이트 -> 잘 돌아갑니다.
windows7 SP1 순정 -> .net 4를 깔라는 창이 뜨면서 프로그램은 종료.
...
짧은글 일수록 신중하게.
이예찬 2015-06
네 안 돌아갈겁니다 그래서 제어판의 Windows 기능 켜기/끄기 에서도 3.5와 4이상이 따로 있죠
버전의 차이는 극복이 않됩니다.. 하하하
보통은 그럴땨 프로그램 실행하면서 깔아 주던가 아니면 깔수 있겠끔 해주면 됩니다..
배포판에 추가 하시어 배포 하셔도 되고요...
어쩔수 없지요..
프로그램 개발자의 노가다 현실 입니다..
박한호 2015-06
MS가 어플리케이션 개발.실행 환경을 통일하고자 만든게 닷넷의 본 목적이었습니다.
많은 dll 들을 가지고 다니지 않고 실행파일 하나만 복사해 넣으면 실행되도록 하고 했느데...

2.0, 2.5 까지는 그렇 저렇 됬었지요.

3.0 이상부터 이전 버젼에 대한 호환성이 많이 떨어져서...
닷넷프레임워크를 설치해야 된다고 아시는게 맞습니다.

그래서 프로그램 개발자는 예전과 같이 힘듭니다.
PiPPuuP 2015-06
버전별 런타임 호환성은 다음과 같습니다.

1.0
1.1

2.0 - 3.5 (3.5sp1으로 2.0까지 지원)

4.0 - 4.5.2 (4.5.2로 4.0까지 지원)

https://msdn.microsoft.com/ko-kr/library/bb822049(v=vs.110).aspx

CLR버전을 보시면 됩니다.
이게 어셈블리런타임환경이라... 다른 버전의 어셈블리를 사용하는 런타임끼리 호환이 안되는거죠.
ARM기반으로 작성된 기계어가 AMD64기반의 머신에서 안돌아가는것처럼...
https://msdn.microsoft.com/en-us/library/8bs2ecf4(v=vs.110).aspx


다행히도 하나의 시스템에 여러버전의 CLR을 구축할 수 있습니다.
그러니깐 2.0 ~ 3.5로 빌드된 프로그램을 돌리시려면 3.5SP1을 까시면 되고,
동시에 4.0 ~ 4.5로 빌드된 프로그램을 돌리시려면 4.5.2를 까시면 되는거죠.
두 CLR은 한 시스템에 공존 가능합니다.

.Net 3.5로 짠 어플리케이션은... 4.5와 관계없이 .Net Framework 3.5 sp1과 관련 호환성 업데이트를 모두 하시면 잘 돌아갈겁니다.
반대로 4.0~4.5로 짠 어플리케이션은 3.5와 관계없이 4.5.2를 깔아주시면 됩니다.
제가 2.0, 4.0 두 버전의 CLR을 Windows 7 SP1에서 다 돌리고 있어요....
     
무아 2015-06
답변 감사합니다.
제가 무얼 착각 했는지 모르겠는데
windows7 SP1 을 (.net 3.5 지원) 최신 업데이트 까지 업데이트 했더니 (4.5.2까지 업데이트)
.net 3.5 프래임웤으로 짠 어플이 돌아가지 않아서 입니다.

 (이 경우는 두 CLR은 한 시스템에 공존에 해당되지 않는 건가요?)
          
PiPPuuP 2015-06
어... 이상하다...
말씀하신대로 하셨다면
두 버전이 공존해야 합니다.

지금 설치된 닷넷이 뭐뭐 있는지 한번 테스트해보세요.
프롬프트 열으셔서
dir %WINDIR%\Microsoft.Net\Framework\v* /O:-N /B

http://www.codeproject.com/Tips/487799/Check-which-NET-Framework-version-is-installed-fro
이거 해보시면 현재 시스템에 설치된 닷넷 리스트를 3.5 이하버전에 한해 대략적으로 알 수 있습니다.


그 이상버전까지 포함해서 좀더 정확하게 확인하는 방법은
https://msdn.microsoft.com/ko-kr/library/hh925568(v=vs.110).aspx
이게 있습니다.



참고로 CLR 2.0이 설치되어 있더라도 닷넷 2.0만 설치된 환경에서 닷넷 3.5 어플이 돌아가지는 않습니다.
반대로 닷넷 3.5만 설치하셨다면 2.0으로 짠 어플도 돌아갑니다.
Windows 7용 어플이 XP에서는 잘 안돌아가지만 반대로 XP어플은 Windows7 에서 잘 돌아가는커처럼 말이죠.
같은 CLR을 사용하는 프레임웍끼리 하위호환을 지원한다... 정도로 여기시면 될겁니다.

근데 이상하긴 이상하네요...
Windows 7에 기본탑제되는 닷넷은 3.5 SP1이 아니었나....
왠간해선 거의 대부분의 CLR 2.0기반 어플들이 별다른 추가설치 없이도 다 돌아갈텐데요....


가끔 뭔가 꼬여서 기존에 설치된 닷넷을 인스톨러가 파악하지 못하는 경우도 있다고 합니다.
http://superuser.com/questions/106647/net-framework-3-5-sp1-on-windows-7-not-recognized-by-installers
이 글도 참조해보세요.
(왠지 이거일거 같은...)
냐하핫 2015-06
4.5.2 깔면 4.0~4.5.2 까지 돌아갑니다
3.5.x 깔면 2.0, 3.0. 3.5 가 돌아갈거구요..

.net 이 버전별로 몇 개 그룹으로 나눠져 있고
OS 별로 기본 설치되는 .net 이 다릅니다..


QnA
제목Page 2830/5704
2014-05   5121489   정은준1
2015-12   1656818   백메가
2014-05   5163   눈빛마음
2016-11   5163   김건우
2016-12   5163   AplPEC
2008-07   5163   김현우
2015-08   5163   chotws
2016-03   5163   퍼싱글
2007-12   5163   윤호용
2009-03   5163   정은준1
2016-11   5163   패킷스트림
2008-06   5163   정도영
2006-11   5163   서용환
2014-12   5163   강웅식
2008-09   5163   송영오
2020-01   5163   이지포토
2016-09   5163   2CPU최주희
2013-05   5163   마성현
2012-09   5163   미수맨
2007-11   5163   신의식
2018-11   5163   newretrowave
2018-02   5163   봉래