.NET Framework 1.1 버전으로 작성되어 웹에 태그로 임베딩된 컨트롤의 경우 .NET Framework 1.1 버전과 2.0 버전이 동시에 설치된 컴퓨터에서는 TypeLoadException 혹은 SecurityPermissionException 등이 발생하면서 정상적으로 실행되지 않는 현상이 나타난다.

 

이것은 .NET Framework 버전 둘 이상이 설치된 경우 CLR이 다음의 순서에 따라

  1. 응용 프로그램 구성 파일에서 실행 버전이 지정된 경우 해당 버전으로 실행
  2. 응용 프로그램이 빌드된 버전이 설치되어 있으며 확인되는 경우 해당 버전으로 실행
  3. 높은 버전 먼저 실행

하도록 내부적으로 구성되어 있기 때문이다.

 

그런데 웹에 임베딩된 컨트롤은 구성 파일을 작성하여 버전을 명시할 수도 없고, 어느 버전에서 빌드되었는지 확인도 불가능하기 때문에 컴퓨터에 설치된 높은 버전(2.0)의 Framework가 먼저 실행되기 때문에 에러가 발생하는 것이다.

 

이를 극복하기 위해서는 .NET Framework 1.1이 실행되도록 강제로 설정을 바꿔주면 되고, 이것은 IE의 구성 파일을 살짝 만들어 조작해주면 의외로 간단히 해결된다.

 

위치: C:\Program Files\Internet Explorer

파일: iexplore.exe.config (없으면 만들면 됨)

내용:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

   <startup>

      <!--supportedRuntime version="v1.1.4322"/>

      <supportedRuntime version="v2.0.50727"/-->

      <requiredRuntime version="v1.1.4322"/>

   </startup>

</configuration>



 

 

그런데, 이렇게 설정해버리면 IE로 실행하는 모든 웹 임베딩 클래스(.NET)들이 모두 1.1 버전으로 실행되므로 혹시 다른 버전의 컨트롤을 실행해야 하는 경우에는 이 파일을 해당 시점에 다시 적절한 버전으로 조정해야 한다.




Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]