共用方式為


從現有的 SharePoint 網站匯入項目

[匯入 SharePoint 方案套件] 專案範本可讓您在新的 Visual Studio SharePoint 方案中重複使用現有 SharePoint 網站中的項目,例如內容類型和欄位。 雖然大多數匯入的方案不需修改即可執行,但仍有某些限制與問題必須考量,尤其是您要在匯入方案後修改任何項目時。

注意事項注意事項

若要匯入可重複使用的工作流程,請使用 [匯入可重複使用的工作流程] 專案範本。 如需詳細資訊,請參閱 匯入可重複使用之工作流程的方針.

支援的 SharePoint 方案

Visual Studio 2010 完全支援匯入以 SharePoint Foundation 2010 和 SharePoint Server 2010 建立的方案。

Visual Studio 2010 不支援匯入以下列應用程式建立的方案:

  • Windows SharePoint Services 3.0

  • Microsoft Office SharePoint Server 2007

  • Visual Studio 2008

  • Microsoft SharePoint Designer 2007

  • Visual Studio 2010

    注意事項注意事項

    換句話說,Visual Studio 2010 不支援匯入以 Visual Studio 2010 建立的 SharePoint 方案。

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

項目匯入限制

雖然您可以從現有 .wsp 檔案匯入大多數 SharePoint 項目,但下列項目並不受支援,可能須經過修改才能正常使用:

  • BDC 實體

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

  • 程式碼工作流程

  • 視覺 Web 組件 (.ascx)

  • Web 服務 (.asmx)

  • 內容類型繫結

  • 事件接收器

  • 清單定義 (範本)

  • 網站定義

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

匯入方案時會發生什麼事

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

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

相依項目

如果您在匯入 SharePoint 方案套件精靈中選取項目,但未選取其相依項目,則將會出現訊息方塊提示您在匯入前也必須選取相依項目。

什麼是功能?

SharePoint Designer 使用者可能會在 [方案總管] 中,發現其匯入的方案中出現名為「功能」(Feature) 的未預期檔案。在過去,功能雖然存在於 SharePoint Designer 方案中,卻會隱藏而不顯示。 現在功能會顯示於 Visual Studio 中。

功能是 SharePoint 項目的容器。 每項功能都會為它所包含的每個項目 (例如內容類型和清單定義) 保存一個參考。 當您匯入方案時,Visual Studio 會為所有匯入的項目設定功能,並嘗試為檔案維護功能-項目關聯性。 如有任何檔案的參考無法受到解析,該檔案就會放置在 [其他匯入的檔案] 資料夾中。

如需功能的詳細資訊,請參閱開發 SharePoint 方案使用功能 (英文)。

處理特殊案例

在某些情況下,Visual Studio 無法協調項目和其相依檔案。 Visual Studio 所無法解析的檔案,都會出現在 [其他匯入的檔案] 資料夾下。 此外,這些檔案的 [DeploymentType] 屬性會設定為 [NoDeployment],而不會隨方案部署。

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

在匯入事件接收器時,Elements.xml 檔案會複製到正確的位置,但您必須手動在方案套件中納入組件,這個檔案才會隨方案進行部署。 如需詳細資訊以深入了解如何執行這項工作,請參閱 HOW TO:新增與移除其他組件

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

匯入欄位和屬性包

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

SharePoint 中的欄位都是指定之資料類型 (例如文字、布林值或查閱) 的資料行。 如需詳細資訊,請參閱建置組塊:資料行和欄位類型 (英文)。 屬性包可讓您將屬性加入至 SharePoint 中的物件 (不論是陣列到 SharePoint 網站上的清單,皆包括在內)。 屬性包會以屬性名稱和值之雜湊資料表的形式實作。 如需詳細資訊,請參閱管理 SharePoint 組態 (英文) 或 SharePoint 屬性包設定 (英文)。

刪除專案中的項目

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

還原遺漏的功能屬性

在匯入方案時,匯入的功能資訊清單中會省略某些選擇性功能屬性。 如果您要在新的功能檔案中還原這些屬性,請比較原始功能檔案與新的功能資訊清單以找出遺漏的屬性,然後遵循 HOW TO:自訂 SharePoint 功能主題中的指示。

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

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

匯入 SharePoint Server 2010 工作流程

如果您匯入以 SharePoint Server 2010 建立的工作流程,則此工作流程在部署後將無法正常執行。 工作流程之所以無法正常執行,是因為遺漏特定組件,而且 SharePoint Server 2010 工作流程包含 Visual Studio 工作流程方案目前不支援的 InfoPath 表單。 但在修正某些項目後,匯入的 SharePoint Server 2010 工作流程即可正常運作,例如加入 SharePoint Server 2010 組件的參考,並且重新連接 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 Form 將不會顯示在 SharePoint 中。

背景

SharePoint Foundation 2010 和 SharePoint Server 2010 中的方案包含稱為 SharePointProductVersion 的屬性。 SharePoint 會在其套件資訊清單中使用此屬性,判斷方案的 SharePoint 設計版本。 兩個有效值為 12.0 和 14.0。 12.0 值代表專為 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 設計的項目,14.0 值則代表專為 SharePoint Foundation 2010 或 SharePoint Server 2010 設計的項目。

為了增強呈現 ASPX 網頁時的安全性,SharePoint Foundation 2010 和 SharePoint Server 2010 要求所有 ASPX 或主版頁面都要包含指令碼管理員控制項。 如需指令碼管理員的詳細資訊,請參閱 ScriptManager 控制項概觀。 由於 Windows SharePoint Services 3.0 和 Microsoft Office SharePoint Server 2007 中未提供指令碼管理員控制項,因此從 Windows SharePoint Services 3.0 或 Microsoft Office SharePoint Server 2007 網頁升級至 SharePoint Foundation 2010 或 SharePoint Server 2010 時,必須加入指令碼管理員控制項。 使用標準主版頁面的 ASPX 網頁不需要指令碼管理員控制項,因為標準主版頁面中已加入指令碼管理員控制項。 但是未使用主版頁面或使用自訂主版頁面的 ASPX 網頁必須加入指令碼管理員控制項,才能在 SharePoint Foundation 2010 或 SharePoint Server 2010 中使用。

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

請參閱

工作

逐步解說:從現有的 SharePoint 網站匯入項目

逐步解說:將 SharePoint Designer 可重複使用的工作流程匯入 Visual Studio

HOW TO:將現有的 BDC 模型檔案加入至 SharePoint 專案

其他資源

匯入可重複使用之工作流程的方針