在 SharePoint 项目系统类型和其他 Visual Studio 项目类型之间进行转换
在某些情况下,您可能拥有 SharePoint 项目系统中的一个对象,希望使用 Visual Studio 自动化对象模型或集成对象模型中相应对象的功能。或者,您可能拥有 Visual Studio 自动化对象模型或集成对象模型中的对象,希望使用 SharePoint 项目系统中相应对象的功能。在上述情况中,可以使用 SharePoint 项目服务的 Convert<TInput, TOutput> 方法将对象转换为不同的对象模型。
例如,您可能拥有一个 ISharePointProject 对象,但希望使用仅对 EnvDTE.Project 或 Microsoft.VisualStudio.Shell.Interop.IVsProject 对象可用的方法。在此情形中,您可以使用 Convert<TInput, TOutput> 方法,将 ISharePointProject 转换为 EnvDTE.Project 或 Microsoft.VisualStudio.Shell.Interop.IVsProject。
有关 Visual Studio 自动化对象模型和 Visual Studio 集成对象模型的更多信息,请参见SharePoint 工具扩展的编程模型的概述。
转换的类型
下表列出了可利用此方法在 SharePoint 项目系统和其他 Visual Studio 对象模型之间进行转换的类型。
SharePoint 项目系统类型 |
自动化对象模型和集成对象模型中的对应类型 |
---|---|
或 Visual Studio 集成对象模型中由项目的基础 COM 对象实现的任何接口。这些接口包括 Microsoft.VisualStudio.Shell.Interop.IVsHierarchy、Microsoft.VisualStudio.Shell.Interop.IVsProject(或派生接口)和 Microsoft.VisualStudio.Shell.Interop.IVsBuildPropertyStorage。有关由项目实现的主接口的列表,请参见项目模型的核心组件。 |
|
或 一个 UInt32 值,也称作 VSITEMID,用于在包含某项目成员的 Microsoft.VisualStudio.Shell.Interop.IVsHierarchy 中标识该项目成员。此值可以传递给某些 Microsoft.VisualStudio.Shell.Interop.IVsHierarchy 方法的 itemid 参数。 |
示例
下面的代码示例演示如何使用 Convert<TInput, TOutput> 方法,将 ISharePointProject 对象转换为 EnvDTE.Project。
Private Sub projectService_ProjectAdded(ByVal sender As Object, _
ByVal e As Microsoft.VisualStudio.SharePoint.SharePointProjectEventArgs)
Dim dteProject As EnvDTE.Project = e.Project.ProjectService.Convert( _
Of Microsoft.VisualStudio.SharePoint.ISharePointProject, EnvDTE.Project)(e.Project)
If dteProject IsNot Nothing Then
' Use the Visual Studio automation object model to add a folder to the project.
dteProject.ProjectItems.AddFolder("Data")
End If
End Sub
void projectService_ProjectAdded(object sender, Microsoft.VisualStudio.SharePoint.SharePointProjectEventArgs e)
{
EnvDTE.Project dteProject = e.Project.ProjectService.Convert<
Microsoft.VisualStudio.SharePoint.ISharePointProject, EnvDTE.Project>(e.Project);
if (dteProject != null)
{
// Use the Visual Studio automation object model to add a folder to the project.
dteProject.ProjectItems.AddFolder("Data");
}
}
此示例需要:
具有对 EnvDTE.dll 程序集的引用的 SharePoint 项目系统的扩展。有关更多信息,请参见扩展 SharePoint 项目系统。
用于注册 projectService_ProjectAdded 方法以处理 ISharePointProjectService 对象的 ProjectAdded 事件的代码。有关示例,请参见如何:创建 SharePoint 项目扩展。