.NET Framework-Unterstützung unter Windows-Betriebssystemen

 

Hans Verbeeck
Microsoft EMEA

September 2002

Gilt für:
   Microsoft® .NET Framework
   Microsoft® Windows-Betriebssysteme®

Zusammenfassung: Enthält Informationen dazu, auf welchen Versionen von Microsoft Windows die Microsoft .NET Framework installiert werden kann. Die Softwareanforderungen der .NET Framework und Ausnahmen von der allgemeinen Plattformunterstützung werden aufgeführt. Erläutert, wie Anwendungen für die plattformübergreifende Unterstützung vorbereitet werden. (14 gedruckte Seiten)

Inhalte

Unterstützte Plattformen
.NET Framework Softwareanforderungen
Vorbereiten der plattformübergreifenden Unterstützung
Anhang

Unterstützte Plattformen

Die .NET Framework kann auf den in Tabelle 1 dargestellten Plattformen installiert werden.

Tabelle 1. Plattformen, auf der die .NET Framework installiert werden können

Unterstützt alle .NET Framework außer Microsoft ASP.NET Unterstützt die gesamte .NET Framework
Windows 98 Windows 2000 (alle Versionen– keine Service Packs erforderlich)
Windows 98 SE Windows XP Professional
Windows ME  
Windows NT 4.0 (alle Versionen – Service Pack 6a erforderlich)  
Windows XP Home Edition  

Beachten Sie zunächst, dass die .NET Framework unter Windows 95 überhaupt nicht ausgeführt wird. Dies ist konsistent mit anderen Microsoft-Produkten® wie Microsoft® Office XP, die auch Windows 95 nicht unterstützen.

Die Betriebssysteme, auf denen die .NET Framework ausgeführt wird, können in zwei Gruppen unterteilt werden: eine, die die .NET Framework mit ASP .NET und eine, die es ohne ausführen wird. Dies kann auch als Unterscheidung zwischen Betriebssystemen angesehen werden, die als Server für .NET-Anwendungen verwendet werden können, und Betriebssystemen, die als Clients mit .NET-Anwendungen verwendet werden sollen. Beachten Sie, dass alle Versionen von Windows NT 4.0, auch die Server-Edition, als Clientbetriebssystem für .NET-Anwendungen betrachtet werden sollten.

Neben ASP .NET gibt es nur geringfügige Unterschiede zwischen den Funktionen, die vom .NET Framework auf verschiedenen Plattformen unterstützt werden. Beispielsweise verfügen Windows 98 und Windows ME nicht über ein Ereignisprotokollierungssystem, und die auf diesen Systemen installierten .NET Framework unterstützen daher das Eventlog und die zugehörigen Objekte aus dem System.Diagnostics-Namespace nicht.

Ein weiterer Bereich, in dem einige Unterschiede zu finden sind, sind XML Enterprise Services. Windows NT 4.0 unterstützt die Installation von Microsoft® Transaction Server (MTS), die sich von COM+ 1.0 mit Windows 2000 unterscheidet, oder COM+ 1.5, das in Windows XP enthalten ist. XML Enterprise Services im .NET Framework funktioniert nur mit COM+ 1.0 oder höher, sodass die über den System.EnterpriseServices-Namespace angebotene Funktionalität unter Windows NT 4.0 überhaupt nicht verfügbar ist und teilweise unter Windows 2000 verfügbar ist.

Der Anhang bietet eine vollständige Übersicht über die Unterschiede, während im Abschnitt Vorbereiten auf plattformübergreifende Unterstützung erläutert wird, wie Ihre Anwendungen diese Unterschiede behandeln.

.NET Framework Softwareanforderungen

Internet Explorer 5.01

Die .NET Framework und die zugrunde liegende Common Language Runtime enthalten eine Reihe von Elementen, die auf Technologien basieren, die von einer Version von Internet Explorer bereitgestellt werden. Die Möglichkeit, Code, Kryptografie und Die Erkennung von Zonen innerhalb des Internets herunterzuladen, sind Beispiele für solche Elemente. Technische Anforderungen und die Tatsache, dass Microsoft Internet Explorer 5.01 eine umfassende Bereitstellung erreicht hat, führten zu der Entscheidung, diese Version als Mindestversion festzulegen, die für die Installation und Ausführung der .NET Framework erforderlich ist.

Tabelle 2 zeigt, dass Internet Explorer 5.01 unter Windows 98, Windows 98 SE und Windows NT 4 installiert werden muss, bevor die .NET Framework installiert werden kann. Die Betriebssysteme Windows ME, Windows 2000 oder Windows XP enthalten bereits internet Explorer 5.01 oder höher, sodass keine weiteren Maßnahmen ergriffen werden müssen.

Tabelle 2: Installationsanforderungen

Anforderung Plattform Setupaktion Standardversion internet Explorer
IE 5.01 Windows 98 Blockieren IE 4.01
IE 5.01 Windows 98 SE Blockieren IE 5.00
IE 5.01 Windows NT4 Blockieren IE 4.01
IE 5.01 Windows ME IE 5.50
IE 5.01 Windows 2000 IE 5.01
IE 5.01 Windows XP IE 6.00

Klicken Sie hier, um internet Explorer 6.0 zu erhalten.

MDAC 2.6

Die Microsoft-Datenzugriffskomponenten® (MDAC) waren die Möglichkeit von Microsoft, die Technologie zu verteilen, die das Universelle Datenzugriffsparadigma implementiert. MDAC kann separat heruntergeladen und installiert werden oder enthält das Betriebssystem oder andere Software wie Microsoft® SQL Server ™, Office XP oder jede andere Anwendung, die die Komponenten in das Setup enthalten.

Um zu funktionieren, erfordert die Funktionalität aus dem System.Data-Namespace (der Microsoft® ADO.NET ist), dass MDAC 2.6 oder höher verfügbar ist. Die vollständige Versionsnummer, auf die die Laufzeit überprüft, ist MDAC 2.6.6526.

Bei der Installation des Frameworks auf einem der Betriebssysteme, die als eines der gültigen Serverbetriebssysteme für die .NET-Anwendungen gelten (jede Windows 2000-Version oder Windows XP Professional), gibt das Setup tatsächlich eine Warnung aus, wenn MDAC 2.7 oder höher nicht verfügbar ist. Dies ist eine Warnung, die Sie ignorieren können, aber kein blockierende Problem, das die Installation abbricht. Abbildung 1 zeigt eine solche Warnung.

Abbildung 1: Setupwarnung

Die Installation des .NET Framework auf einem der anderen Betriebssysteme (Windows 98, Windows ME und Windows NT 4.0) gibt überhaupt keine Warnung aus, wenn MDAC nicht verfügbar ist, obwohl es auch auf diesen Systemen erforderlich ist, damit ADO.NET funktioniert.

Dies bedeutet, dass das Setup des .NET Framework unter Windows 2000 oder Windows XP Professional nach einer anderen Version (2.7) als der Version sucht, die eine Laufzeit erfordert (2.6.6526).

Um MDAC zu erhalten, wechseln Sie zur Website für den universellen Datenzugriff .

Sonstige Anforderungen

Bei der Installation des .NET Framework unter Windows 2000 wird eine Warnung ausgegeben, wenn Internet Information Server 5 (IIS 5) nicht installiert ist und bei der Installation unter Windows XP Professional eine Warnung ausgelöst wird, wenn IIS 5.1 nicht verfügbar ist. Auf anderen Betriebssystemen wird ASP.NET nicht unterstützt, sodass das Setup nicht überprüft, ob IIS vorhanden ist.

Beim Schreiben von Code, der WMI-Ereignisse (Windows Management Instrumentation) verwendet, verwendet die .NET-Anwendung den System.Management-Namespace . Wenn WMI auf dem Betriebssystem nicht unterstützt wird, funktioniert die Funktionalität in diesem Namespace nicht.

Platformnotsupportedexception

Es gibt einige Softwarekomponenten, die für einige Teile des .NET Framework erforderlich sind, aber die Installation nicht blockieren. Wenn Komponenten zur Laufzeit erforderlich, aber nicht verfügbar sind, löst die .NET Framework eine Ausnahme vom Typ PlatformNotSupportedException aus, auf die Ihre eigenen Anwendungen vorbereitet werden sollten. Mehr dazu im nächsten Abschnitt.

Vorbereiten der plattformübergreifenden Unterstützung

Umfassende Unterstützung für eine breite Palette von Plattformen ist seit der Einführung der .NET Framework eine Entwurfsanforderung. Daher entsteht ein erheblicher Teil des Wertversprechens, das die .NET Framework bietet, aus seiner Fähigkeit, Entwicklern einen klaren Weg für das Schreiben von Anwendungen zu bieten, die auf einer vielzahl von Plattformen funktionieren. Eine .NET Framework-Klasse im Allgemeinen wird nur durch die Notwendigkeit eingeschränkt, dass auf der zugrunde liegenden Plattform eine Common Language Runtime vorhanden sein muss.

Wie immer gibt es Ausnahmen zu einer solchen allgemeinen Aussage, und in diesem Artikel geht es wirklich darum, diese Ausnahmen klar zu machen. Daher sollte beim Entwerfen einer verwalteten Klasse immer die Portabilität zwischen den unterstützten Plattformen berücksichtigt werden. Die beste Möglichkeit, die Portabilität zwischen den plattformen sicherzustellen, die von der .NET Framework unterstützt werden, besteht darin, Ihre Klassen mit anderen verwalteten Codeklassen zu erstellen, die bereits im .NET Framework verfügbar sind. Jedes Mal, wenn Sie eine .NET-Klasse erstellen, die eine native API aufruft, steigt das Risiko, dass die Breite der offiziell unterstützten Plattformen nicht unterstützt wird.

Da die .NET Framework eine neue Technologie ist, wird es Fälle geben, in denen eine neue Klasse ein legitimes Bedürfnis hat, Win32® oder andere native APIs aufzurufen, aber dies sollte mit einem soliden Verständnis der Kompromisse erfolgen, die getroffen werden, und wie die Plattformunterstützung von dieser Entscheidung beeinflusst wird. Unter Berücksichtigung dieses Gedankens sind einige Fragen, die wichtig sind, um folgendes zu stellen:

  • •Ist es wirklich erforderlich, diese nicht verwaltete API (über P/Invoke) aufzurufen?
  • •Gibt es im .NET Framework eine Klasse, die diese API bereits umschließt?
  • •Wenn die Technologie Daten über das zugrunde liegende System benötigt; kann sie mithilfe der System.Management-Ebene abgerufen werden, anstatt die nativen APIs aufzurufen?
  • •Wenn win32-native APIs wirklich aufgerufen werden müssen, können diese APIs aufgerufen werden, die plattformübergreifend unterstützt werden, anstatt die "Ex"-Methoden aufzurufen, die die Arbeit auf down-level-Plattformen einschränken könnten?

Da sich die Betriebssystemebene unterhalb des .NET Framework mit neuen Releases weiterentwickelt, wird es Fälle geben, in denen eine .NET-Klasse auf zugrunde liegende Betriebssystemtechnologie angewiesen sein muss, die nicht in allen unterstützten Betriebssystemen verfügbar ist. In diesem Fall muss der Klassendesigner die Kosten für die Unterstützung dieser Klasse auf allen Plattformen im Vergleich zu dem Hilfsprogramm abwägen, das die Zielkunden davon ableiten, dass diese Funktionalität auf jedem der untergeordneten Betriebssysteme verfügbar ist. Wenn möglich, sollte die -Klasse entweder die entsprechende Funktionalität auf down-level-Plattformen bereitstellen oder eine Teilmenge der Funktionalität auf diesen Plattformen bereitstellen. In Fällen, in denen die Klasse einfach nicht ohne einen bestimmten Teil des zugrunde liegenden Betriebssystems funktioniert, z. B. IIS, sollte die Klasse nicht auf dieser Plattform installiert werden, oder sie sollte nach der zugrunde liegenden Abhängigkeit suchen und eine PlatformNotSupportedException auslösen, wenn diese Abhängigkeit nicht verfügbar ist.

Angenommen, eine Anwendung, die versucht, ein verwaltetes Socket-Objekt zu erstellen, ruft den Socket-Konstruktor auf einem Betriebssystem auf, auf dem Winsock nicht installiert ist. Die folgende Ausnahme wird ausgelöst.

"PlatformNotSupportedException: Socket kann aufgrund einer fehlenden erforderlichen Plattformkomponente, Winsock 1.1, nicht erstellt werden"

Wenn Sie mit verwalteten Klassen aus namespaces arbeiten, die im Anhang erwähnt werden, ist es ratsam, Code hinzuzufügen, um die PlatformNotSupportedException zu behandeln.

Betrachten Sie den Fall einer Anwendung, in der Sie bestimmte Ereignisse protokollieren möchten. Wenn diese Anwendung sowohl unter Windows 2000 als auch unter Windows 98 ausgeführt werden muss, müssen Sie erwägen, Ereignisse in das Ereignisprotokoll für Windows 2000 sowie in eine Textdatei für Windows 98 zu schreiben. Sie können den Anhang überprüfen, um zu sehen, auf welchen Betriebssystemen das EventLog-Objekt aus dem System.Diagnostics-Namespace unterstützt wird. Der folgende Code zeigt, wie Sie in ein Ereignisprotokoll schreiben können, wenn dies unterstützt wird, oder wie Sie auf das Schreiben in eine normale Textdatei zurückgreifen können, falls dies nicht der Fall ist.

Try
   Dim objEventlog As New EventLog("Application", ".", "MyApp")
   objEventlog.WriteEntry("Application Started")
Catch ex As PlatformNotSupportedException
   ' in case of Windows 98 or Windows ME

   Dim sFile As String = "app.log"
   Dim sr As System.IO.StreamWriter

   If Not System.IO.File.Exists(sFile) Then
      sr = System.IO.File.CreateText(sFile)
   Else
      sr = System.IO.File.AppendText(sFile)
   End If

   sr.WriteLine("Application Started")
   sr.Close()

Catch ex As Exception
   MessageBox.Show("Cannot do something")
End Try

Sprechen sie noch einen Schritt weiter

Weitere Informationen zu .NET Compact Framework (eine Version, die auf smarten Geräten ausgeführt wird) finden Sie auf der Visual Studio .NET-Website .

Anhang

Ausnahmen von den unterstützten Plattformen

Namespace Element XP Pro XP-Startseite 2000 NT 4 98 ME
System.Web   J N J N N
System.web.caching   J N J N N
System.web.configuration   J N J N N
System.web.security   J N J N N
System.web.ui   J N J N N
System.Web.UI.Design   J N J N N
System.Web.UI.Design.WebControls   J N J N N
System.Web.UI.Design.Util   J N J N N
System.Web.UI.HTMLControls   J N J N N
System.Web.UI.WebControls   J N J N N
System.web.util   J N J N N
System.web.handlers   J N J N N
System.web.hosting   J N J N N
System.web.sessionstate   J N J N N
System.web.mail   J N J N N
System.EnterpriseServices   J J J N N
System.Messaging Message.Transaction.Id J J J N N
System.Messaging Message.Transaction.IsLastInTransaction J J J N N
System.Messaging Message.Transaction.IsFirstInTransaction J J J N N
System.Diagnostics Process.PriorityBoostEnabled J J J J N
System.Diagnostics Process.MinWorkingSet J J J J N
System.Diagnostics Process.MaxWorkingSet J J J J N
System.Diagnostics Process.VirtualMemorySize J J J J N
System.Diagnostics Process.UserProcessorTime J J J J N
System.Diagnostics Process.NonpagedSystemMemorySize J J J J N
System.Diagnostics Process.PrivilegedProcessorTime J J J J N
System.Diagnostics Process.PrivateMemorySize J J J J N
System.Diagnostics Process.PeakVirtualMemorySize J J J J N
System.Diagnostics Process.PeakWorkingSet J J J J N
System.Diagnostics Process.PeakPagedMemorySize J J J J N
System.Diagnostics Process.PagedSystemMemorySize J J J J N
System.Diagnostics Process.PagedMemorySize J J J J N
System.Diagnostics Process.WorkingSet J J J J N
System.Diagnostics Process.BasePriority J J J J N
System.Diagnostics Process.PowerBroadcastStatus J J J J N
System.ServiceProcess ServiceControllerStatus J J J J N
System.ServiceProcess ServiceStartMode J J J J N
System.ServiceProcess ServiceType J J J J N
System.ServiceProcess Serviceprocessinstaller J J J J N
System.ServiceProcess Serviceinstaller J J J J N
System.ServiceProcess ServiceController J J J J N
System.ServiceProcess Servicebase J J J J N
System.IO WatcherChangeTypes J J J J N
System.IO ChangedFilters J J J J N
System.IO ErrorEventArgs J J J J N
System.IO ErrorEventHandler J J J J N
System.IO FileSystemEventArgs J J J J N
System.IO FileSystemEventHandler J J J J N
System.IO FileSystemWatcher J J J J N
System.IO InternalBufferOverflowException J J J J N
System.IO IODescriptionAttribute J J J J N
System.IO RenamedEventArgs J J J J N
System.IO RenamedEventHandler J J J J N
System.IO WaitForChangedResult J J J J N
System.IO NotifyFilters J J J J N
System.Diagnostics Countercreationdatacollection J J J J N
System.Diagnostics Countercreationdata J J J J N
System.Diagnostics Countersample J J J J N
System.Diagnostics Countersamplecalculator.computecountervalue J J J J N
System.Diagnostics Entrywritteneventargs J J J J N
System.Diagnostics EntryWrittenEventHandler J J J J N
System.Diagnostics EventLog J J J J N
System.Diagnostics Eventlogentry J J J J N
System.Diagnostics Eventlogentrycollection J J J J N
System.Diagnostics Eventlogentrytype J J J J N
System.Diagnostics Eventloginstaller J J J J N
System.Diagnostics Instancedata J J J J N
System.Diagnostics Instancedatacollection J J J J N
System.Diagnostics Instancedatacollectioncollection J J J J N
System.Diagnostics PerformanceCounter J J J J N
System.Diagnostics Performancecountercategory J J J J N
System.Diagnostics Performancecounterinstaller J J J J N
System.Diagnostics PerformanceCounerManager J J J J N
System.Diagnostics Performancecountertype J J J J N
System.Diagnostics Eventlogtracelistener J J J J N
System.Environment Workingset J J J J N
System.Threading ThreadPool.BindHandle J J J J N
System.Threading Overlapped.Pack J J J J N
System.Threading Overlapped.Unpack J J J J N
System.Threading Overlapped.UnsafePack J J J J N
System.Diagnostics Process.PeakVirtualMemorySize J J J J N
System.Diagnostics Process.NonpagedSystemMemorySize J J J J N
System.Diagnostics Process.PriorityBoostEnabled J J J J N
System.Diagnostics Process.WorkingSet J J J J N
System.Diagnostics Process.MaxWorkingSet J J J J N
System.Diagnostics Process.PrivilegedProcessorTime J J J J N
System.Diagnostics Process.MinWorkingSet J J J J N
System.Diagnostics Process.StartTime J J J J N
System.Diagnostics Process.PrivateMemorySize J J J J N
System.Diagnostics Process.PagedSystemMemorySize J J J J N
System.Diagnostics Process.PeakWorkingSet J J J J N
System.Diagnostics Process.UserProcessorTime J J J J N
System.Diagnostics Process.PagedMemorySize J J J J N
System.Diagnostics Process.PeakPagedMemorySize J J J J N
System.Diagnostics Process.VirtualMemorySize J J J J N
System.Diagnostics Process.TotalProcessorTime J J J J N
System.Diagnostics Process.ExitTime J J J J N
System.EnterpriseServices ApplicationActivationAttribute.SoapVRoot J J N N N
System.EnterpriseServices ApplicationQueuingAttribute.MaxListenerThreads J J N N N
System.EnterpriseServices ContextUtil.ApplicationId J J N N N
System.EnterpriseServices ContextUtil.ApplicationInstanceId J J N N N
System.EnterpriseServices PrivateComponentAttribute J J N N N
System.EnterpriseServices TransactionAttribute.Timeout J J N N N
System.EnterpriseServices TransactionIsolationLevel J J N N N
System.EnterpriseServices Namespaceübersicht J J J N N
System.EnterpriseServices AccessChecksLevelOption J J J N N
System.EnterpriseServices ActivationOption J J J N N
System.EnterpriseServices Applicationaccesscontrolattribute J J J N N
System.EnterpriseServices ApplicationActivationAttribute J J J N N
System.EnterpriseServices ApplicationIDAttribute J J J N N
System.EnterpriseServices ApplicationNameAttribute J J J N N
System.EnterpriseServices ApplicationQueuingAttribute J J J N N
System.EnterpriseServices AuthenticationOption J J J N N
System.EnterpriseServices Autocompleteattribute J J J N N
System.EnterpriseServices BOID J J J N N
System.EnterpriseServices BYOT J J J N N
System.EnterpriseServices Componentaccesscontrolattribute J J J N N
System.EnterpriseServices Comtiintrinsicsattribute J J J N N
System.EnterpriseServices Constructionenabledattribute J J J N N
System.EnterpriseServices ContextUtil J J J N N
System.EnterpriseServices Descriptionattribute J J J N N
System.EnterpriseServices EventClassAttribute J J J N N
System.EnterpriseServices Eventtrackingenabledattribute J J J N N
System.EnterpriseServices ExceptionClassAttribute J J J N N
System.EnterpriseServices Iisintrinsicsattribute J J J N N
System.EnterpriseServices ImpersonationLevelOption J J J N N
System.EnterpriseServices Installationflags J J J N N
System.EnterpriseServices Interfacequeuingattribute J J J N N
System.EnterpriseServices IRegistrationHelper J J J N N
System.EnterpriseServices IRemoteDispatch J J J N N
System.EnterpriseServices ITransaction J J J N N
System.EnterpriseServices JustInTimeActivationAttribute J J J N N
System.EnterpriseServices Loadbalancingsupportedattribute J J J N N
System.EnterpriseServices Mustruninclientcontextattribute J J J N N
System.EnterpriseServices Objectpoolingattribute J J J N N
System.EnterpriseServices PrivateComponentAttribute J J N N N
System.EnterpriseServices PropertyLockMode J J J N N
System.EnterpriseServices PropertyReleaseMode J J J N N
System.EnterpriseServices RegistrationErrorInfo J J J N N
System.EnterpriseServices Registrationexception J J J N N
System.EnterpriseServices Registrationhelper.installassembly J J J N N
System.EnterpriseServices Registrationhelpertx.uninstallassembly J J J N N
System.EnterpriseServices ResourcePool J J J N N
System.EnterpriseServices SecureMethodAttribute J J J N N
System.EnterpriseServices SecurityCallContext J J J N N
System.EnterpriseServices SecurityCallers J J J N N
System.EnterpriseServices SecurityIdentity J J J N N
System.EnterpriseServices Securityroleattribute J J J N N
System.EnterpriseServices Servicedcomponent J J J N N
System.EnterpriseServices Servicedcomponentexception J J J N N
System.EnterpriseServices SharedProperty J J J N N
System.EnterpriseServices SharedPropertyGroup J J J N N
System.EnterpriseServices SharedPropertyGroupManager J J J N N
System.EnterpriseServices Synchronizationattribute J J J N N
System.EnterpriseServices Synchronizationoption J J J N N
System.EnterpriseServices TransactionAttribute J J J N N
System.EnterpriseServices TransactionIsolationLevel J J N N N
System.EnterpriseServices TransactionOption- J J J N N
System.EnterpriseServices TransactionVote J J J N N
System.EnterpriseServices XACTTRANSINFO J J J N N
System.EnterpriseServices ContextUtil.PartitionId J J N N N
System.EnterpriseServices TransactionAttribute.
Isolation
J J N N N
System.EnterpriseServices.
CompensatingResourceManager
Applicationcrmenabledattribute J J J N N
System.EnterpriseServices.
CompensatingResourceManager
Schreiber J J J N N
System.EnterpriseServices.
CompensatingResourceManager
Clerkinfo J J J N N
System.EnterpriseServices.
CompensatingResourceManager
Clerkmonitor J J J N N
System.EnterpriseServices.
CompensatingResourceManager
Kompensator J J J N N
System.EnterpriseServices.
CompensatingResourceManager
Compensatoroptions J J J N N
System.EnterpriseServices.
CompensatingResourceManager
Logrecord J J J N N
System.EnterpriseServices.
CompensatingResourceManager
LogRecordFlags J J J N N
System.EnterpriseServices.
CompensatingResourceManager
TransactionState J J J N N