SharePoint發行版本有SharePoint2003、SharePoint2007、Sharepoint 2010、SharePoint2013和SharePoint2016。SharePoint提供了功能強大的團隊協作環境,使得組織能夠在整個組織內部實現整合、組織、查找和提供 SharePoint站點。 我們介紹了如何通過修改注冊表,使SharePoint 2013 解決方案可以本地編輯,也提及了即使修改注冊表,還不能做到本地創建。 后來,仔細看了一下注冊表的結構,思考了一下可能造成這樣問題的原因,經過幾次嘗試,發現在本地創建SharePoint解決方案,也是可行的。但是,并不是所有開發模板,都可以本地創建,例如事件觸發器、列表、工作流等,創建過程必須和SharePoint進行交互的模板,我們無法在本地創建。 經過測試,發現有如下模板是可以本地創建的: ?? WebPart的開發 ?? 可視化WebPart的開發 ?? 模塊部署母版頁 ?? 應用程序頁開發 ?? 網站欄的開發 ?? Feature的創建 本結論為個人測試結果,僅供開發參考,如有問題還需要細細排查。以上都是自己測試通過,除了以上開發模板,我在測試中發現,都必須和SharePoint交互才能創建,我們對于本地創建無能為力。 1、若希望本地使用VS2013創建SharePoint解決方案及項目,需要刪除以下注冊表節點,即SharePointTools,刪除前記得導出備份,方便以后需要時再次導入,經過一段時間的使用,還未曾發現VS使用有問題。 2、如果不修改注冊表,創建SharePoint解決方案,會提示如下錯誤: 3、刪除注冊表以后,重啟VS,創建SharePoint空項目成功,如下圖: 4、創建可視化WebPart,在項目上右鍵,添加新項,選擇可視化WebPart,然后發現生成報錯; 5、找到錯誤代碼,發現是這個初始化函數報錯,然后看黃色的警告,發現是有些本來自動生成的文件,沒有生成成功(因為必須和SharePoint交互,才能自動生成); 6、對比正確的可視化WebPart,發現VisualWebPart1.ascx.g.cs這個文件,沒有生成成功,手動添加進來,如下圖; 7、這個文件,不僅僅是手動添加進來就好使的,在使用過程中,還發現及時手動添加進來,自動生成的代碼,也不會生成,這就為我們開發帶來了不遍。但是,我通過手動添加需要生成的代碼,也成功完成了可視化WebPart的Demo。我在部件上添加了一個Div,ID為“mydiv”,runat=server, 8、手動添加該div的聲明代碼; ![]() ![]() 1 [GeneratedCodeAttribute("Microsoft.VisualStudio.SharePoint.ProjectExtensions.CodeGenerators.SharePointWebP" + 2 "artCodeGenerator", "12.0.0.0")] 3 protected global::System.Web.UI.HtmlControls.HtmlGenericControl mydiv; 4 5 [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)] 6 [GeneratedCodeAttribute("Microsoft.VisualStudio.SharePoint.ProjectExtensions.CodeGenerators.SharePointWebP" + 7 "artCodeGenerator", "12.0.0.0")] 8 private global::System.Web.UI.HtmlControls.HtmlGenericControl @__BuildControlmydiv() 9 {10 global::System.Web.UI.HtmlControls.HtmlGenericControl @__ctrl;11 @__ctrl = new global::System.Web.UI.HtmlControls.HtmlGenericControl("div");12 this.mydiv = @__ctrl;13 @__ctrl.ID = "mydiv";14 return @__ctrl;15 }View Code 9、在private void @__BuildControlTree中添加創建控件代碼: 1 global::System.Web.UI.HtmlControls.HtmlGenericControl @__ctrl1;2 @__ctrl1 = this.@__BuildControlmydiv();3 System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));4 @__parser.AddParsedSubObject(@__ctrl1); 10、為可視化WebPart添加后臺代碼,如下圖: 代碼非常簡單,只是讀取站點的Title,并顯示出來: 11、創建完可視化WebPart以后,創建WebPart,在項目上右鍵,新建項,選擇WebPart;WebPart比較簡單,只是添加后臺代碼就可以了,代碼依然是讀取站點Title然后Render出來; 12、添加完畢WebPart,我們添加網站欄,新建一個網站欄,然后,編輯網站欄的Xml即可: 13、然后,再添加應用程序頁,如下圖: 因為測試,功能比較簡單,只是改了上面的文字,就是測試應用程序頁是否可以使用; 14、創建模塊,添加母版頁,如下圖: 這是模塊的目錄結構: 模塊的Xml描述文件,如下圖: 15、到這里,能創建的項目,都已經創建完畢,并添加了簡單的功能代碼,那些不能創建的,會報如下錯誤,看了看應該是調用程序集與SharePoint交互,而本地并沒有SharePoint造成的; 16、下面是我的本地解決方案的完整結構,包括兩個Feature(一個web,一個Site范圍),還包括應用程序頁、模塊、網站欄、可視化WebPart、WebPart; 17、將代碼拷貝到服務器,在項目上右鍵,按功能鍵F4調出屬性菜單,修改站點Url,在服務器上打包部署; 18、部署解決方案完畢,頁面上添加WebPart,正常顯示: 19、頁面上添加可視化WebPart,顯示正常: 20、打開網站欄,我們創建的網站欄已經部署成功,如下圖: 編輯網站欄,如下圖,可以編輯網站欄的欄名,并選擇網站欄所屬的分組,這里的分組是網站欄xml中描述的分組: 21、打開應用程序頁面,如下圖,顯示正常: 22、使用SPD打開網站,找到母版頁文件夾,發現母版頁也已經部署成功,就此,所有測試的模板,均證實本地創建、開發,服務器部署是可行的; 總 結 美中不足,因為本地沒有SharePoint環境,所以我們打包解決方案依然要去有環境并裝有VS的地方打包,然后部署,但是本地開發,也已經算是很大的進步了,我們不用在糾結于沒有服務器了。 Sharepoint 可以幫助企業用戶輕松完成日常工作。 |
溫馨提示:喜歡本站的話,請收藏一下本站!