共用方式為


在 SharePoint 專案系統類型與其他 Visual Studio 專案類型之間轉換

在某些情況下,您可能在 SharePoint 專案系統中擁有物件,但是想要使用 Visual Studio Automation 物件模型或整合物件模型中對應物件的功能,反之亦然。 在這些情況下,您可以使用 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 專案系統類型

Automation 和整合物件模型中對應的類型

ISharePointProject

EnvDTE.Project

專案的基礎 COM 物件所實作之 Visual Studio 整合物件模型中的任何介面。 這些類別和介面包括 Microsoft.VisualStudio.Shell.Interop.IVsHierarchyMicrosoft.VisualStudio.Shell.Interop.IVsProject (或衍生介面) 和 Microsoft.VisualStudio.Shell.Interop.IVsBuildPropertyStorage。 如需專案所實作之主要介面的清單,請參閱Project Model Core Components

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 工具擴充功能的程式撰寫模型概觀

其他資源

HOW TO:擷取 SharePoint 專案服務