2009-05-22 18 views
7

Digamos que tengo una aplicación anterior que intenta cargar un ensamblaje externo.Cómo ejecutar la aplicación CLR 2 como aplicación CLR 4

  • La aplicación de edad se compila a CLR 2.
  • El nuevo montaje se compila a CLR 4.

Me gustaría ser capaz de ejecutar esa aplicación antigua en el interior de CLR 4. Recuerdo hubo algunos xml manifest magic involucrados.

¿Cómo puedo crear ese archivo xml de manifiesto para decir que oldapplication.exe se ejecutará bajo CLR 4?

Encontré algunas sugerencias, pero no parecen funcionar para mí.

oldapplication.exe.config:

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

Al mismo tiempo que otra oportunidad me encontré con este archivo para servir como mi templ ATE:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.20506 \ Aspnet_regsql.exe.config

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

que también ha actualizado el código para informar CLR actual:

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

¡Funciona ahora!

+1

+1. También iba a preguntar esto, ya que realmente necesito el JIT de 64 bits de .NET 4 para un soporte adecuado de la cola de llamada. – leppie

Respuesta

7

Necesitas dar el número de versión adecuado.Tenga en cuenta que esta es la versión beta 1, que va a cambiar hasta que se asiente una RTM:

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

Creo que desea utilizar supportedRuntime, no requiredRuntime.

"El elemento <supportedRuntime> debe ser utilizado por todas las aplicaciones creadas con la versión 1.1 o posterior del runtime". (http://msdn.microsoft.com/en-us/library/a5dzwzc9.aspx). Asegúrese de que la cadena de versión coincida exactamente con "el nombre de la carpeta de instalación" para la versión que desee.

1

Para la gente para encontrar esta página a través de Google en 2013+ Archivo

Config Gist
https://gist.github.com/1223509

en blog
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> 

Este archivo de configuración se extrajo de Visual Studio 2012, por lo que tiene algunos ajustes de rendimiento y compatibilidad COM adicionales. Para entornos que ejecutan código alojado, probablemente debería eliminar la sección <runtime>.