Aktualisieren von Excel- und Word-Projekten, die Sie zu .NET Framework 4.5 migrieren
Wenn Sie über ein Excel- oder Word-Projekt verfügen, das eine der folgenden Funktionen verwendet, müssen Sie Ihren Code ändern, wenn das Zielframework auf .NET Framework 4 oder höher geändert wird:
Von CollectionBase abgeleitete Auflistungen
Außerdem müssen Sie die
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
Klassen und Verweise auf dieMicrosoft.Office.Tools.Excel.ExcelLocale1033Proxy
Klasse aus Excel-Projekten entfernen, die auf .NET Framework 4 oder höher umgeleitet werden. Dieses Attribut oder der Klassenverweis wird von Visual Studio nicht für Sie entfernt.
Entfernen des ExcelLocale1033-Attributs aus Excel-Projekten
Die Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
wurde aus dem Teil der Visual Studio 2010-Tools für die Office-Laufzeit entfernt, der für Lösungen verwendet wird, die auf .NET Framework 4 oder höher abzielen. Die Common Language Runtime (CLR) in .NET Framework 4 und höher übergibt immer die Gebietsschema-ID 1033 an das Excel-Objektmodell. Sie können dieses Attribut nicht mehr zum Deaktivieren dieses Verhaltens verwenden. Weitere Informationen finden Sie unter Globalisierung und Lokalisierung von Excel-Lösungen.
So entfernen Sie das ExcelLocale1033Attribute
Öffnen Sie den Projektmappen-Explorer, während das Projekt in Visual Studio geöffnet ist.
Doppelklicken Sie unter dem Knoten Eigenschaften (für C#) oder dem Knoten Mein Projekt (für Visual Basic) auf die Codedatei "AssemblyInfo", um diese im Code-Editor zu öffnen.
Hinweis
In Visual Basic-Projekten müssen Sie im Projektmappen-Explorer auf die Schaltfläche Alle Dateien anzeigen klicken, um die Codedatei "AssemblyInfo" anzuzeigen.
Suchen Sie nach
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
, und entfernen Sie das Attribut aus der Datei, oder kommentieren Sie es aus.
Entfernen eines Verweises auf die ExcelLocal1033Proxy-Klasse
Projekte, die mithilfe von Microsoft Visual Studio 2005-Tools für Microsoft Office System erstellt wurden, instanziieren das Application-Objekt von Excel mithilfe der Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy
-Klasse. Die Klasse wurde aus dem Teil der Visual Studio 2010-Tools für die Office-Laufzeit entfernt, der für Lösungen verwendet wird, die auf .NET Framework 4 oder höher abzielen. Sie müssen die Codezeilen, die auf diese Klasse verweist, daher entfernen oder auskommentieren.
So entfernen Sie den Verweis auf die ExcelLocal1033Proxy-Klasse
Öffnen Sie das Projekt in Visual Studio und dann den Projektmappen-Explorer.
Öffnen Sie im Lösungs-Explorer das Kontextmenü für ThisAddin.cs (für C#) oder ThisAddin.vb (für Visual Basic) und wählen Sie dann Code anzeigen.
Entfernen Sie im Code-Editor in der
VSTO generated code
-Region die folgende Codezeile, oder kommentieren Sie sie aus.
Aktualisieren von Code, der die GetVstoObject-Methode und HasVstoObject-Methode verwendet
In Projekten, die auf .NET Framework 3.5 ausgerichtet sind, sind die Methoden GetVstoObject
oder HasVstoObject
als Erweiterungsmethoden in einem der folgenden systemeigenen Objekte Ihres Projekts verfügbar: Document, Workbook, Worksheet oder ListObject. Wenn Sie diese Methoden aufrufen, müssen Sie keinen Parameter übergeben. Im folgenden Codebeispiel wird die Verwendung der GetVstoObject-Methode in einem Word-VSTO-Add-In veranschaulicht, das auf .NET Framework 3.5 ausgerichtet ist.
Microsoft.Office.Tools.Word.Document vstoDocument =
Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();
In Projekten, die auf .NET Framework 4 oder höher ausgerichtet sind, müssen Sie den Code für den Zugriff auf diese Methoden auf eine der folgenden Weisen ändern:
In den Objekten Document, Workbook, Worksheetoder ListObject können Sie weiterhin auf diese Methoden als Erweiterungsmethoden zugreifen. Allerdings müssen Sie jetzt das von der der
Globals.Factory
-Eigenschaft zurückgegebene Objekt an diese Methoden übergeben.Alternativ können Sie auch in dem von der
Globals.Factory
-Eigenschaft zurückgegebenen Objekt auf diese Methoden zugreifen. Wenn Sie auf diese Weise auf die Methoden zugreifen, müssen Sie das systemeigene Objekt, das Sie erweitern möchten, an die Methode übergeben.Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
Weitere Informationen finden Sie unter Extend Word documents and Excel workbooks in VSTO Add-ins at run time.
Aktualisieren von Code, der Instanzen der generierten Klassen in Projekten auf Dokumentebene verwendet
In Projekten auf Dokumentebene, die auf .NET Framework 3.5 abzielen, werden die generierten Klassen in den Projekten von den folgenden Klassen in der Visual Studio-Tools für Office-Laufzeit abgeleitet:
ThisDocument
: DocumentThisWorkbook
: WorkbookSheet
n: WorksheetChart
n: ChartSheetIn Projekten, die auf .NET Framework 4 oder höher ausgerichtet sind, handelt es sich bei den oben aufgeführten Typen in der Visual Studio-Tools für Office-Laufzeit um Schnittstellen und nicht um Klassen. Die generierten Klassen in Projekten, die auf .NET Framework 4 oder höher abzielen, werden von den folgenden neuen Klassen in der Visual Studio-Tools für Office-Laufzeit abgeleitet:
ThisDocument
: DocumentBaseThisWorkbook
: WorkbookBaseSheet
n: WorksheetBaseChart
n: ChartSheetBaseWenn der Code im Projekt auf eine Instanz einer der generierten Klassen als Basisklasse verweist, von der sie abgeleitet ist, müssen Sie den Code ändern.
In einem Excel-Arbeitsmappenprojekt, das auf .NET Framework 3.5 ausgerichtet ist, verfügen Sie z. B. möglicherweise über eine Hilfsmethode, die einen Teil der Arbeitsvorgänge für Instanzen der generierten
Sheet
n -Klassen im Projekt ausführt.
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
// Do something to the worksheet object.
}
Wenn Sie das Projekt neu auf .NET Framework 4 oder höher ausrichten, müssen Sie eine der folgenden Änderungen am Code vornehmen:
Ändern Sie den Code, durch den die
DoSomethingToSheet
-Methode zum Übergeben der Base -Eigenschaft eines WorksheetBase -Objekts im Projekt aufgerufen wird. Diese Eigenschaft gibt ein Worksheet -Objekt zurück.Ändern Sie den
DoSomethingToSheet
-Methodenparameter, damit er stattdessen ein WorksheetBase -Objekt erwartet.
Aktualisieren von Code, der Windows Forms-Steuerelemente in Dokumenten verwendet
Sie müssen am Anfang jeder Codedatei, die die Controls-Eigenschaft verwendet, um dem Dokument oder Arbeitsblatt programmgesteuert Windows Forms-Steuerelemente hinzuzufügen, eine using (C#) oder Imports (Visual Basic)-Anweisung für den Microsoft.Office.Tools.Excel oder Microsoft.Office.Tools.Word Namespace hinzufügen.
In Projekten, die auf .NET Framework 3.5 ausgerichtet sind, werden die Methoden, durch die Windows Forms-Steuerelemente (z. B. die AddButton
-Methode) hinzugefügt werden, in den der ControlCollection-Klasse und ControlCollection-Klasse definiert.
Bei Projekten, die auf .NET Framework 4 oder höher abzielen, handelt es sich bei diesen Methoden um Erweiterungsmethoden, die für die Controls-Eigenschaft verfügbar sind. Um diese Erweiterungsmethoden verwenden zu können, muss die Codedatei, in der Sie die Methoden verwenden, über die Anweisung using oder Imports für den Namespace Microsoft.Office.Tools.Excel oder Microsoft.Office.Tools.Word verfügen. Diese Anweisung wird automatisch in neuen Projekten generiert, die auf .NET Framework 4 oder höher ausgerichtet sind. Allerdings wird die Anweisung in Projekten, die auf .NET Framework 3.5 ausgerichtet sind, nicht automatisch hinzugefügt. Sie müssen sie bei der Neuausrichtung des Projekts hinzufügen.
Weitere Informationen finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.
Aktualisieren von Code für die Ereignisbehandlung von Inhaltssteuerelementen in Word
In Projekten, die auf .NET Framework 3.5 ausgerichtet sind, werden diese Ereignisse vom generischen EventHandler<TEventArgs> -Delegaten behandelt. In Projekten, die auf .NET Framework 4 oder höher ausgerichtet sind, werden diese Ereignisse jetzt von anderen Delegaten behandelt.
In der folgenden Tabelle sind die Ereignisse für Inhaltssteuerelemente in Word und die Delegaten aufgeführt, die in Projekten, die auf .NET Framework 4 oder höher ausgerichtet sind, mit den Ereignissen verknüpft sind.
Ereignis | Delegat für Projekte unter .NET Framework 4 und höher |
---|---|
Added | ContentControlAddedEventHandler |
ContentUpdating | ContentControlContentUpdatingEventHandler |
Deleting | ContentControlDeletingEventHandler |
Entering | ContentControlEnteringEventHandler |
Exiting | ContentControlExitingEventHandler |
StoreUpdating | ContentControlStoreUpdatingEventHandler |
Aktualisieren von Code, der die OLEObject- Klasse und die OLEControl-Klasse verwendet.
In Projekten, die auf .NET Framework 3.5 ausgerichtet sind, können Sie einem Dokument oder Arbeitsblatt benutzerdefinierte Steuerelemente (z. B. Windows Forms-Steuerelemente) mithilfe der Klassen Microsoft.Office.Tools.Excel.OLEObject
und Microsoft.Office.Tools.Word.OLEControl
hinzufügen.
In Projekten, die auf .NET Framework 4 oder höher ausgerichtet sind, wurden diese Klassen durch die Schnittstellen ControlSite und ControlSite ersetzt. Sie müssen den Code ändern, der auf Microsoft.Office.Tools.Excel.OLEObject
und Microsoft.Office.Tools.Word.OLEControl
verweist, damit er stattdessen auf ControlSite und ControlSite verweist. Abgesehen von den neuen Namen verhalten sich diese Steuerelemente auf die gleiche Weise wie in Projekten, die auf .NET Framework 3.5 ausgerichtet sind.
Weitere Informationen finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.
Aktualisieren von Code, der die Controls.Item(Object)-Eigenschaft verwendet
In Projekten, die auf .NET Framework 3.5 abzielen, können Sie die Item(Object)-Eigenschaft der Microsoft.Office.Tools.Word.Document.Controls oder Microsoft.Office.Tools.Excel.Worksheet.Controls
-Auflistung verwenden, um zu bestimmen, ob ein Dokument oder Arbeitsblatt über ein angegebenes Steuerelement verfügt.
In Projekten, die auf .NET Framework 4 oder höher abzielen, wurde die Element(Object)-Eigenschaft aus diesen Auflistungen entfernt. Um zu bestimmen, ob ein Dokument oder Arbeitsblatt ein angegebenes Steuerelement enthält, verwenden Sie stattdessen die Contains(System.Object)-Methode der Controls oder Controls Auflistung.
Weitere Informationen zur Controls-Auflistung von Dokumenten und Arbeitsblättern finden Sie unter Hinzufügen von Steuerelementen zu Office-Dokumenten zur Laufzeit.
Aktualisieren von Code, der von CollectionBase abgeleitete Auflistungen verwendet
In Projekten, die auf .NET Framework 3.5 abzielen, leiten mehrere Sammlungstypen in der Visual Studio-Tools für Office-Laufzeit von der CollectionBase Klasse ab, zMicrosoft.Office.Tools.SmartTagCollection
. B. , Microsoft.Office.Tools.Excel.ControlCollection
und Microsoft.Office.Tools.Word.ControlCollection
.
In Projekten, die auf .NET Framework 4 oder höher ausgerichtet sind, sind diese Auflistungstypen jetzt Schnittstellen, die nicht von CollectionBase abgeleitet sind. Einige Member sind für diese Auflistungstypen nicht mehr verfügbar, z. B. Capacity, Listund InnerList.