2009-10-05 7 views
9

Wie weit ist die Software für .NET 3.5 kompiliert, bevor sie auf einem System abstürzt, auf dem nur .NET 2.0 installiert ist?Laufende Software für .NET 3.5 auf einem System mit nur installiertem .NET 2.0

Die Anwendung, die ich entwickle, verwendet WPF und erfordert .NET 3.5, aber ich möchte ein benutzerfreundliches Dialogfeld anzeigen (anstatt Absturz), wenn der Benutzer es nicht installiert hat.

Gibt es eine Standardmethode, um dies zu tun, oder eine offizielle Microsoft-Dokumentation?


EDIT: In einer idealen Welt prüfe ich möchte nur, dass alle .NET-Abhängigkeiten bei der Installation erfüllt sind. Da einige Anwendungen keine Installationsprogramme haben und Benutzer nach der Installation der Anwendung möglicherweise .NET deinstallieren können, finde ich die folgenden Antworten hilfreich.

+0

Das hängt wahrscheinlich ein bisschen davon ab, ob Ihr Programm von 3.5 Assemblys abhängt (wie zum Beispiel LINQ). Ich bin neugierig, obwohl ich selbst neugierig bin. –

Antwort

6

Es (wahrscheinlich) wird nicht abstürzen, bis es versucht, eine DLL zu verwenden, die 3.5 benötigt. Wenn die ausführende Anwendung die Version überprüfen kann, bevor 3.5-spezifische DLLs verwendet werden, können Sie einen WinForm-Dialog anzeigen, und Sie sollten in Ordnung sein. Ihre sicherste Wette wäre, die EXE zu einer 2.0-Assembly zu machen und all Ihre 3.5 Sachen in einer separaten DLL zu erstellen, die mit 3.5 kompiliert wird. Sie können Ihren Check in die 2.0 dll tun, bevor er eine Ihrer 3.5 Assemblys lädt.

3

.NET 3.5 verwendet .NET 2.0 Runtime, so dass eine App einwandfrei starten wird (wird jedoch fehlschlagen, wenn es versuchen wird, 3,5 Assemblys zu laden). Sie können Environment.Version überprüfen, ob es .NET 3.5 ist, auf dem Sie ausgeführt werden, und Benutzer mit Standard MessageBox.Show präsentieren, wenn nicht.

+1

Environment.Version gibt nur die Version der CLR an, nicht die installierten .NET-Assemblys. Die offizielle Möglichkeit, die Version zu überprüfen, ist über die Registrierung: http://stackoverflow.com/questions/199080/how-to-detect-what-net-framework-versions-and-service-packs-are-installed –

3

Haben Sie erwogen, ClickOnce-Bereitstellung zu verwenden? Der Agent prüft und installiert alle von Ihnen angegebenen erforderlichen Elemente, einschließlich .Net. Es macht auch Pushing Upgrades Ihrer Anwendung ziemlich schmerzlos.

+0

Sie können verlassen Sie sich darauf - insbesondere in Unternehmensumgebungen, in denen die Benutzer keinen Administratorzugriff auf den Computer haben – ChrisF

+0

Wenn ihnen die erforderlichen Rechte zur Installation fehlen, schlägt jede Installationsmethode fehl. –

+0

In meiner speziellen Situation wird die Anwendung auf Systemen bereitgestellt, die keinen Netzwerkzugriff haben. Ich habe ClickOnce noch nicht verwendet, aber für die meisten Situationen scheint es eine nette Lösung zu sein. –