2011-01-10 17 views
3

Ich habe ein Programm in C# .NET 2.0, das auch unter Framework 3.0 und 3.5 funktioniert..Net 'Any Framework' Konfiguration

Aber wenn .NET Framework 4.0 das einzige Framework installiert ist, funktioniert es nicht, erfordert der Benutzer 2.0 zu installieren.

i die folgende Konfiguration in google gefunden:

<startup> 
    <requiredRuntime safemode="true" imageVersion="v4.0.30319" version="v4.0.30319"/> 
</startup> 

Nachdem dies die app.config Hinzufügen, mein Programm funktioniert auf .NET Framework 4.0 ohne Probleme!

Was ich suche ist eine .NET Any Framework-Konfiguration, die mein Programm unter .NET 2.0, wenn installiert, oder sonst in .NET 4.0.

Wie geht das?

+0

Ich bin nicht sicher, dies ist möglich, ohne * zwei * verschiedenen Builds (ein .NET2, ein .NET4). .NET4 verwendet eine andere Laufzeit/Kern als .NET2/3/3.5 (zB ist es nicht nur ein Problem einer neueren .NET API), es sei denn, es gibt eine magische Option, CLR2 * oder * CLR4 zu benötigen, die ich noch nie gehört habe von ... könnte es noch teuflischere Methoden geben wie die Verwendung einer Proxy-Datei, um die beste/einzige CLR und dann das Bild zu laden. Ich weiß nicht :-) –

Antwort

2

Gefunden! Hier

ist die Konfiguration für alle, die es brauchen:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0,Profile=Client" /> 
    </startup> 
</configuration> 
+0

Wenn es immer noch nicht funktioniert, stellen Sie sicher, AppName.exe zu bündeln.Konfiguration mit Ihrer App (dh im gleichen Ordner), wenn Sie es verteilen. Ich dachte, die Config wird in die .exe eingebettet, tut es aber nicht. – blade

+0

Weitere Informationen hierzu finden Sie hier: http://www.codeproject.com/Articles/886256/NET-versioning-and-multi-targeting-on-csharp-appli –

0

das, was Sie brauchen, um die Mindestanforderungen für die Anwendung zu ändern.

gehen Einstellung zu projizieren das Zielframework auf 2,0 ändern und ich, was ist es haben in ihrem System 2.0 oder 4.0 Net Framework gleichen sogar Benutzer spielen

3

Diese ohne Konfigurationnach Design funktioniert nicht. .NET 4 verwendet eine andere Laufzeitumgebung. Wenn Sie eine .NET 2-Assembly laden, wird sie standardmäßig in Version 2 der CLR geladen. Sie können es neu konfigurieren, um dieses Verhalten zu verhindern, und es in Version 4 der CLR laden lassen - aber es ist nicht immer eine gute Idee. Es bewirkt, dass der Code, den Sie schreiben, auf einem anderen Framework ausgeführt wird als dem, auf dem er entworfen und getestet wurde, was möglicherweise problematisch sein kann.

Es ist normalerweise einfacher und besser, nur die richtigen Anforderungen auf dem System zu installieren. Die Installation von .NET 2 ist sehr einfach (und standardmäßig unter Vista +). Dies hat den Vorteil, dass Sie Ihr Programm auf dem Framework ausführen, für das es entwickelt wurde.

1

Es ist sehr schwer, eine Maschine zu finden, die nur 4.0 installiert hat. .NET 2.0 kompatible Versionen sind auf Vista und Win7 Maschinen vorinstalliert, sie werden Ihr Programm ohne Probleme ausführen. Sie müssten einen virgin XP-Rechner haben, auf dem nie .NET installiert war. Vielleicht ein Serverkern. In diesem Fall hat jemand einen kleinen Fehler gemacht, indem er die falsche Version von .NET installiert hat.

Nicht sicher, wie das passiert ist, riecht nach einem Kommunikationsproblem. Vielleicht solltest du es niemandem überlassen, damit es falsch läuft. Wenn die Systemanforderungen für Ihre App Unterstützung für XP enthalten, sollten Sie sicherstellen, dass sie verfügbar ist. Ziemlich einfach mit einem Setup-Projekt.

Ihre app.config ist sonst falsch, <requiredRuntime> ist seit .NET 1.0 veraltet. Die richtige Beschwörung ist <requestedRuntime> und fragen Sie nach sowohl 2.0.50727 als auch 4.0