Visual Studio .NET 包含一个可编程、非特定项目的对象模型,它提供对集成开发环境 (IDE) 的基础组件和事件的访问。该“常规扩展性”模型具有表示若干对象的组件,这些对象包括:解决方案、项目、工具窗口、代码编辑器、调试器、代码对象、文档和事件。此常规扩展性模型在自动化功能组中讨论。
Visual Studio .NET 还包含一个可编程对象模型,该模型公开 Visual Basic 和 Visual C# 项目及其所包含的项目项。该模型包含几个对象,这些对象可用于自动化 IDE 中的任务以及扩展项目类型和项目项。Visual Basic 和 Visual C# 项目的此模型在文档的本节讨论。
只要向任意项目添加对 VSLangProj.dll 程序集的引用,便可使用该对象模型。有关更多信息,请参见添加和移除引用。即,该对象模型可供宏、外接程序以及需要扩展或自动化 IDE 的任何类型的项目使用。宏是使用 Visual Basic .NET 在宏集成开发环境中编写的。这些主题中的示例是用 Visual Basic .NET 语言编写的。外接程序可以用任何 .NET 语言编写,包括 Visual Basic、Visual C#、C++ 和 JScript .NET。VSLangProj 成员的参考主题包括这些语言中的每一语言的语法。
VSLangProj 命名空间
该命名空间包含 Visual Basic 和 Visual C# 的所有类、接口和枚举。有关该命名空间中对象的完整列表,请参见用于项目的 Visual Basic 和 Visual C# 扩展性对象模型。
VSProject 对象
该对象提供对扩展性模型中的其他对象的访问。DTE 对象是 Visual Studio 自动化模型中的顶级对象。在常规扩展性模型中,项目由一般 Project 对象表示。Project 对象有个 Object 属性。该属性的类型在运行时由项目语言决定。在 Visual Basic 或 Visual C# 项目中,Object 属性返回一个 VSProject 类型的对象。由于 Object 属性的类型是 Object,因此您必须将引用转换为 VSProject 类型。在宏中,如果第一个项目是 Visual Basic 项目,那么转换可能类似于:
' Macro editor
Dim proj As Project
Dim vsproject As VSLangProj.VSProject
proj = DTE.Solution.Projects.Item(1)
vsproject = CType(proj.Object, VSLangProj.VSProject)
有了对 VSProject 项的引用后,便可以操作项目的属性、配置、文件、文件夹、Imports 语句和引用了。
References 和 Reference 对象
VSProject 对象所包含的 References 对象存放 Reference 对象的集合。Reference 对象表示一个项目引用,它主要是个支持 Remove 方法的只读对象。References 对象支持添加引用(COM、.NET 程序集、ActiveX 和其他项目)和引发事件(添加、移除和更改引用)。
References 对象不包含项目的 Web 引用。项目的 Web 引用可通过访问 WebReferencesFolder 属性的 ProjectItems 属性来检索。
Imports 对象
VSProject 对象所包含的 Imports 对象维护“导入”(Imports) 语句的集合,这些语句应用于整个 Visual Basic 项目。当向该集合添加一条 Imports 语句时,不必将相应的 Imports 语句(例如 Imports VSLangProj)添加到代码文件。该对象支持添加和移除 Imports 语句以及为响应添加和移除语句而引发事件。Visual C# 项目中无等效对象,并且当应用于 Visual C# 项目时,VSProject.Imports 属性将返回 Nothing。
VSProjectItem 和 BuildManager 对象
VSProjectItem 对象是 VSProject 对象的项目项副本。在常规扩展性模型中,项目项由一般 ProjectItem 对象表示。ProjectItem.Object 属性的类型是 Object,而在 Visual Basic 或 Visual C# 项目中,该属性的类型是 VSProjectItem。在宏中,将该对象转换为 VSProjectItem 类型可能类似于:
' Macro editor
Dim pi As VSProjectItem
pi = CType(DTE.Solution.Projects.Item(1).ProjectItems.Item(1).Object, _
VSProjectItem)
VSProjectItem 对象包含链接到父项目项和项目的属性,以及一个强制在该项上执行某自定义工具的方法。BuildManager 对象处理自定义工具输出。
Properties 属性
常规扩展性模型在三个对象中有 Properties 属性:
Project 对象 该对象中的属性等效于 IDE 中项目的“属性页”对话框的“通用属性”选项卡中的属性。
Configuration 对象 该对象中的属性等效于 IDE 中项目的“属性页”对话框的“配置属性”选项卡中的属性。
ProjectItem 对象 该对象中的属性等效于当在“解决方案资源管理器”中选择了一个项目项时“属性”窗口中的属性。
在每种情况下,Properties 属性都是 Property 类型的对象的集合。可通过指定属性的从 1 开始的索引或其名称,从该集合中获得 Property 对象。该集合的内容取决于语言。在项目项的情况下,此内容还取决于该项是文件还是文件夹。
查看本文来源