ASP .NET MVC의 web.config에서 TargetFramework 설정은 무엇을 의미합니까?
ASP.NET MVC 5 웹 응용 프로그램 중 하나에는 다음과 같은 web.config 설정이 있습니다.
<system.web>
<compilation debug="true" targetFramework="4.6" />
<httpRuntime targetFramework="4.5" />
<!--... many other things -->
</system.web>
왜 두 개의 targetFramework 설정이 있는지 명확하지 않으며 4.6을 대상으로 컴파일 한 다음 4.5에서 실행하려고하는 것은 잘못된 것 같습니다.
분명히 나는 뭔가를 놓치고 있지만 무엇입니까?
에 targetFramework
존재 하는 이유는 web.config
각 버전의 .NET Framework에 대한 주요 변경 사항간에 호환성 문제를 방지하기위한 것입니다. targetFramework
on compilation
과 의 차이점은 httpRuntime
각 개발 및 배포 환경에 속합니다.
MSDN 블로그 에 따르면 :
<compilation targetFramework="4.6" />
컴파일을 수행 할 때 사용되는 .NET Framework의 참조 어셈블리 버전을 선택합니다. (참고 : Visual Studio에서는이 요소가 Web.config에 있어야하지만 자동으로 추론됩니다.)
이 요소는 컴파일 중에 현재 프로젝트에서 종속성 및 관련 어셈블리를 만드는 데 사용되는 어셈블리 버전을 결정합니다.
<httpRuntime targetFramework="4.5" />
즉, 메모리로로드하기 전에 배포 컴퓨터에서 기존 프로젝트 어셈블리를 다시 컴파일하지 않고 .NET 4.5 런타임 어셈블리를 사용하도록 설계된 현재 프로젝트를 의미합니다.
따라서 대상 컴퓨터에서 사용되는 런타임 파일의 버전에 따라 런타임 사용시 컴파일 된 프로젝트와 사용 가능한 어셈블리 간의 호환성을 유지하도록 설계된 targetFramework
in httpRuntime
요소에 정의 된 버전 번호가 있다고 결론을 내릴 수 있습니다 .
따라서 귀하의 경우 이것은 잘못된 동작이 아닙니다. 프로젝트 작성자는 유사한 특성 (예 : 버전 4.5)을 가진 대상 컴퓨터에서 사용할 수있는 최저 런타임 버전에 대한 런타임 호환성을 유지하려고합니다. .NET 어셈블리. 버전 4.5와 4.6의 차이는 상대적으로 작기 때문에 런타임 버전을 4.5로 낮추는 것이이 컨텍스트에서 여전히 허용됩니다.
관련 참조 :
https://msdn.microsoft.com/en-us/library/dn833123(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/dn833125(v=vs.110).aspx
내 이해 에 따라 다음으로 번역 되기 때문에 <compilation debug="true" targetFramework="4.6" />
억압되고 있습니다.<httpRuntime targetFramework="4.5" />
httpRuntime
<compilation targetFramework="4.5" />
<machineKey compatibilityMode="Framework45" />
<pages controlRenderingCompatibilityVersion="4.5" />
따라서 위의 설정은 아마도 내가 사실이라고 생각하지 않는 VS에서 직접 수행 한 경우 일부 오해 또는 버그 때문일 수 있습니다.
이 설정 및 기타 모든 관련 항목이 Microsoft 직원이 작성한 All about <httpRuntime targetFramework> 라는 제목의이 블로그 가 도움이 될 수 있음을 의미하는 방법을 이해하려면 . 그러나 그것의 요점은;
.NET Framework (ASP.NET 포함)는 기존 프레임 워크가 컴퓨터에서 업데이트 될 때 거의 100 % 호환성을 유지하기 위해 노력합니다. 응용 프로그램이 .NET Framework 4에 대해 개발되고 배포 된 경우 4.5에서 계속 작동하도록 최대한 보장하려고합니다. 이는 일반적으로 버전간에 제품에 기발하거나 버그가 있거나 바람직하지 않은 동작을 유지하는 것을 의미합니다.이를 수정하면 해당 동작에 의존하는 애플리케이션에 부정적인 영향을 미칠 수 있습니다.
'programing tip' 카테고리의 다른 글
Angular 2-하위 모듈 라우팅 및 중첩 (0) | 2020.11.22 |
---|---|
대부분의 STL 구현의 코드가 왜 그렇게 복잡합니까? (0) | 2020.11.22 |
C # 값 / 객체는 언제 복사되고 언제 참조가 복사됩니까? (0) | 2020.11.22 |
자바 스크립트 문자열 유형과 문자열 객체의 차이점은 무엇입니까? (0) | 2020.11.22 |
지도가없는 Google 장소 라이브러리 (0) | 2020.11.21 |