2009-05-22 15 views
7

Sagen wir, ich habe eine alte Anwendung, die versuchen wird, eine externe Baugruppe zu laden.Wie CLR 2-Anwendung als CLR 4-Anwendung ausgeführt wird

  • ist die alte Anwendung kompiliert innerhalb CLR 4. I 2.
  • Die neue Baugruppe auf CLR kompiliert auf CLR 4.

Ich möchte in der Lage sein, die alte Anwendung auszuführen erinnern Es gab einige xml manifest magic beteiligt.

Wie kann ich diese Manifest-XML-Datei erstellen, um anzugeben, dass oldapplication.exe unter CLR 4 ausgeführt werden soll?

Ich fand einige Vorschläge, aber sie scheinen nicht für mich zu arbeiten.

oldapplication.exe.config:

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

Während geben einen weiteren Schuss ich diese Datei als meine templ dienen gefunden aß:

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> 

ich den Code auch aktualisiert aktuellen CLR zu berichten:

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

Es funktioniert jetzt!

+1

+1. Ich werde das auch fragen, da ich das 64-Bit-JIT von .NET 4 für die richtige Tail Call-Unterstützung wirklich brauche. – leppie

Antwort

7

Sie müssen die richtige Versionsnummer angeben.Beachten Sie, dass dies die Beta-1-Version ist, wird es ändern, bis RTM ein absetzt:

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

Ich glaube, dass Sie supportedRuntime verwenden möchten, nicht erforderlichRuntime.

"Das Element <supportedRuntime> sollte von allen Anwendungen verwendet werden, die mit Version 1.1 oder höher der Laufzeit erstellt wurden." (http://msdn.microsoft.com/en-us/library/a5dzwzc9.aspx). Stellen Sie sicher, dass die Versionszeichenfolge genau mit dem Namen des Installationsordners für die gewünschte Version übereinstimmt.

1

Für Leute finden diese Seite über Google in 2013+

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

Blogbeitrag
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> 

Diese Konfigurationsdatei wurde aus Visual Studio 2012 abgerufen, sodass sie zusätzliche COM-Kompatibilität und Leistungsoptimierungen bietet. In Umgebungen, in denen gehosteter Code ausgeführt wird, sollten Sie wahrscheinlich den Abschnitt <runtime> entfernen.