面向 .NET Framework 4 的 Office 项目设计的更改
更新:2010 年 5 月
Visual Studio 2010 引入了对面向 .NET Framework 4 的 Office 项目设计的一些更改。 如果您熟悉以前版本的 Visual Studio 中的 Office 项目,则在开发面向 .NET Framework 4 的 Office 项目之前,应了解这些更改。 如果您要将现有项目更新为面向 .NET Framework 4,则应了解若干重大更改。
了解 Visual Studio 2010 Tools for Office Runtime 的基于接口的设计
开发面向 .NET Framework 4 的 Office 项目时,在 Visual Studio 2010 Tools for Office Runtime中使用的大多数类型都是接口。 这是对以前版本的 Visual Studio Tools for Office Runtime 的主要更改,以前版本中的这些类型都是类。 例如,如果面向的是 .NET Framework 4,则 Worksheet 和 Document 类型是接口而不是类。 有关更多信息,请参见 Visual Studio Tools for Office Runtime 概述。
对于可以在以前版本的 Visual Studio Tools for Office Runtime中直接实例化的任何类型,现在可以使用 Globals.Factory 对象的方法来获取这些类型的实例。 例如,若要获取实现 SmartTag 接口的对象,请使用 Globals.Factory.CreateSmartTag 方法。 有关更多信息,请参见下列主题:
Office 项目中的新基类
Visual Studio 2010 Tools for Office Runtime的基于接口的新设计会影响 Office 项目中生成的类,如 ThisDocument、ThisWorkbook 和 ThisAddIn。 在面向 .NET Framework 3.5 和以前版本的 Framework 的 Office 项目中,这些生成的类派生自 Visual Studio Tools for Office Runtime中的类(如 Microsoft.Office.Tools.Word.Document、Microsoft.Office.Tools.Excel.Worksheet 和 Microsoft.Office.Tools.AddIn)。 在面向 .NET Framework 4 的项目中,这些 Visual Studio Tools for Office Runtime类现在是接口。 因此,Office 项目中生成的类不再从这些类派生其实现, 而是派生自新的基类,如 DocumentBase、WorksheetBase 和 AddInBase。 有关更多信息,请参见应用程序级外接程序编程和对文档级自定义项进行编程。
基类不属于 Visual Studio Tools for Office Runtime可再发行组件。 相反,基类在 Visual Studio 2010 附带的实用工具程序集中进行定义。 这些程序集在您生成 Office 项目时会复制到输出文件夹,并且必须随解决方案一起部署。 有关这些实用工具程序集的更多信息,请参见 Visual Studio Tools for Office Runtime 中的程序集。
重定向到 .NET Framework 4 的 Office 项目中的重大更改
下表列出了在重定向到 .NET Framework 4 的 Office 项目中可能遇到的一些主要重大更改。 有关更多详细信息,请参见将 Office 解决方案迁移到 .NET Framework 4。
重大更改 |
结果 |
---|---|
Office 项目中不再使用或支持 SecurityTransparentAttribute。 |
必须从 Office 项目(从 Visual Studio 2008 升级)中的 AssemblyInfo 代码文件中移除此特性。 有关更多信息,请参见运行迁移到 .NET Framework 4 的 Office 项目所需的更改。 |
Excel 项目中不再使用或支持 ExcelLocale1033Attribute。 |
必须从 Excel 项目中的 AssemblyInfo 代码文件中移除此特性。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Excel 和 Word 项目。 |
“功能区(可视化设计器)”项目项的编程模型已更改。 |
必须修改项目中的任何功能区项的代码隐藏文件。 还必须修改在运行时实例化功能区控件、处理功能区事件或以编程方式设置功能区组件的位置的任何代码。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Office 项目中的功能区自定义项。 |
Outlook 窗体区域的编程模型已更改。 |
必须修改项目中任何窗体区域的代码隐藏文件,以及在运行时实例化某些窗体区域类的任何代码。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Outlook 项目中的窗体区域。 |
Excel 和 Word 项目中的智能标记的编程模型已更改。 在 Excel 2010 和 Word 2010 中已弃用智能标记。 有关更多信息,请参见智能标记概述。 |
必须修改创建智能标记和操作对象的任何代码,以及定义自定义智能标记识别器的代码。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Excel 和 Word 项目。 |
GetVstoObject 和 HasVstoObject 方法的语法已更改 |
当您从主互操作程序集 (PIA) 在本机对象上访问这些方法时,必须将 Globals.Factory 对象传递给这些方法,或者,您可以在项目中的 Globals.Factory 属性返回的对象上访问这些方法。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Excel 和 Word 项目。 |
Word 内容控件的事件与新委托相关联。 |
必须将处理 Word 内容控件的事件的任何代码修改为指定新委托。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Excel 和 Word 项目。 |
OLEObject 和 OLEControl 类已被重命名。 |
必须将使用这些类的实例的任何代码改为使用 Microsoft.Office.Tools.Excel.ControlSite 或 Microsoft.Office.Tools.Word.ControlSite 对象。 有关更多信息,请参见更新迁移到 .NET Framework 4 的 Excel 和 Word 项目。 |
宿主项类(如 ThisWorkbook、Sheetn、ThisDocument 和 ThisAddIn)不再提供可重写的 Dispose 方法。 |
必须将 Dispose 方法重写中的所有代码移到宿主项类(例如,ThisAddIn_Shutdown)中的 Shutdown 事件处理程序,然后从宿主项类中移除 Dispose 方法重写。 |
请参见
概念
将 Office 解决方案迁移到 .NET Framework 4
Visual Studio Tools for Office Runtime 概述
修订记录
日期 |
修订记录 |
原因 |
---|---|---|
2010 年 5 月 |
增加了有关在面向 .NET Framework 4 的项目中移除 Dispose 方法的信息。 |
信息补充。 |