在 SharePoint 项目系统类型和其他 Visual Studio 项目类型之间进行转换

在某些情况下,您可能拥有 SharePoint 项目系统中的一个对象,希望使用 Visual Studio 自动化对象模型或集成对象模型中相应对象的功能。或者,您可能拥有 Visual Studio 自动化对象模型或集成对象模型中的对象,希望使用 SharePoint 项目系统中相应对象的功能。在上述情况中,可以使用 SharePoint 项目服务的 Convert<TInput, TOutput> 方法将对象转换为不同的对象模型。

例如,您可能拥有一个 ISharePointProject 对象,但希望使用仅对 EnvDTE.ProjectMicrosoft.VisualStudio.Shell.Interop.IVsProject 对象可用的方法。在此情形中,您可以使用 Convert<TInput, TOutput> 方法,将 ISharePointProject 转换为 EnvDTE.ProjectMicrosoft.VisualStudio.Shell.Interop.IVsProject

有关 Visual Studio 自动化对象模型和 Visual Studio 集成对象模型的更多信息,请参见SharePoint 工具扩展的编程模型的概述

转换的类型

下表列出了可利用此方法在 SharePoint 项目系统和其他 Visual Studio 对象模型之间进行转换的类型。

SharePoint 项目系统类型

自动化对象模型和集成对象模型中的对应类型

ISharePointProject

EnvDTE.Project

Visual Studio 集成对象模型中由项目的基础 COM 对象实现的任何接口。这些接口包括 Microsoft.VisualStudio.Shell.Interop.IVsHierarchyMicrosoft.VisualStudio.Shell.Interop.IVsProject(或派生接口)和 Microsoft.VisualStudio.Shell.Interop.IVsBuildPropertyStorage。有关由项目实现的主接口的列表,请参见项目模型的核心组件

IMappedFolder

ISharePointProjectItem

ISharePointProjectItemFile

ISharePointProjectFeature

ISharePointProjectFeatureResourceFile

ISharePointProjectPackage

EnvDTE.ProjectItem

一个 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");
    }
}

此示例需要:

请参见

概念

使用 SharePoint 项目服务

如何:检索 SharePoint 项目服务

SharePoint 工具扩展的编程模型的概述