Dieser Artikel wurde maschinell übersetzt.

Basic Instincts

Festlegung von Zielversionen für Visual Basic-Anwendungen in Visual Studio 2010

Spotty Bowles

Vor Visual Studio 2008 erforderlich, beim Schreiben von Anwendungen, die für verschiedene Versionen von Microsoft .NET Framework-Installation verschiedener Versionen von Visual Studio-Entwicklungsumgebung. Jede Installation von Visual Studio eine andere Entwickler zu angeboten und erheblichen Speicherplatz verwendet. Darüber hinaus geändert, das Projektdateiformat zwischen den einzelnen Versionen von Visual Studio. Daher konnten Sie mit mehreren Versionen eines Projekts oder einer Projektmappe landen bei der Entwicklung einer Komponente für die Verwendung in Projekten, die auf verschiedene Versionen von .NET Framework abzielen.

Visual Studio 2008 war die erste Version, vollständig in eine einzige IDE Multi-Zielgruppenadressierung unterstützt die Entwickler zum Schreiben von Anwendungen für verschiedene Versionen von .NET Framework (2.0, 3.0 und 3.5) zulässig mit eine einzelne Visual Studio-Installation. Das Ergebnis Eine einzelne, konsistente Entwickler Erfahrung mit geringeren Speicherplatzanforderungen.

Multi-Zielgruppenadressierung in Visual Studio 2008 gearbeitet, da jede dieser Rahmenstrukturen verfügbaren zugrunde liegenden CLR 2.0 verwendet. Darüber hinaus auf jede Version des Frameworks bei .NET Framework 2.0-Grundlage, zusätzliche Funktionalität mithilfe der integrierten Assemblys verwiesen wird. Schließlich verwendet alle den .NET Framework 3.5 Visual Basic Befehlszeilencompiler (vbc.exe).

In diesem Artikel erläutern ich die Compiler 3.5 und 4 verweisen auf die Compiler als Teil des jeweiligen .NET Framework 3.5 und 4-Installationen installiert. Der Compiler 3.5 ist die Version, die mit Visual Studio 2008 und Visual Basic-9 ausgeliefert werden, während der 4-Compiler die Version, die im Lieferumfang von Visual Studio 2010 und Visual Basic 10 ist.

Also let’s nehmen einen Blick auf wie Multi-Zielgruppenadressierung funktioniert in Visual Studio noch heute, und wie Sie angehen sollten Multi-Zielgruppenadressierung in Ihren Projekten.

Multi-Zielgruppenadressierung in Visual Studio

Ändern das gewünschte Ziel-Framework wurde in Visual Studio 2008 so einfach wie das Ziel aus einer Dropdownliste in den Projekteigenschaften auswählen, wie in Abbildung 1 . Dies hinzugefügt oder entfernt bestimmte Verweise für jede Version von Framework erforderlich und veränderliche Frameworks schmerzlos vorgenommen.

image: Changing the Desired Target Framework in Visual Studio 2008
Abbildung 1 ändern das gewünschten Zielframework in Visual Studio 2008

Für Befehlszeilenkompilierung war es lediglich eine Frage der Ändern der Verweisassemblys verwendet.

Einige großen Änderungen stammt jedoch mit Visual Studio 2010. Das neue .NET Framework 4 wird eine neue Version der CLR. Dies bedeutet, dass Ansatz wird in Visual Studio 2008 nicht in Visual Studio 2010 praktisch ist. Dies hat zur Folge, verwendet Visual Studio 2010 der Version 4-Compiler für alle multi-targeting, auch bei frühere Versionen von .NET Framework abzielen. Dies ermöglicht vieler neuer Features der Sprache für die Zielgruppenadressierung von ab und bietet die Entwicklung erheblich vereinfacht.

Ein Nachteil besteht, können Sie die Features von Visual Studio 2010 für kompatible Ziele zu verwenden ist jedoch, dass Quelldateien Entwurfszeit-kompatible möglicherweise nicht mit früheren Versionen von Visual Studio verwendet. Dies kann problematisch sein, wenn Sie den Quellcode für Projekte, die erstellt unterschiedliche Versionen von Visual Studio verwenden und auf verschiedene Versionen von .NET Framework abzielen gemeinsam nutzen.

Wenn Sie die Projekte in Visual Studio 2010 für alle während der Entwurfszeit arbeiten, haben Sie eine bessere zu. Sie werden als Ziel von .NET Framework 2.0 nach oben mit Visual Studio 2010 und .NET Framework 3.5 SP1 Assemblys generieren können.

Entwurfszeit-Kompatibilität

Jetzt let’s sehen Sie sich ein Beispiel für einen Punkt Entwurfszeit-Kompatibilität. Der Code in Abbildung 2 verwendet implizite Zeilenfortsetzung und die Funktion automatisch implementierte Eigenschaften, beide in Visual Studio 2010 eingeführt. Dieser Code kann von an 2.0-Framework Ziel bei der Kompilierung mit Visual Studio 2010 kompiliert werden. Damit die generierte Assembly Common Language Runtime-kompatibel ist.

image: Using New Language Features That Will Work in Down-Level Targets
Abbildung 2 verwenden neue Sprachfeatures, Will Work in Down-Level-Ziele

Jedoch werden diese dieselbe Quellcodedatei, und kompilieren Sie 3.5 oder 2.0 Versionen des Compilers – Sie müssen die in Abbildung 3 angezeigten Fehler generieren.

image: Source Code from Visual Studio 2010 Is Not Design-Time Compatible with Visual Studio 2008
Abbildung 3 Quellcode von Visual Studio 2010 ist kein Design-Time mit Visual Studio 2008 kompatible

Tritt auf, weil früheren Versionen des Compilers nichts über diese Features kennen, und behandeln Sie dies als ungültigen Code. Daher sind die Quelldateien nicht während der Entwurfszeit kompatibel. Damit dieses Entwurfszeit-kompatibel ist, müssten Sie nur die Features in der Compiler 3.5 verfügbar sind.

Entwurfszeit-Kompatibilität hat Auswirkungen auf die auch Webprojekte. Bei vielen Webprojekten Kompilierung erfolgt auf dem Server, und der Server kompiliert natürlich die Seiten mit dem Ziel-Framework Compiler, die auf dem Server installiert. Wenn Sie eine Webseite, die in Visual Basic-Compiler 3.5 abzielen geschrieben haben, würde die Seite so auf dem Server mit der Version 3.5 (vbc.exe) der Visual Basic-Compiler kompiliert. Die Verwendung von neuen Sprachfeatures in Visual Studio 2010 würde fehlschlagen, wie 3,5 Compiler nichts über diese weiß.

Für Code entwickelt, die in Visual Studio 2010 der Version 4-Compiler verwendet wird, benötigen Sie eine Möglichkeit zum Identifizieren dieser Anforderung zur Kompilierzeit zu unerwarteten Fehler zu vermeiden, wenn die Seite an den Server bereitgestellt wird. Mit dem Schalter/langversion dabei die bei der Entwicklung von Webprojekten um Fehler über neuere Syntax Sprachfeatures zu generieren, die auf einer älteren Framework-Compiler kompiliert wird nicht verwendet. Beim Erstellen von ASP.NET Projekttypen ist dieser Option intern verwendet, um Fehler zu generieren, wenn der Code verwendet die neuen Features von Visual Studio 2010, aber Sie werden frühere Versionen von Framework abzielen.

Obwohl die Befehlszeilenoption/langversion nicht standardmäßig für alle anderen Projekttypen verwendet wird, kann nützlich sein, um sicherzustellen, dass der Quellcode während der Entwurfszeit kompatibel mit früheren Versionen von Visual Studio ist.

In der IDE von Visual Studio 2010 Multi-Zielgruppenadressierung

Der Benutzer Multi-Zielgruppenadressierung Erfahrung in der IDE von Visual Studio 2010 ist nahezu identisch mit der Visual Studio 2008. Wird weiterhin aus in den Projekteigenschaften gesteuert, aber bei einer Standardinstallation möglicherweise nicht den früheren Ziel-Frameworks angezeigt. Zur Installation Größe zu reduzieren, stellt Visual Studio-Team nicht vom Framework 3.5 in der Standardinstallation von Visual Studio 2010 liefern. Diese Änderung bedeutet, dass Sie nicht dieser Framework-Optionen in der Dropdownliste Target Framework oder im Dialogfeld Neues Projekt angezeigt werden sollen.

Dieser zusätzliche Frameworks hinzufügen möchten, müssen Sie .NET Framework 3.5 SP1 installieren. Sie können dieses Recht von der IDE ausführen. Im oberen Bereich des Dialogfelds Neues Projekt sehen Sie ein Dropdownmenü für das Zielframework auswählen. Wenn nur die .NET Framework-4 installiert wird, enthält das Menü eine Verknüpfung mehr zu downloaden. Wenn Sie andere installieren, werden jedoch nur .NET Framework 3.5 SP1 im Dropdown-Menü angezeigt, da Visual Studio nur die Installation von .NET Framework 3.5 SP1 hier erkennt.

Eine weitere Änderung hat mit Clientprofile zu tun. Diese wurden in .NET Framework 3.5 SP1 eingeführt, und Sie ermöglichen, dass Anwendungen, die eine vereinfachte Version von Framework verwenden, die Bereitstellungen ohne die Einbeziehung von serverseitigen Bestandteile des Frameworks, wie ASP.NET verbessert werden kann. Diese Profile sind verfügbar für 3.5 und 4-Framework Ziele.

Daher hat das Standardprofil für verschiedene Projekttypen geändert. Die Client-Projekttypen – Anwendungen für Windows, Console, Office und Windows Presentation Foundation (WPF), wird standardmäßig die Clientprofil. Für Webanwendungen werden das Standardprofil “ vollständige ” aufgrund von Verweisen auf Bibliotheken, die nicht mit dem Clientprofil-z. B. System.Web bereitgestellt werden.

Klassenbibliotheken auch vollständige Profil standardmäßig, aber können problemlos wieder zu einem Clientprofil geändert werden, wenn Sie nur auf Verweise mit dem Clientprofil bereitgestellt abhängig sind. Wenn die Klassenbibliothek vollständigen Profil festgelegt ist und dann in einem Projekt mit einem Clientprofil verwendet wird, sind weiterhin funktionsfähig, solange die Bibliothek Verweise abhängig ist, die nicht Bestandteil der Client-Framework-Assemblys sind.

Standardmäßig ist keines der in der Klassentyp für die Bibliothek Projekt hinzugefügten Verweise ein vollständigen Profils erforderlich. Da Sie mit einer Anwendung bereitgestellt haben, ist die Bereitstellung Anwendungsprofil wichtige Einstellung aus, um sicherzustellen, dass die vollständige Anwendungsfunktionen. Wenn Ihre Bibliothek verweisen außerhalb des Client-Bereichs abhängt, müssen die Bibliothek, und die Anwendung, die es vollständige Profil einzusetzen.

Verwenden des Befehlszeilencompilers Multi Zielgruppenadressierung

Der Version 4-Compiler verfügt über eine Reihe von Befehlszeilenoptionen, die keiner der, die das Zielframework leider, steuert daher es wichtig ist zu verstehen, etwas zu jeder der Optionen und ihrer Funktionsweise.

Wenn die .NET Framework-4 installiert ist, ist es möglich, zum Erstellen von Anwendungen mithilfe von vbc.exe, die frühere Versionen von Framework, abzielen ohne Visual Studio auf dem Buildcomputer installiert. In größeren Umgebungen häufig Buildskripts, die den Befehlszeilencompiler direkt aufgerufen werden. Wenn die Zielgruppenadressierung von früherer Versionen von der Befehlszeile aus Dateien mit der vorherigen Framework-Version, die Sie als Ziel verwenden, die installiert werden, sodass der beste Plan besteht darin, sowohl für .NET Framework 3.5 SP1 auf dem Computer installierten .NET Framework-4 ist erforderlich.

Vor diesem Hintergrund werden einige der möglichen Optionen zur Zielgruppenadressierung von Multi detaillierte in Abbildung 4 .

Abbildung 4 Line Build wechselt zum Steuerelement Multi-Zielgruppenadressierung

Schalter Beschreibung
langversion Stellt Fehler für Quellcode mit Features, die nicht die bestimmte Sprachversion entsprechen. (9.0 bezieht sich auf die Ziele, die .NET Framework 3.5; 10 gehört zu den Zielen der .NET Framework-4.) Ermöglicht Webprojekte identifizieren Sie Visual Studio 2010 Features in Down-Ziel-Szenarios verwendet, aber dies tatsächlich bestimmt nicht die Zielframework oder CLR verwendet wird.
vbruntime Es gibt zwar eine andere Version des Microsoft.VisualBasic-für das .NET Framework-4, einfach versucht, geben Sie "Microsoft.VisualBasic.dll", Version 2.0 funktioniert nicht und resultiert in einer Assembly, die abhängig von der Version 4 NetFX.
nostdlib Verhindert, dass den standardmäßigen Verweis auf "System.dll" aus der Assembly hinzugefügt. Es ist, zwar möglich, diese Option zusammen mit einem Verweis auf die Version von "System.dll" in das Framework 2.0 verwenden ist das Ergebnis noch immer eine Assembly mit Version 4.
sdkpath Eine wichtige Option, die angibt, welche Version von MSCorLib.dll und Microsoft.VisualBasic.DLL verwenden, wenn der Schalter Vbruntime kein angegeben ist, verwendet wird. Dies ist jedoch keiner expliziten Verweis auf den Sie in der Liste der Verweise in der Regel sehen werden. Stattdessen schließt der Compiler dies in seiner standardmäßigen verweisen. Hinzufügen der Projektmappe zur Zielgruppenadressierung von Multi ist, wenn Sie die Version 2.0 MSCorLib, nicht die Version 4.
noconfig Veranlasst den Compiler, um zu vermeiden, die Standardverweise, Importe und Schalter in der Datei vbc.rsp, die ansonsten verwendet würden, enthalten sind.

Diese Tabelle enthält eine kurze Beschreibung jeder Option, jedoch zu eine Kompilierung abwärts gerichtet tatsächlich zu erstellen, müssen Sie eine Kombination verwenden – es gibt kein einzelnes multi-target Schalter. Für ein Ziel Version 3.5 ist die wichtigste Option Sdkpath, die Sie verwenden können, um MSCorlib, Version 2.0 anzugeben. Vergewissern Sie sich dann die Verweise auf die richtigen Versionen der System.dll, System.core.dll und anderen früheren Target Framework Assemblys zeigen. (Diese befindet sich im Ordner Assemblies\Microsoft\Framework\v3.5 %programfiles%\Reference.)

Sie müssen den Noconfig-Schalter, um zu vermeiden, verwenden die Standard-Schalter in der Version 4 von vbc.rsp, enthält die Standardeinstellungen für die Kompilierung anzugeben. Ohne diesen wichtigen Schalter, würde der Compiler diese-4-Standardverweise, Importe usw. hinzufügen.

Befehlszeilenkompilierung mehrere gerichtet wird am besten durch ein Beispiel veranschaulicht. Ich bin hier einfach eine einfache Quelldatei dem Namen test.vb .NET Framework 3.5 abzielen kompilieren:

vbc.exe /noconfig /sdkpath:D:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 /r:"D:\Program Files\ReferenceAssemblies\Microsoft\Framework\v3.5\System.Core.dll" d:\school\test.vb  /out:\school\test.exe

Wenn Sie die Optionen zum Kompilieren einer Assembly 3.5 vertraut sind, sollten 2.0 abzielt stattdessen einfach entfernt einige auf, wie z. B. system.core.dll, die für das Framework 3.5 erforderlich sind. Der Schalter Sdkpath und Noconfig bleiben unverändert:

vbc.exe /noconfig /sdkpath:D:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 d:\school\test.vb /out:\school\test.exe

Sobald Sie die kompilierte Binärdatei haben, können Sie ein Tool wie MSIL Disassembler (Ildasm.exe) oder .NET Reflector, betrachten Sie die Versionen der verwendeten Verweise einsetzen. Auf diese Weise können Sie bestimmen, ob eine ausführbare Datei für das gewünschte Ziel-Framework ausgeführt wird.

Client-Profile und gemischten Target-Lösungen

Weiter oben im Artikel bereits erwähnt, dass Clientprofile der Standardwert für die meisten Projekttypen waren. Wenn solche Anwendungen bereitgestellt werden, tritt eine geringere Speicherbedarf Framework-Installation. Als Teil dieser Bereitstellung können Sie beobachten, dass der Befehlszeilencompiler bereitgestellt wird. Dies ist die gleiche Version des Compilers, die mit dem vollständigen Framework bereitgestellt werden, jedoch ist eine potenzielle Punkt beim Versuch, eine einfache Anwendung auf einem Clientprofil zu kompilieren.

Mit dem folgenden Befehl auf einem Client-Framework würde fehlschlagen, da die Client-Frameworks nicht mit eine vbc.rsp geliefert werden, die die Standardverweise enthält:

vbc.exe test.vb /out: Test.exe

Müssen Sie angeben, die Verweise und Importanweisungen, die normalerweise in der vbc.rsp enthalten sein oder die eigene erstellen.

Die nackte minimale Parameter, die zum Kompilieren des Visual Basic-Anwendung auf einer Framework-Clientinstallation erforderlich sind:

/r:System.dll/Imports:System/Imports:Microsoft.VisualBasic

Indem Sie diese Optionen können Sie eine einfache Visual Basic-Anwendung kompilieren. Sie sollten jedoch Anwendungen kompilieren auf einem Computer 
that das vollständige Framework installiert ist.

Mixed-Ziel-Lösungen – Klassenbibliotheken, die mit .NET Framework 3.5 wird mit einer Clientanwendung für das .NET Framework 4 verwendet erstellt – werden unterstützt, jedoch mit einigen Einschränkungen. In der IDE von Visual Studio 2010 Wenn Sie Projektverweise und sind daran gewöhnt, um die Erfahrungen, die Sie bereitstellen möchten, die erhalten immer noch diese Erfahrung Sie wenn die Ziel-Frameworks in den Projektverweisen verwenden Sie dieselbe Version von MSCorlib. Abbildung 5 zeigt die MSCorlib-Versionen und Framework-Versionen unterstützt.

Abbildung 5 MSCorlib und Versionskompatibilität Framework

MSCorlib-version Unterstützte Frameworks Profile
2.0 2.0, 3.0, 3.5 Client- und Full-Profile
4.0 4 Client- und Full-Profile

Wenn Sie eine Klassenbibliothek MSCorlib 2.0 abzielen, auf .NET Framework 3.5-Anwendung verwenden, können Sie dies trotzdem Projektverweisen verwenden. Ebenso kann eine .NET Framework-4 Full Profil Klassenbibliothek verweist eine Windows-Anwendung in .NET Framework-4-Clientprofil einen Projektverweis auf die Bibliothek verfügen.

Wenn Sie einen Verweis von Projekt zu Projekt, in dem eine andere Version von MSCorlib verwendet wird, wird der Verweis von Projekt in einem Dateiverweis konvertiert werden. Dies bedeutet, dass die Projektmappe manuell neu zu erstellen, wenn Sie die Fehler behoben werden müssen. Die Erfahrung werden vertraut, wenn Sie mit den Lösungen, die mehrere referenzierte Projekte, geschrieben in c# und Visual Basic gearbeitet haben. Sie verlieren die praktische Features mit Projektverweisen, wie z. B. das Umbenennen von Projekten und automatisch im Hintergrund Kompilierung zur Verfügung.

Die IDE abschirmt etwas aus, was hinter den Kulissen, während der Kompilierung geschieht, aber nicht jeder builds über die IDE. Die Dateireferenz wird automatisch wieder in einen Projektverweis ändern, wenn die Ziel-Frameworks geändert werden, so dass beide Frameworks mit einer gemeinsamen MSCorlib-Version verwenden, sodass es sich nicht um einen Dateiverweis true ist.

Was geschieht, wenn Sie innerhalb einer Anwendung, Version 4 eine (3,5) nach unten-Ziel-Klassenbibliothek verwenden? Die Klassenbibliothek wird tatsächlich für die .NET Framework-4 ausgeführt. Beträchtliche testen ist aufgetreten, um sicherzustellen, dass in diesem Szenario zur Laufzeit mit einigen Problemen funktioniert. Jedoch versuchen, eine 4.0 Framework-Klassenbibliothek für ein Framework 3.5-Anwendung verwenden, wird nicht unterstützt und führt dazu, dass ein Kompilierungsfehler mit Visual Studio oder MSBuild erstellen. 4.0 Framework-Klassenbibliotheken in 3,5 abzielende Framework-Anwendung verwenden möchten, jedoch müssten Sie abwärts-Ziel von der Klassenbibliothek für .NET Framework 3.5.

Denken Sie daran, jedoch, dass mit der Möglichkeit, den Sprachfeatures von Visual Studio 2010 Down-Ziel-Szenarien verwenden, als Ziel der Klassenbibliothek für .NET Framework 3.5 nicht sollte ein großes Problem. Abbildung 6 zusammengefasst, die neuen Features, die Sie erwarten Down-Ziel-Projekten arbeiten können.

Abbildung 6 neue Visual Studio-Features in unten Ziel Szenarien

Sprache-Funktion Works in Szenarios nach unten-Ziel
Auflistung Initialisierungen Ja
Array-Initialisierungen Ja
Automatisch implementierte Eigenschaften Ja
Implizite Zeilenfortsetzung Ja
Anweisung lambdas Ja
Keine PIA Nein
Dynamische interop Nein
PR/Kontravarianz Teilweise

PIAs und Interop

Mithilfe von .NET Framework zum Programmieren mit Microsoft Office-Objektmodell erfordert die Verwendung der primären Interop-Assemblys (PIAs), die auf dem Computer des Benutzers bereitgestellt werden muss. Diese Assemblys sind häufig sehr groß und Bereitstellung kann eine Belästigung.

Das neue Feature der Typ einbetten kann diese Anwendungen bereitgestellt werden, ohne dass der primären Interop-Assemblys auf dem Computer des Benutzers. Dies geschieht durch Generieren von eingebettete Interop-Typen, die die Interop-Aufrufe an die COM-Bibliothek direkt durchführen. Diese Typen sind vom Compiler So versehen ist, dass die CLR alle eingebetteten Interop-Typinstanzen als gleichwertig behandelt. Der Compiler wird jeder Typ in die PIA kopieren nicht in die Assembly nur diejenigen tatsächlich verwendeten. Weitere Informationen finden Sie unter “ Type Gleichwertigkeit und Embedded-Interop Typen ” in der MSDN Library (msdn.microsoft.com/library/dd997297(VS.100) ).

Die Funktionalität dieser Funktion wird nach unten-Ziel-Szenarien unter den .NET Framework-4 nicht unterstützt. Mithilfe der Visual Studio-IDE, ist dies nicht sofort offensichtlich, da Interop-Eigenschaft auf True festlegen des Verweises in einem normalen verwendeten Verweise ab Zielszenario eingebettet werden. Die Benutzerfreundlichkeit für das Feature von der IDE ist, dass die Assembly zu erstellen weiter, aber das Verhalten der standardmäßigen Verweise die primären Interop-Assemblys wiederhergestellt würde bereitgestellt werden müssten.

Von der Befehlszeile aus sind Verweise normalerweise hinzugefügt, mit der/reference-Option. Zum Einbetten, wird stattdessen die/Link-Option verwendet. Versucht, den Schalter/Link für Down-Ziel-Szenarien bei der Fehler bei der Kompilierung zu verwenden.

Hier ist ein Beispiel für eine Befehlszeile Einbetten von Typen aus der Interop-Assembly für Word:

D:\Windows\Microsoft.NET\Framework\v4.0.30128\Vbc.exe /imports:Microsoft.VisualBasic,System/Link: "D:\Programme\Microsoft c:\Programme\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Word.dll" / Reference: "D:\Programme\Microsoft Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Core.dll","D:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.dll" /out:ConsoleApplication16.exe/target: exe "Module1.vb"

Dieses Verhalten ist wichtig, da in der Standardeinstellung COM-Verweise hinzugefügt, um ein Projekt in Visual Studio 2010 einbetten Interop-Eigenschaft auf True festgelegt. So ändern das Zielframework sollte nicht in weiteren Fehlern führen, jedoch sollten den Vorteil der eingebetteten Interop-Typen bereitstellen, sofern möglich.

Ein weiteres neues Feature in Visual Studio 2010, die nicht für Szenarios ab-Ziel unterstützt wird ist dynamische Interop, da vor dem in Visual Studio 2010, Dynamic Language Runtime (DLR) vorhanden sind, nicht.

Andere Probleme

Kovarianz und Kontravarianz sind für benutzerdefinierte Schnittstellen unterstützt. Allerdings (Base Class Library, BCL) Schnittstellen für kompatible Ziele werden nicht geändert, und deshalb diese Basisklassen mit die Funktion wird nicht unterstützt. Weitere Informationen zur Kovarianz und Kontravarianz finden Sie die Basic Instincts-Spalte in der Ausgabe vom März 2010 MSDN Magazine (msdn.microsoft.com/magazine/ee336029 ).

Wenn Sie ein Projekt oder eine Projektmappe erstellt, die in einer früheren Version von Visual Studio, die in Visual Studio 2010 geöffnet wurde, sehen Sie das Standarddialogfeld aktualisieren. Visual Studio wird die erforderlichen Änderungen an den Dateien Projekt oder die Projektmappe mit Visual Studio 2010 erstellen. Allerdings sind zwei verschiedene Aktionen beim Aktualisieren von Dateien, die Multi-Zielgruppenadressierung auswirken könnten.

Wenn Sie .NET Framework 3.5 SP1 installiert haben, das Dialogfeld Aktualisierung lässt der Projekt oder eine Projektmappe Dateien auf Visual Studio 2010 aktualisiert werden, aber für das Projekt angegebene Ziel-Frameworks bleibt unverändert. Also wenn Sie eine Anwendung für .NET Framework 3.5 abzielen aktualisieren, muss nach der Aktualisierung es immer noch das Framework 3.5 Ziel.

Wenn Sie nicht mit .NET Framework 3.5 SP1 installiert haben, können Sie Multi-targets korrekt erstellen, weil Sie die Version 2.0 von MSCorlib und die Verweisassemblys benötigen. Das Dialogfeld bietet die Option, die das Ziel in einem Framework Version 4 ändern oder aktualisieren Sie das Projekt nicht. Die beste Vorgehensweise ist in diesem Fall besteht darin, die Aktualisierung abzubrechen, installieren Sie .NET Framework 3.5 SP1, und führen durch den Prozess so aktualisieren Sie das Projekt erneut.

Durch etwas mehr Verständnis der Einzelheiten der Implementierung von Visual Basic in Visual Studio 2010 Multi abzielen, sollten Sie in der Lage, Code zu schreiben, die Assemblys, die auf frühere Versionen des Frameworks mithilfe der IDE oder der Befehlszeile bereitgestellt werden können, aber dennoch nutzen einige der neuen Features von Visual Studio 2010 sein. Obwohl Multi-Zielgruppenadressierung einige Einschränkungen aufweist, behalten Sie die Möglichkeit zum Entwickeln und Bereitstellen von Anwendungen, die sofort aktualisiert werden können, verwenden Sie den .NET Framework-4.

Adrian Spotty Bowles* hat, entwickelte mit jeder Version von Visual Basic und verwaltet, um seine Möglichkeit finden, Redmond, Washington, wo er arbeitet an der Visual Basic-Produktteam als Software Design Engineer Tester den Schwerpunkt auf die Visual Basic-Compiler. Er ist immer noch zu Visual Basic leidenschaftliche und oft befinden antwortende Fragen in den Foren MSDN Visual Basic. Sie erreichen Bowles Abowles@microsoft.com .*

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Kevin Halverson und Beth Massi