Обновление проектов Excel и Word, которые переносятся в .NET Framework 4 или .NET Framework 4.5
При наличии Excel или формулируете проекта, где используются любые из следующих функций, необходимо изменить код, если требуемая версия .NET Framework изменяется на .NET Framework 4 или .NET Framework 4.5, выполните следующие действия.
Методы GetVstoObject и HasVstoObject
Классы, созданные в проектах уровня документа
Элементы управления Windows Forms в документах
События элементов управления содержимым Word
Классы OLEObject и OLEControl
Свойство Controls.Item(Object)
Коллекции, наследованные от CollectionBase
Необходимо удалить Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute и ссылки на класс Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy из проектов Excel, переориентированных на .NET Framework 4 или .NET Framework 4.5. Visual Studio не удаляет этот атрибут или справочные сведения о классах автоматически.
Удаление атрибута ExcelLocale1033 из проектов Excel
Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute удаляется из части средства Visual Studio 2010 для выполнения office, используемое для решений, целевой объект .NET Framework 4 или .NET Framework 4.5.Среда CLR (CLR) в .NET Framework 4 и .NET Framework 4.5 всегда передает код языка 1033 к объектной модели Excel и больше нельзя использовать этот атрибут отключить это расширение функциональности.Для получения дополнительной информации см. Глобализация и локализация решений Excel.
Удаление атрибута ExcelLocale1033Attribute
Откройте проект в Visual Studio и откройте обозреватель решений.
В узле Свойства (для C#) или Мой проект (для Visual Basic) дважды щелкните файл кода AssemblyInfo, чтобы открыть его в редакторе кода.
Примечание В проектах Visual Basic для просмотра файла с кодом AssemblyInfo необходимо нажать кнопку Показать все файлы в Обозревателе решений.
Найдите атрибут Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute и удалите его из файла или сделайте его комментарием.
<Assembly: ExcelLocale1033Proxy(True)>
[assembly: ExcelLocale1033Proxy(true)]
Чтобы удалить ссылку на класс ExcelLocal1033Proxy
Проекты, созданные с помощью средств Microsoft Visual Studio 2005 для Microsoft Office Excel система создает экземпляр объекта Microsoft.Office.Interop.Excel.Application с помощью класса Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Этот класс удаляется из части средства Visual Studio 2010 для выполнения office, используемое для решений, целевой объект .NET Framework 4 или .NET Framework 4.5.Следовательно, необходимо удалить или закомментировать строку кода, которая использует этот класс.
Чтобы удалить ссылку на класс ExcelLocal1033Proxy
Открытие проекта в Visual Studio, а затем откройте Обозреватель решений.
В Обозреватель решений откройте контекстное меню для ThisAddin.cs (в C-#) или ThisAddin.vb (в Visual Basic), а затем выберите Просмотреть код.
В редакторе кода, в область VSTO generated code и удалите или закомментируйте следующую строку кода.
Me.Application = CType(Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(GetType(Excel.Application), Me.Application), Excel.Application)
this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
Обновление кода, использующего методы GetVstoObject и HasVstoObject
В проектах, ориентированных на .NET Framework 3.5, методы GetVstoObject или HasVstoObject доступны как методы расширения в одном из следующих собственных объектов проекта: Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet или Microsoft.Office.Interop.Excel.ListObject.При вызове этих методов нет необходимости передавать параметр.В следующих примерах кода показано, как использовать метод GetVstoObject в надстройке Word, ориентированной на .NET Framework 3.5.
Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject()
Microsoft.Office.Tools.Word.Document vstoDocument =
Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();
В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, необходимо изменить код для получения этих методов можно одним из следующих способов:
К этим методам все также можно обращаться как к методам расширения объектов Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet или Microsoft.Office.Interop.Excel.ListObject.Однако теперь необходимо передавать этим методам объект, возвращенный свойством Globals.Factory.
Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _ Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory)
Microsoft.Office.Tools.Word.Document vstoDocument = Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
Кроме того, эти методы можно вызывать в объекте, возвращенном свойством Globals.Factory.При вызове этих методов таким образом необходимо передать в этот метод собственный объект, который необходимо расширить.
Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _ Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument)
Microsoft.Office.Tools.Word.Document vstoDocument = Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
Дополнительные сведения см. в разделе Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения.
Обновление кода, использующего экземпляры созданных классов в проектах уровня документа
В проектах уровня документа, ориентированных на платформу .NET Framework 3.5, созданные классы наследуют от следующих классов Visual Studio Tools for Office (cреда выполнения):
ThisDocument: Microsoft.Office.Tools.Word.Document
ThisWorkbook: Microsoft.Office.Tools.Excel.Workbook
В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, типы Visual Studio Tools for Office (cреда выполнения) в выше интерфейсы, вместо классов.Создаваемые классы в проектах, целевой объект .NET Framework 4 или .NET Framework 4.5 является производным от новых классов в Visual Studio Tools for Office (cреда выполнения):
ThisDocument: Microsoft.Office.Tools.Word.DocumentBase
ThisWorkbook: Microsoft.Office.Tools.Excel.WorkbookBase
Если код в проекте ссылается на экземпляр одного из созданных классов в качестве базового класса, от которого он наследует, необходимо изменить код.
Например, в проекте книги Excel, ориентированном на .NET Framework 3.5, может использоваться вспомогательный метод, который выполняет некоторые операции с экземплярами созданных в проекте классов Sheetn.
Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.Worksheet)
' Do something to the worksheet object.
End Sub
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
// Do something to the worksheet object.
}
Если перенацеливается проекта в .NET Framework 4 или .NET Framework 4.5, необходимо внести в код одно из следующих изменений:
Измените в проекте код, в котором вызывается метод DoSomethingToSheet, для передачи свойства Base объекта Microsoft.Office.Tools.Excel.WorksheetBase.Это свойство возвращает объект Microsoft.Office.Tools.Excel.Worksheet.
DoSomethingToSheet(Globals.Sheet1.Base)
DoSomethingToSheet(Globals.Sheet1.Base);
Измените параметр метода DoSomethingToSheet, чтобы ожидать объект Microsoft.Office.Tools.Excel.WorksheetBase.
Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.WorksheetBase) ' Do something to the worksheet object. End Sub
private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet) { // Do something to the worksheet object. }
Обновление кода, использующего элементы управления Windows Forms в документах
Необходимо добавить оператор using (C#) или Imports (Visual Basic) для пространства имен Microsoft.Office.Tools.Excel или Microsoft.Office.Tools.Word в начало любого файла кода, который использует свойство Controls для добавления элементов управления Windows Forms в документ или на лист программным способом.
В проектах, ориентированных на .NET Framework 3.5, методы, добавляющие элементы управления Windows Forms (такие как метод AddButton), определяются в классах Microsoft.Office.Tools.Excel.ControlCollection и Microsoft.Office.Tools.Word.ControlCollection.
В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, эти методы расширения, которые доступны в свойстве Controls.Чтобы использовать эти методы, файл кода, в котором используется методы, должны использовать оператор using или Imports для пространства имен Microsoft.Office.Tools.Excel или Microsoft.Office.Tools.Word.Это выписка создается автоматически в новых проектах, целевой объект .NET Framework 4 или .NET Framework 4.5.Однако этот оператор не добавляется автоматически в проекты, ориентированные на .NET Framework 3.5, поэтому его следует добавлять при изменении требуемой версии .NET Framework в проекте.
Дополнительные сведения см. в разделе Добавление элементов управления в документы Office во время выполнения.
Обновление кода, обрабатывающего события элементов управления контентом Word
В проектах, ориентированных на .NET Framework 3.5, события элементов управления содержимым Word, обрабатываются общим делегатом EventHandler<TEventArgs>.В проектах, целевых объектов .NET Framework 4 или .NET Framework 4.5, эти события обрабатывают другими делегатам.
В следующей таблице перечислены события и делегаты управления содержимым ключевые слова, связанные с ними в проектах, целевой объект .NET Framework 4 или .NET Framework 4.5.
Событие |
Делегат, используемый в проектах .NET Framework 4 и .NET Framework 4.5 |
---|---|
Обновление кода, использующего классы OLEObject и OLEControl
В проектах, ориентированных на .NET Framework 3.5, можно добавить пользовательские элементы управления (такие как пользовательские элементы управления Windows Forms) в документ или на лист с помощью классов Microsoft.Office.Tools.Excel.OLEObject и Microsoft.Office.Tools.Word.OLEControl.
В проектах, целевых объектов .NET Framework 4 или .NET Framework 4.5, эти классы заменил интерфейсами Microsoft.Office.Tools.Excel.ControlSite и Microsoft.Office.Tools.Word.ControlSite.Необходимо изменить код, который ссылается на объекты Microsoft.Office.Tools.Excel.OLEObject и Microsoft.Office.Tools.Word.OLEControl, чтобы он ссылался на объекты Microsoft.Office.Tools.Excel.ControlSite и Microsoft.Office.Tools.Word.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 или .NET Framework 4.5, свойство Item(Object) удаляет из этих коллекций.Чтобы определить, содержит ли документ или лист указанный элемент управления, используйте вместо этого метод Contains(System.Object) коллекции Document.Controls или Worksheet.Controls.
Дополнительные сведения о коллекциях документов и листов Controls см. в разделе Добавление элементов управления в документы Office во время выполнения.
Обновление кода, использующего коллекции, производные от CollectionBase
В проектах, ориентированных на .NET Framework 3.5, некоторые типы коллекций в Visual Studio Tools for Office (cреда выполнения) наследуются от класса CollectionBase, такие как Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection и Microsoft.Office.Tools.Word.ControlCollection.
В проектах, целевой объект .NET Framework 4 или .NET Framework 4.5, эти типы коллекций теперь интерфейсы, которые не являются производными от CollectionBase.Некоторые члены перестали быть доступны в этих типах коллекций, например Capacity, List и InnerList.
См. также
Основные понятия
Перенос решений Office на платформу .NET Framework 4 или .NET Framework 4.5
Элементы управления содержимым
Расширение документов Word и книг Excel в надстройках уровня приложения во время выполнения
Добавление элементов управления в документы Office во время выполнения