Freigeben über


Festlegung von Zielversionen mit MSBuild

Aktualisiert: August 2010

Mit Visual Studio können Sie eine Anwendung zur Ausführung in verschiedenen Versionen von .NET Framework kompilieren. Beispielsweise können Sie die gleiche Anwendung für die Ausführung in .NET Framework, Version 2.0, und für die Ausführung in .NET Framework, Version 4, kompilieren. Die Möglichkeit, für mehr als ein Framework zu kompilieren, wird Festlegung von Zielversionen genannt.

Tipp

Visual Studio wird unter der aktuellsten auf dem Entwicklungscomputer installierten Version von .NET Framework ausgeführt.

In Folgenden sind einige Vorteile der Festlegung auf mehrere Zielversionen aufgeführt:

  • Sie können Anwendungen entwickeln, die auf frühere Versionen von .NET Framework abzielen, z. B. Version 2.0, 3.0 oder 3.5.

  • Sie können neben .NET Framework auch auf andere Frameworks abzielen, z. B. das Silverlight Framework.

  • Sie können auf ein Frameworkprofil abzielen, das eine vordefinierte Teilmenge eines Zielframeworks ist.

  • Sie können ebenfalls auf neu veröffentlichte Service Packs für .NET Framework, Version 4, abzielen.

  • Durch die Festlegung von Zielversionen wird garantiert, dass von einer Anwendung nur die im Zielframework verfügbaren Funktionen verwendet werden.

Ein Zielframework ist eine bestimmte Version von .NET Framework, in der das Projekt ausgeführt werden kann. Es ist erforderlich, da es Compilerfunktionen aktiviert, die nur für diese Version von .NET Framework 2.0 gelten, und auf Assemblys verweist, die nur im Lieferumfang dieser Version des Frameworks enthalten sind.

Wenn Sie eine Anwendung für ein bestimmtes Framework kompilieren, müssen diese drei Softwarekomponentensätze koordiniert werden:

  • Der Toolsatz, der die Compiler, Aufgaben und Ziele enthält, die zur Erstellung der Anwendung verwendet werden.

  • Die Verweisassemblys, die zum Entwurf und zur Erstellung der Anwendung verwendet werden.

  • Die Laufzeitassemblys, die zur Ausführung der Anwendung verwendet werden.

Toolset (ToolsVersion)

Ein Toolset ist ein abgestimmter Satz von MSBuild-Aufgaben, MSBuild-Zielen und Tools, das zusammen mit MSBuild und .NET Framework installiert wird. Ein Toolset umfasst Compiler wie csc.exe und vbc.exe, die Datei mit allgemeinen Zielen (microsoft.common.targets) und die Datei mit allgemeinen Aufgaben (microsoft.common.tasks). Das 4.0-Toolset kann für .NET Framework, Version 2.0, 3.0, 3.5 und 4, verwendet werden. Das 2.0-Toolset kann jedoch nur für .NET Framework, Version 2.0, verwendet werden.

Sie definieren das Toolset, indem Sie das ToolsVersion-Attribut des Project-Elements für eine Projektdatei festlegen. Beispiel:

<Project ToolsVersion="4.0" ...

Sie können das Toolset der Version 4.0 verwenden, um Anwendungen für die Ausführung auf einer Vielzahl von Zielframeworks zu kompilieren. Voraussetzung hierfür ist allerdings, dass für jedes Framework, auf das abgezielt werden soll, ein Paket zur Festlegung von Zielversionen installiert ist. Weitere Informationen finden Sie unter "Pakete zur Festlegung von Zielversionen" weiter unten in diesem Thema.

Sie können außerdem eigene, benutzerdefinierte Toolsets erstellen. Weitere Informationen finden Sie unter Standardmäßige und benutzerdefinierte Toolsetkonfigurationen.

Tipp

Visual Studio verfügt über keine Benutzeroberfläche zum Ändern des Toolsatzes.

Verweisassemblys

In der Regel verfügen Frameworks über zugeordnete Verweisassemblys. Eine Verweisassembly ist eine vereinfachte Assembly, die keinen Code aufweist, und lediglich die öffentlichen Typen und Member verfügbar macht.

Zum Zeitpunkt des Entwurfs und der Erstellung werden von Visual Studio die Verweisassemblys für das Zielframework als Filter verwendet, um nur mit dem Framework kompatible Typen und Member bereitzustellen. Wenn Sie z. B. auf .NET Framework, Version 3.5, abzielen, werden Typen und Member, die nur von .NET Framework, Version 4, bereitgestellt werden, nicht in Visual Studio-Designern (z. B. Registerkarte .NET des Dialogfelds Verweis hinzufügen angezeigt und stehen im Buildprozess nicht zur Verfügung.

LINQ ist beispielsweise eine neue Technologie, die in Visual Studio 2008 enthalten ist. .NET Framework 3.5 ist die einzige Version von .NET Framework, die über Assemblys für LINQ verfügt. Daher können Sie LINQ nur verwenden, wenn das Projekt ausdrücklich auf .NET Framework 3.5 oder höher abzielt. Auf ähnliche Weise ist Windows Presentation Foundation (WPF) in Windows Vista enthalten. Sie können nur dann WPF-Anwendungen erstellen, wenn das Projekt auf .NET Framework 3.0 oder höhere Versionen von .NET Framework abzielt.

Pakete zur Festlegung von Zielversionen

Verweisassemblys werden bereitgestellt, sobald das entsprechende Paket zur Festlegung von Zielversionen installiert wurde. Ein Paket zur Festlegung von Zielversionen enthält Verweisassemblys und die Datei "FrameworkList.xml", in der die Assemblys aufgeführt sind. Die Datei "FrameworkList.xml" wird auch als Neuverteilungsliste (redist) bezeichnet.

Pakete zur Festlegung von Zielversionen sind aus diesen Quellen verfügbar:

  • Pakete zur Festlegung von Zielversionen für die Versionen 2.0, 3.0 und 3.5 von .NET Framework sind in SP1 der Version 3.5 von.NET Framework enthalten.

  • Pakete zur Festlegung von Zielversionen für das Clientprofile von .NET Framework, Version 3.5, und .NET Framwork, Version 4, und das Clientprofile von .NET Framework, Version 4, und Silverlight sind in Visual Studio enthalten.

In der Regel sind Pakete zur Festlegung von Zielversionen in folgendem Ordner installiert: \Program Files (x86)\Reference Assemblies\Microsoft\Framework\ Das Paket zur Festlegung von Zielversionen für .NET Framework, Version 2.0, ist in der Regel in folgendem Ordner installiert: Ordner \Windows\Microsoft.NET\Framework\v2.0.50727\.

Wenn Sie eine Projektmappe oder ein Projekt über die Befehlszeile erstellen, führt das Festlegen eines ToolsVersion-Attributs für msbuild.exe dazu, dass alle Projekte und die Abhängigkeiten zwischen den Projekten entsprechend dieser Toolsversion erstellt werden. Dies geschieht auch dann, wenn jedes Projekt der Projektmappe in Project-Element (MSBuild) ein eigenes ToolsVersion-Attribut angibt.

Laufzeitassemblys

Sie können ein Zielframework in Visual Studio nur dann festlegen, wenn das entsprechende Paket zur Festlegung für dieses Framework installiert ist. Zur Festlegung auf .NET Framework, Version 3.0, müssen die entsprechenden Verweisassemblys und die kompatiblen Assemblys installiert sein. Zur Laufzeit bindet das Common Language Runtime (CLR)-Fusion-Ladeprogramm die Anwendung an die Laufzeitassemblys des Frameworks, auf das es abzielt.

Auswählen eines Zielframeworks

So wählen Sie ein Zielframework für ein vorhandenes Projekt aus

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und klicken Sie dann auf Eigenschaften.

  2. Wählen Sie auf der Registerkarte Anwendung in der Liste Zielframework ein Framework aus. Nur Frameworks, für die ein Paket zur Festlegung von Zielversionen installiert ist, werden in der Liste angezeigt.

    Von Visual Studio werden mithilfe Ihrer Auswahl die Werte dieser drei Elemente in der Projektdatei festgelegt:

    • Das TargetFrameworkIdentifier-Element benennt das Zielframework. Beispiel:

      <TargetFrameworkIdentifier>Silverlight</TargetFrameworkIdentifier>

      Wenn dieses Element fehlt, wird sein Wert standardmäßig auf ".NETFramework" festgelegt.

    • Das TargetFrameworkVersion-Element benennt die Version des Zielframeworks. Beispiel:

      <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>

    • Das TargetFrameworkProfile-Element benennt das Profil des Zielframeworks. Beispiel:

      <TargetFrameworkProfile>Client</TargetFrameworkVersion>

      Fehlt dieses Element, wird auf das vollständige Framework abgezielt.

    Diese drei Elemente werden von den allgemeinen Zielen des Visual Studio-Buildsystems kombiniert, um einen als Zielframeworkmoniker (TFM) bezeichneten Bezeichner zu bilden.

Szenario: Visual Studio zielt auf .NET Framework, Version 3.5, ab.

Angenommen, Visual Studio wird unter .NET Framework, Version 4, ausgeführt. In diesem Fall müssen die zugeordneten Verweisassemblys und Laufzeitassemblys installiert sein, um auf .NET Framework, Version 3.5, abzuzielen. Diese Assemblys sind in SP1 von .NET Framework, Version 3.5, enthalten.

In diesem Szenario zeigen die Visual Studio-Designer nur das an, was von den Verweisassemblys von .NET Framework, Version 3.5, gefiltert wurde, und bei der Erstellung eines Projekts, wird dieses entsprechend diesen Verweisassemblys erstellt. Wenn Sie das Projekt ausführen, wird es unter den Laufzeitassemblys von .NET Framework, Version 3.5, ausgeführt, die wiederum unter CLR, Version 2.0, ausgeführt werden.

Wenn die Anwendung auf einem anderen Computer bereitgestellt wird, muss auf diesem Computer .NET Framework, Version 3.5, installiert sein. Prüfen Sie mit einem geeigneten Neuverteilungspaket (redist), ob auf dem Zielcomputer Version 3.5 installiert ist, und installieren Sie ggf. die Version.

Szenario zwei: Visual Studio wird unter .NET Framework, Version 4.1, ausgeführt und zielt auf .NET Framework, Version 4, ab.

Angenommen, .NET Framework, Version 4.1, wird verwendet, und Version 4 sowie Version 4.1 werden beide unter CLR, Version 4, ausgeführt. Wäre .NET Framework, Version 4.1, installiert, würde Visual Studio automatisch unter dieser Version ausgeführt werden.

Im Falle eines Projekts, das auf .NET Framework, Version 4, abzielt, würden von den Verweisassemblys der Version 4 die in den Visual Studio-Designern verfügbaren Typen und Member gefiltert, das Projekt diesen Verweisassemblys entsprechend erstellt und die erstellte Anwendung den Laufzeitassemblys der Version 4 entsprechend ausgeführt werden.

Siehe auch

Konzepte

Weiterführende MSBuild-Konzepte

Weitere Ressourcen

Auflösen von Assemblys zur Entwurfszeit

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

August 2010

Den Inhalt des Themas Festlegen bestimmter Versionen von .NET Framework als Ziel mithilfe von MSBuild in diesem Thema zusammengeführt.

Informationsergänzung.