Обновление проектов Excel и Word, перенесенных на платформа .NET Framework 4.5
Если у вас есть проект Excel или Word, использующий любую из следующих функций, необходимо изменить код, если целевая платформа изменена на платформа .NET Framework 4 или более поздней версии:
Коллекции, производные от CollectionBase
Кроме того, необходимо удалить
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
и ссылки наMicrosoft.Office.Tools.Excel.ExcelLocale1033Proxy
класс из проектов Excel, которые перенацеливаются на платформа .NET Framework 4 или более поздней версии. Visual Studio не удаляет этот атрибут или ссылку на класс.
Удаление атрибута ExcelLocale1033 из проектов Excel
Она Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
была удалена из части среды выполнения Visual Studio 2010 для Office, которая используется для решений, предназначенных для платформа .NET Framework 4 или более поздней версии. Среда CLR (CLR) в платформа .NET Framework 4 и более поздних версиях всегда передает идентификатор языкового стандарта 1033 в объектную модель Excel, и вы больше не можете использовать этот атрибут для отключения этого поведения. Дополнительные сведения см. в статье "Глобализация и локализация решений Excel".
Удаление ExcelLocale1033Attribute
Откройте проект в Visual Studio, а затем откройте Обозреватель решений.
В узле Свойства (для C#) или Мой проект (для Visual Basic) дважды щелкните файл кода AssemblyInfo, чтобы открыть его в редакторе кода.
Примечание.
В проектах Visual Basic для просмотра файла с кодом AssemblyInfo необходимо нажать кнопку Показать все файлы в обозревателе решений .
Найдите
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute
и удалите его из файла или закомментируйте его.
Удаление ссылки на класс ExcelLocal1033Proxy
Проекты, созданные с помощью набора средств Microsoft Visual Studio 2005 для системы Microsoft Office, создают экземпляр объекта Application Excel с помощью класса Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy
. Этот класс был удален из части среды выполнения Visual Studio 2010 tools for Office, которая используется для решений, предназначенных для платформа .NET Framework 4 или более поздней версии. Таким образом, необходимо удалить или закомментировать строку кода, которая ссылается на этот класс.
Удаление ссылки на класс ExcelLocal1033Proxy
Откройте проект в Visual Studio, а затем откройте Обозреватель решений.
В Обозреватель решений откройте контекстное меню для ThisAddin.cs (для C#) или ThisAddin.vb (для Visual Basic), а затем выберите "Просмотреть код".
В редакторе кода в области
VSTO generated code
удалите или закомментируйте следующую строку кода.
Обновление кода, использующего методы GetVstoObject и HasVstoObject
В проектах, предназначенных для .NET Framework 3.5, методы GetVstoObject
и HasVstoObject
доступны как методы расширения в одном из следующих собственных объектов проекта: Document, Workbook, Worksheet или ListObject. При вызове этих методов передавать параметр не требуется. В следующем примере кода показано, как использовать метод GetVstoObject в надстройке VSTO Word, предназначенной для платформа .NET Framework 3.5.
Microsoft.Office.Tools.Word.Document vstoDocument =
Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();
В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, необходимо изменить код для доступа к этим методам одним из следующих способов:
Вы по-прежнему можете обратиться к этим методам как к методам расширения в объектах Document, Workbook, Worksheetи ListObject . Однако теперь этим методам необходимо передать объект, возвращаемый свойством
Globals.Factory
.Можно также обратиться к этим методам в объекте, который возвращается свойством
Globals.Factory
. При таком доступе к этим методам необходимо передать методу собственный объект, который требуется расширить до метода.Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
Дополнительные сведения см. в разделе "Расширение документов Word" и книг Excel в надстройках VSTO во время выполнения.
Обновление кода, использующего экземпляры созданных классов в проектах уровня документа
В проектах уровня документа, предназначенных для платформа .NET Framework 3.5, созданные классы в проектах являются производными от следующих классов в среде выполнения набор средств Visual Studio для Office:
ThisDocument
: DocumentThisWorkbook
: WorkbookSheet
n:WorksheetChart
n:ChartSheetВ проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, типы в набор средств Visual Studio для Office среде выполнения, перечисленные выше, являются интерфейсами, а не классами. Созданные классы в проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, являются производными от следующих новых классов в среде выполнения набор средств Visual Studio для Office:
ThisDocument
: DocumentBaseThisWorkbook
: WorkbookBaseSheet
n:WorksheetBaseChart
n:ChartSheetBaseЕсли код в вашем проекте ссылается на экземпляр одного из созданных классов в качестве базового класса, производным от которого он является, необходимо изменить код.
Например, в проекте книги Excel, ориентированном на .NET Framework 3.5, может присутствовать вспомогательный метод, который выполняет некоторые операции с экземплярами созданных классов
Sheet
n в проекте.
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
// Do something to the worksheet object.
}
При перенацелив проект на платформа .NET Framework 4 или более поздней версии, необходимо внести одно из следующих изменений в код:
Измените любой код, который вызывает метод
DoSomethingToSheet
для передачи свойства Base объекта WorksheetBase в проекте. Это свойство возвращает объект Worksheet .Измените параметр метода
DoSomethingToSheet
так, чтобы он принимал объект WorksheetBase .
Обновление кода, использующего элементы управления Windows Forms в документах
Необходимо добавить инструкцию using (C#) или Import (Visual Basic) для Microsoft.Office.Tools.Excel пространства имен или Microsoft.Office.Tools.Word пространства имен в верхнюю часть любого файла кода, использующего свойство Controls для добавления элементов управления Windows Forms в документ или лист программным способом.
В проектах, ориентированных на .NET Framework 3.5, методы, добавляющие элементы управления Windows Forms (такие как AddButton
), определяются в классах ControlCollection и ControlCollection.
В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, эти методы являются методами расширения, доступными в свойстве Controls. Чтобы использовать эти методы расширения, файл кода, в котором используются методы, должен содержать оператор using и Imports для пространства имен Microsoft.Office.Tools.Excel и Microsoft.Office.Tools.Word . Эта инструкция создается автоматически в новых проектах, предназначенных для платформа .NET Framework 4 или более поздней версии. Однако этот оператор не добавляется автоматически в проектах, ориентированных на .NET Framework 3.5, поэтому вам необходимо добавить его при изменении целевой платформы проекта.
Дополнительные сведения см. в разделе "Добавление элементов управления в документы Office во время выполнения".
Обновление кода, обрабатывающего события управления содержимым Word
В проектах, ориентированных на .NET Framework 3.5, события элементов управления содержимым Word обрабатываются универсальным делегатом EventHandler<TEventArgs> . В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, эти события обрабатываются другими делегатами.
В следующей таблице перечислены события управления содержимым Word и делегаты, связанные с ними в проектах, предназначенных для платформа .NET Framework 4 или более поздней версии.
Мероприятие | Делегирование использования в проектах платформа .NET Framework 4 и более поздних версий |
---|---|
Added | ContentControlAddedEventHandler |
ContentUpdating | ContentControlContentUpdatingEventHandler |
Deleting | ContentControlDeletingEventHandler |
Entering | ContentControlEnteringEventHandler |
Exiting | ContentControlExitingEventHandler |
StoreUpdating | ContentControlStoreUpdatingEventHandler |
Обновление кода, использующего классы OLEObject и OLEControl
В проектах, ориентированных на .NET Framework 3.5, можно добавить пользовательские элементы управления (например, элементы управления Windows Forms) в документ или на лист с помощью классов Microsoft.Office.Tools.Excel.OLEObject
и Microsoft.Office.Tools.Word.OLEControl
.
В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, эти классы были заменены ControlSite интерфейсами и ControlSite интерфейсами. Вам необходимо изменить код, который ссылается на Microsoft.Office.Tools.Excel.OLEObject
и Microsoft.Office.Tools.Word.OLEControl
так, чтобы он ссылался на ControlSite и ControlSite. За исключением новых имен, эти элементы управления ведут себя так же, как и в проектах, ориентированных на .NET Framework 3.5.
Дополнительные сведения см. в разделе "Добавление элементов управления в документы Office во время выполнения".
Обновление кода, использующего свойство Controls.Item(Object)
В проектах, предназначенных для платформа .NET Framework 3.5, можно использовать свойство Item(Object) microsoft.Office.Tools.Word.Document.Controls или Microsoft.Office.Tools.Excel.Worksheet.Controls
коллекцию, чтобы определить, имеет ли документ или лист указанный элемент управления.
В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, свойство Item(Object) было удалено из этих коллекций. Чтобы определить, содержит ли документ или лист указанный элемент управления, используйте вместо него метод Controls Controls Contains(System.Object).
Дополнительные сведения о коллекции элементов управления документов и листов см. в статье "Добавление элементов управления в документы Office во время выполнения".
Обновление кода, использующего коллекции, производные от CollectionBase
В проектах, предназначенных для платформа .NET Framework 3.5, несколько типов коллекций в среде выполнения набор средств Visual Studio для Office являются производными от CollectionBase класса, например Microsoft.Office.Tools.SmartTagCollection
Microsoft.Office.Tools.Excel.ControlCollection
, и Microsoft.Office.Tools.Word.ControlCollection
.
В проектах, предназначенных для платформа .NET Framework 4 или более поздней версии, эти типы коллекций теперь являются интерфейсами, которые не являются производными от CollectionBase. Некоторые члены в этих типах коллекций, такие как Capacity, Listи InnerList, больше не доступны.
Связанный контент
- Перенос решений Office на платформа .NET Framework 4 или более поздней версии
- Элементы управления содержимым
- Расширение документов Word и книг Excel в надстройках VSTO во время выполнения
- Добавление элементов управления в документы Office во время выполнения
- Глобальный доступ к объектам в проектах Office