Aktualizowanie projektów programu Excel i word migrowanych do programu .NET Framework 4.5
Jeśli masz projekt programu Excel lub Word, który korzysta z dowolnej z następujących funkcji, musisz zmodyfikować kod, jeśli struktura docelowa zostanie zmieniona na program .NET Framework 4 lub nowszy:
Kolekcje pochodzące z bazy danych CollectionBase
Należy również usunąć
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
odwołania i doMicrosoft.Office.Tools.Excel.ExcelLocale1033Proxy
klasy z projektów programu Excel, które są ponownie przeznaczone dla programu .NET Framework 4 lub nowszego. Program Visual Studio nie usuwa tego atrybutu ani odwołania do klasy.
Usuwanie atrybutu ExcelLocale1033 z projektów programu Excel
Element Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
został usunięty z części środowiska uruchomieniowego programu Visual Studio 2010 Tools for Office, który jest używany w przypadku rozwiązań przeznaczonych dla programu .NET Framework 4 lub nowszego. Środowisko uruchomieniowe języka wspólnego (CLR) w programie .NET Framework 4 i nowszym zawsze przekazuje ustawienia regionalne o identyfikatorze 1033 do modelu obiektów programu Excel i nie można już użyć tego atrybutu, aby wyłączyć to zachowanie. Aby uzyskać więcej informacji, zobacz Globalizacja i lokalizacja rozwiązań programu Excel.
Aby usunąć atrybut ExcelLocale1033Attribute
Po otwarciu projektu w programie Visual Studio otwórz Eksplorator rozwiązań.
W węźle Właściwości (dla języka C#) lub w węźle Mój projekt (dla języka Visual Basic) kliknij dwukrotnie plik kodu AssemblyInfo, aby otworzyć go w edytorze kodu.
Uwaga
W projektach Visual Basic należy kliknąć przycisk Pokaż wszystkie pliki w Eksplorator rozwiązań, aby wyświetlić plik kodu AssemblyInfo.
Znajdź plik
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
i usuń go z pliku lub oznacz jako komentarz.
Usuwanie odwołania do klasy ExcelLocal1033Proxy
Projekty utworzone przy użyciu programu Microsoft Visual Studio 2005 Tools for the Microsoft Office System tworzą wystąpienie obiektu programu Excel Application przy użyciu Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy
klasy . Ta klasa została usunięta z części środowiska uruchomieniowego programu Visual Studio 2010 Tools for Office używanego w przypadku rozwiązań przeznaczonych dla programu .NET Framework 4 lub nowszego. W związku z tym należy usunąć lub oznaczyć jako komentarz wiersz kodu, który odwołuje się do tej klasy.
Aby usunąć odwołanie do klasy ExcelLocal1033Proxy
Otwórz projekt w programie Visual Studio, a następnie otwórz Eksplorator rozwiązań.
W Eksplorator rozwiązań otwórz menu skrótów dla ThisAddin.cs (dla języka C#) lub ThisAddin.vb (dla języka Visual Basic), a następnie wybierz pozycję Wyświetl kod.
W Edytorze
VSTO generated code
kodu w regionie usuń lub oznacz jako komentarz następujący wiersz kodu.
Aktualizowanie kodu używającego metod GetVstoObject i HasVstoObject
W projektach przeznaczonych dla programu .NET Framework 3.5 GetVstoObject
metody lub HasVstoObject
są dostępne jako metody rozszerzenia w jednym z następujących obiektów natywnych w projekcie: Document, , WorkbookWorksheetlub ListObject. Podczas wywoływania tych metod nie trzeba przekazywać parametru. W poniższym przykładzie kodu pokazano, jak używać metody GetVstoObject w dodatku programu Word VSTO przeznaczonym dla programu .NET Framework 3.5.
Microsoft.Office.Tools.Word.Document vstoDocument =
Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();
W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego należy zmodyfikować kod, aby uzyskać dostęp do tych metod w jeden z następujących sposobów:
Nadal można uzyskać dostęp do tych metod jako metod rozszerzeń w Documentobiektach , Workbook, Worksheetlub ListObject . Jednak należy teraz przekazać obiekt zwrócony przez
Globals.Factory
właściwość do tych metod.Alternatywnie można uzyskać dostęp do tych metod w obiekcie zwracanym przez
Globals.Factory
właściwość . Gdy uzyskujesz dostęp do tych metod w ten sposób, musisz przekazać obiekt macierzysty, który chcesz rozszerzyć na metodę.Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
Aby uzyskać więcej informacji, zobacz Rozszerzanie dokumentów programu Word i skoroszytów programu Excel w dodatku VSTO w czasie wykonywania.
Aktualizowanie kodu, który używa wystąpień wygenerowanych klas w projektach na poziomie dokumentu
W projektach na poziomie dokumentu przeznaczonych dla programu .NET Framework 3.5 wygenerowane klasy w projektach pochodzą z następujących klas w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office:
ThisDocument
: DocumentThisWorkbook
: WorkbookSheet
n:WorksheetChart
n:ChartSheetW projektach przeznaczonych dla programu .NET Framework 4 lub nowszego typy w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office wymienionym powyżej są interfejsami, a nie klasami. Wygenerowane klasy w projektach przeznaczonych dla programu .NET Framework 4 lub nowszego pochodzą z następujących nowych klas w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office:
ThisDocument
: DocumentBaseThisWorkbook
: WorkbookBaseSheet
n:WorksheetBaseChart
n:ChartSheetBaseJeśli kod w projekcie odwołuje się do wystąpienia jednej z wygenerowanych klas jako klasy bazowej, z której pochodzi, należy zmodyfikować kod.
Na przykład w projekcie skoroszytu programu Excel przeznaczonym dla programu .NET Framework 3.5 może istnieć metoda pomocnika wykonująca pewną pracę na wystąpieniach wygenerowanych
Sheet
n klas w projekcie.
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
// Do something to the worksheet object.
}
W przypadku ponownego utworzenia projektu w programie .NET Framework 4 lub nowszym należy wprowadzić jedną z następujących zmian w kodzie:
Zmodyfikuj dowolny kod, który wywołuje
DoSomethingToSheet
metodę , aby przekazać Base właściwość WorksheetBase obiektu w projekcie. Ta właściwość zwraca Worksheet obiekt.Zmodyfikuj
DoSomethingToSheet
parametr metody, aby oczekiwać WorksheetBase obiektu.
Aktualizowanie kodu korzystającego z kontrolek formularzy systemu Windows w dokumentach
Należy dodać instrukcję using (C#) lub Import (Visual Basic) dla Microsoft.Office.Tools.Excel przestrzeni nazw lub Microsoft.Office.Tools.Word na początku dowolnego pliku kodu, który używa właściwości Controls, aby programowo dodać kontrolki Formularze systemu Windows do dokumentu lub arkusza.
W projektach przeznaczonych dla programu .NET Framework 3.5 metody, które dodają kontrolki Windows Forms (takie jak AddButton
metoda), są definiowane w ControlCollection klasach i ControlCollection .
W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te metody są metodami rozszerzenia dostępnymi we właściwości Controls. Aby użyć tych metod rozszerzeń, plik kodu, w którym są używane metody, musi mieć instrukcję using lub Import dla Microsoft.Office.Tools.Excel przestrzeni nazw lub Microsoft.Office.Tools.Word . Ta instrukcja jest generowana automatycznie w nowych projektach przeznaczonych dla programu .NET Framework 4 lub nowszego. Jednak ta instrukcja nie jest dodawana automatycznie w projektach przeznaczonych dla programu .NET Framework 3.5, dlatego należy dodać ją podczas ponownego tworzenia projektu.
Aby uzyskać więcej informacji, zobacz Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania.
Aktualizowanie kodu obsługującego zdarzenia kontroli zawartości programu Word
W projektach przeznaczonych dla programu .NET Framework 3.5 zdarzenia kontrolek zawartości programu Word są obsługiwane przez delegata ogólnego EventHandler<TEventArgs> . W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te zdarzenia są obsługiwane przez innych delegatów.
W poniższej tabeli wymieniono zdarzenia sterowania zawartością programu Word i delegaty skojarzone z nimi w projektach przeznaczonych dla programu .NET Framework 4 lub nowszego.
Zdarzenie | Delegowanie do użycia w projektach .NET Framework 4 i nowszych |
---|---|
Added | ContentControlAddedEventHandler |
ContentUpdating | ContentControlContentUpdatingEventHandler |
Deleting | ContentControlDeletingEventHandler |
Entering | ContentControlEnteringEventHandler |
Exiting | ContentControlExitingEventHandler |
StoreUpdating | ContentControlStoreUpdatingEventHandler |
Aktualizowanie kodu używającego klas OLEObject i OLEControl
W projektach przeznaczonych dla programu .NET Framework 3.5 można dodawać kontrolki niestandardowe (takie jak kontrolki użytkownika formularzy systemu Windows) do dokumentu lub arkusza przy użyciu Microsoft.Office.Tools.Excel.OLEObject
klas i Microsoft.Office.Tools.Word.OLEControl
.
W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te klasy zostały zastąpione przez ControlSite interfejsy i ControlSite . Należy zmodyfikować kod odwołujący się do Microsoft.Office.Tools.Excel.OLEObject
i Microsoft.Office.Tools.Word.OLEControl
, aby zamiast tego odwoływać się do ControlSite i ControlSite. Poza nowymi nazwami te kontrolki zachowują się tak samo jak w projektach przeznaczonych dla programu .NET Framework 3.5.
Aby uzyskać więcej informacji, zobacz Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania.
Aktualizowanie kodu używającego właściwości Controls.Item(Object)
W projektach przeznaczonych dla programu .NET Framework 3.5 można użyć właściwości Item(Object) microsoft.Office.Tools.Word.Document.Controls lub kolekcji, aby określić, czy dokument lub Microsoft.Office.Tools.Excel.Worksheet.Controls
arkusz ma określoną kontrolkę.
W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego właściwość Item(Object) została usunięta z tych kolekcji. Aby określić, czy dokument lub arkusz zawiera określoną kontrolkę, należy zamiast tego użyć metody Controls Contains(System.Object) kolekcji lub Controls .
Aby uzyskać więcej informacji na temat kolekcji kontrolek dokumentów i arkuszy, zobacz Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania.
Aktualizowanie kodu korzystającego z kolekcji pochodzących z kolekcji CollectionBase
W projektach przeznaczonych dla programu .NET Framework 3.5 kilka typów kolekcji w środowisku uruchomieniowym Visual Studio Tools dla pakietu Office pochodzi z CollectionBase klasy, takiej jak Microsoft.Office.Tools.SmartTagCollection
, Microsoft.Office.Tools.Excel.ControlCollection
i Microsoft.Office.Tools.Word.ControlCollection
.
W projektach przeznaczonych dla programu .NET Framework 4 lub nowszego te typy kolekcji są teraz interfejsami, które nie pochodzą z programu CollectionBase. Niektóre elementy członkowskie nie są już dostępne dla tych typów kolekcji, takich jak Capacity, Listi InnerList.
Powiązana zawartość
- Migrowanie rozwiązań pakietu Office do programu .NET Framework 4 lub nowszego
- Kontrolki zawartości
- Rozszerzanie dokumentów programu Word i skoroszytów programu Excel w dodatku VSTO w czasie wykonywania
- Dodawanie kontrolek do dokumentów pakietu Office w czasie wykonywania
- Globalny dostęp do obiektów w projektach pakietu Office