在 SharePoint 專案系統類型與其他 Visual Studio 專案類型之間轉換
在某些情況下,您可能在 SharePoint 專案系統中擁有物件,但是想要使用 Visual Studio Automation 物件模型或整合物件模型中對應物件的功能,反之亦然。 在這些情況下,您可以使用 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 專案系統類型 |
Automation 和整合物件模型中對應的類型 |
---|---|
或 專案的基礎 COM 物件所實作之 Visual Studio 整合物件模型中的任何介面。 這些類別和介面包括 Microsoft.VisualStudio.Shell.Interop.IVsHierarchy、Microsoft.VisualStudio.Shell.Interop.IVsProject (或衍生介面) 和 Microsoft.VisualStudio.Shell.Interop.IVsBuildPropertyStorage。 如需專案所實作之主要介面的清單,請參閱Project Model Core Components。 |
|
或 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 專案系統的擴充功能,其具有 EnvDTE.dll 組件的參考。 如需詳細資訊,請參閱 擴充 SharePoint 專案系統。
程式碼,會註冊 projectService_ProjectAdded 方法以處理 ISharePointProjectService 物件的 ProjectAdded 事件。 如需範例,請參閱 HOW TO:建立 SharePoint 專案擴充功能。