2009-05-22 5 views
7

외부 응용 프로그램을로드하려고하는 기존 응용 프로그램이 있다고 가정 해 보겠습니다.CLR 2 응용 프로그램을 CLR 4 응용 프로그램으로 실행하는 방법

  • 이전 응용 프로그램은 내가 CLR 내가 기억 4. 내부 오래된 응용 프로그램을 실행할 수 있도록하고 싶습니다 새로운 어셈블리가 4

을 CLR을 컴파일 2.

  • 을 CLR을 컴파일 일부는 xml manifest magic입니다.

    oldapplication.exe가 CLR 4에서 실행된다는 것을 알기 위해 어떻게 manifest xml 파일을 만들 수 있습니까?

    몇 가지 제안을 찾았지만 제대로 작동하지 않는 것 같습니다.

    oldapplication.exe.config :

    <?xml version ="1.0"?> 
    <configuration> 
    <startup> 
         <!--set the appropriate .net version--> 
         <requiredRuntime version="4.0.0.0"/> 
    </startup> 
    </configuration> 
    

    동안 난 내 TEMPL 역할이 파일을 발견 또 다른 기회를 제공 식사 :

    C : \ WINDOWS \ Microsoft.NET 프레임 워크 \ \ v4.0.20506 나는 또한 현재 CLR보고 코드를 업데이트 Aspnet_regsql.exe.config

    <?xml version ="1.0"?> 
    <configuration> 
        <startup> 
         <supportedRuntime version="v4.0.20506"/> 
         <requiredRuntime version="v4.0.20506" safemode="true"/> 
        </startup> 
    </configuration> 
    

    : \

    Console.WriteLine(typeof(object).Assembly.ImageRuntimeVersion); 
    

    이제 작동합니다!

  • +1

    +1. 적절한 꼬리 호출 지원을 위해 .NET 4의 64 비트 JIT가 실제로 필요하기 때문에이 질문도 나올 것입니다. – leppie

    답변

    7

    올바른 버전 번호를 알려줘야합니다.RTM 한 놓일 때까지이 베타 1 버전인지, 그것은 변경됩니다 참고 :

    <configuration> 
    <startup> 
         <supportRuntime version="4.0.20506"/> 
    </startup> 
    </configuration> 
    
    1

    requiredRuntime이 아닌 supportedRuntime을 사용하고 싶습니다.

    "<supportedRuntime> 요소는 런타임 버전 1.1 이상을 사용하여 작성된 모든 응용 프로그램에서 사용해야합니다." (http://msdn.microsoft.com/en-us/library/a5dzwzc9.aspx). 버전 문자열이 원하는 버전의 "설치 폴더 이름"과 정확히 일치하는지 확인하십시오.

    1

    요점 2013+

    구성 파일에서 구글이 페이지를 찾는 사람들의 경우를
    https://gist.github.com/1223509

    블로그 게시물
    http://yzorgsoft.blogspot.com/2011/09/greenshot-on-windows-8-net-45.html

    <?xml version ="1.0"?> 
    <configuration> 
        <startup useLegacyV2RuntimeActivationPolicy="true"> 
        <supportedRuntime version="v4.0.30319" /> 
        <requiredRuntime version="v4.0.30319" safemode="true"/> 
        </startup> 
        <runtime> 
        <relativeBindForResources enabled="true" /> 
        <UseSmallInternalThreadStacks enabled="true" /> 
        <DisableMSIPeek enabled="true"/> 
        </runtime> 
    </configuration> 
    

    이 구성 파일은 Visual Studio 2012에서 가져 오므로 일부 COM 호환성 및 성능 조정이 있습니다. 호스팅 된 코드를 실행하는 환경에서는 <runtime> 섹션을 제거해야합니다.

    관련 문제