共用方式為


從現有的 SharePoint 網站匯入項目

[匯入 SharePoint 解決方案套件專案] 範本可讓您在新的 Visual Studio SharePoint 解決方案中,重複使用來自現有 SharePoint 網站的元素,例如內容類型和欄位。 雖然您可以執行大部分匯入的方案而不需修改,仍有特定限制和問題需要考量,特別是您在匯入後修改任何項目的話。

注意

若要匯入可重複使用的工作流程,請使用「匯入可重複使用的工作流程」專案範本。 如需詳細資訊,請參閱匯入可重複使用工作流程的指導方針

支援的 SharePoint 解決方案

Visual Studio 2012 完全支援匯入 SharePoint Foundation 和 SharePoint Server 中建立的解決方案。

Visual Studio 2012 不支援匯入下列應用程式中建立的解決方案:

  • Windows SharePoint Services 3.0

  • Microsoft Office SharePoint Server 2007

  • Visual Studio 2008

  • Microsoft SharePoint Designer 2007

  • Visual Studio 2010

    雖然您經常可以成功匯入這些應用程式所建立的解決方案,但這項功能並未經過測試且不受支援。

項目匯入限制

雖然大部分的 SharePoint 項目可以從現有的 .wsp 檔案匯入,但不支援下列項目,而且可能需要進行修改才能正常運作:

  • BDC 實體

  • 程式碼工作流程關聯項目

  • 程式碼工作流程

  • 視覺 Web 組件 (.ascx)

  • Web 服務 (.asmx)

  • 內容類型繫結

  • 事件接收器

  • 清單定義 (範本)

  • 網站定義

    當您從 SharePoint Foundation 或 SharePoint Server 匯出解決方案時,這些項目會自動從 .wsp 檔案中排除。 不過,從不受支援工具產生的其他 .wsp 檔案可能會包含這些項目。 (請參閱本主題中稍早的<支援的 SharePoint 方案>。)

匯入解決方案時發生什麼情況

當您使用 [匯入 SharePoint 解決方案套件] 範本匯入解決方案時,Visual Studio 會複製 .wsp 檔案的所有內容,並嘗試協調並盡可能保留所匯入項目與其檔案之間最多的關聯和參考。

所有匯入的項目會複製到 方案總管中的對應資料夾。 例如,內容類型會出現在 [內容類型] 資料夾下,而清單執行個體會出現在 [清單執行個體] 下。 與匯入項目相關的檔案也會複製到項目的資料夾。 例如,匯入的清單執行個體會包含其模組、表單和 ASPX 頁面。

相依項目

如果您在 [匯入 SharePoint 方案套件精靈] 中選取項目,但未選取其相依項目,會有訊息方塊通知您必須同時選取相依項目才能匯入。

何謂功能?

SharePoint Designer 使用者可能會看到非預期的檔案,稱為 功能,出現在 方案總管的匯入方案中。雖然功能存在於 SharePoint Designer 方案中,它們在檢視中是隱藏的。 現在可在 Visual Studio 中看到這些功能。

功能是 SharePoint 項目的容器。 每一個功能會保留其所包含之每個項目的參考,例如內容類型和清單定義。 當您匯入解決方案時,Visual Studio 會為所有匯入的項目設定功能,並嘗試維護檔案的功能與元素關聯。 無法解析其參考的任何檔案會放在 winshare3 [其他匯入檔案] 資料夾中。

如需功能的詳細資訊,請參閱開發 SharePoint 解決方案使用功能.

處理特殊案例

在某些情況下,Visual Studio 無法調解項目與其相依的檔案。 Visual Studio 無法解析的任何檔案都會出現在 [其他匯入的檔案] 資料夾底下。 此外,它們的 DeploymentType 屬性會設為 NoDeployment ,使它們不會隨著方案部署。

例如,如果您匯入清單定義 ExpenseForms,則具有該名稱的清單定義會出現在 [方案總管] 的 [清單定義] 資料夾底下,同時還有其 Elements.xmlSchema.xml 檔案。 不過,其相關聯的 ASPX 和 HTML 表單,可能會放置於 [其他匯入檔案] 資料夾下,稱為 ExpenseForms 的資料夾。 若要完成匯入,請在 方案總管 中,移動 ExpenseForms 清單定義底下的這些檔案,並將每個檔案的 DeploymentType 屬性從 NoDeployment 變更為 ElementFile

匯入事件接收器時,Elements.xml 檔案會複製到正確的位置,但您必須手動將組件包含在解決方案套件中,讓其與解決方案一起部署。 如需如何這樣做的詳細資訊,請參閱作法:新增和移除其他組件

匯入工作流程時,InfoPath 表單會複製到 [其他匯入檔案] 資料夾。 如果 .wsp 檔案包含 Web 範本,其會設定為 [方案總管] 中的啟動頁面。

匯入欄位和屬性包

當您匯入的解決方案具有多個欄位時,所有個別欄位定義會合併成單一的 Elements.xml 檔案,位於 [方案總管] 中稱為 Fields 的節點下。 同樣地,所有的屬性包項目會合併成 Elements.xml 檔案,位於稱為 PropertyBags 的節點下。

在 SharePoint 中的欄位是指定資料類型例如文字、布林或查閱的資料行。 如需詳細資訊,請參閱 建置組塊:資料行和欄位類型。 屬性包可讓您將屬性加入至 SharePoint 中的物件,從伺服器陣列到 SharePoint 網站上清單的所有項目。 屬性包會實作為屬性名稱和值的雜湊資料表。 如需詳細資訊,請參閱 管理 SharePoint 組態SharePoint 屬性包設定

刪除專案中的項目

SharePoint 方案中的大部分項目有一個或多個相依項目。 例如,清單執行個體取決於內容類型,而內容類型相依於欄位。 在匯入 SharePoint 解決方案之後,如果您刪除解決方案中的項目,但未刪除其相依項目,Visual Studio 不會通知您任何參考問題,直到您嘗試部署解決方案。 例如,如果匯入的方案中有取決於內容類型的清單執行個體,而您刪除了該內容類型,部署時可能會發生錯誤。 如果相依項目不存在於 SharePoint 伺服器上,即會發生錯誤。 同樣地,如果刪除的項目也有相關的屬性包,請從 PropertyBagsElements.xml 檔案中刪除這些屬性包項目。 因此,如果您從匯入的方案中刪除任何項目,但發生部署錯誤,請檢查是否有任何相依項目也需要刪除。

還原遺漏的功能屬性

匯入方案時,匯入的功能資訊清單中會省略一些選用功能的屬性。 如果您想要在新的功能檔案中還原這些屬性,請藉由比較原始功能檔案與新的功能資訊清單,識別遺漏的屬性,然後遵循作法:自訂 SharePoint 功能主題中的指示。

內建清單執行個體上不會執行部署衝突偵測

Visual Studio 不會在內建清單執行個體 (也就是 SharePoint 隨附的預設清單執行個體) 上執行部署衝突偵測。 不會執行衝突偵測,以避免覆寫 SharePoint 上的內建清單執行個體。 內建清單執行個體仍會部署或更新,但絕不會被刪除或覆寫。 如需詳細資訊,請參閱針對 SharePoint 封裝和部署進行疑難排解

匯入 SharePoint Server 2010 工作流程

如果您匯入 SharePoint Server 中建立的工作流程,該工作流程將無法在您對其進行部署之後正確執行。 工作流程無法正確執行的原因,是因為遺漏特定組件,而且 SharePoint Server 工作流程包含了 Visual Studio 工作流程解決方案中目前不支援的 InfoPath 表單。 不過,匯入的 SharePoint Server 工作流程,可以在您修正某些項目之後正常運作,例如將參考新增至 SharePoint Server 組件並重新連線 InfoPath 表單。 如需詳細資訊,請參閱匯入 SharePoint Server 2010 工作流程

項目名稱字元限制

Visual Studio 限制專案和專案項目名稱 (包括路徑) 的總字元數最多可有 260 個字元。 在匯入方案時,如果項目名稱超出此限制,您會收到錯誤:

指定的路徑、檔案名稱或兩者都太長。 完整的檔名必須少於 260 個字元,並且目錄名稱必須少於 248 個字元。」

當您收到這個錯誤時,不會建立項目。 匯入的模組最常發生此問題。 若要避免這個問題,請執行下列作業:

  • 當您在 [加入新的專案] 對話方塊輸入時,請使用專案的簡短名稱。

  • 建立專案時,位置盡可能接近根資料夾,以縮短路徑。

SharePointProductVersion 屬性

如果您匯入在舊版 SharePoint (例如 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007) 中建立的解決方案,請將套件資訊清單中的 SharePointProductVersion 屬性值變更為 12.0,或是將指令碼管理員控制項插入所有匯入的網頁中,並保留 SharePointProductVersion 設為 14.0。 否則,匯入的 Web 表單不會顯示在 SharePoint 中。

背景

SharePoint Foundation 和 SharePoint Server 中的解決方案包含稱為 SharePointProductVersion 的屬性。 SharePoint 在其封裝資訊清單中使用這個屬性來判斷方案設計針對的 SharePoint 版本。 兩個有效值為 12.0 和 14.0。 值若為 12.0 表示項目是針對 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 所設計;值若為 14.0 表示項目是針對 SharePoint Foundation 或 SharePoint Server 所設計。

為了加強轉譯 ASPX 頁面時的安全性,SharePoint Foundation 和 SharePoint Server 要求所有的 ASPX 或主版頁面都要包含指令碼管理員控制項。 如需指令碼管理員的詳細資訊,請參閱 ScriptManager 控制項概觀。 由於指令碼管理員控制項無法在 Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 中使用,因此必須將指令碼管理員控制項新增至任何升級至 SharePoint Foundation 或 SharePoint Server 的 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 頁面。 使用標準主版頁面的 ASPX 頁面不需要指令碼管理員控制項,因為已經將一個指令碼管理員控制項加入標準主版頁面。 不過,未使用主版頁面或使用自訂主版頁面的 ASPX 頁面,必須新增指令碼控制項,才能在 SharePoint Foundation 或 SharePoint Server 中運作。

當您將 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 專案匯入至 Visual Studio 2010 時,缺少指令碼管理員控制項可能是一個問題,因為所有新專案的 SharePointProductVersion 屬性都會設定為 14.0。 如果您部署的已升級專案中,具有沒有指令碼管理員的 Web 表單,表單將不會顯示在 SharePoint 中。

另請參閱