SharePoint 2013 本地創建解決方案


  在之前的博客《SharePoint 2013本地開發解決方案以及遠程調試》中,我們介紹了如何通過修改注冊表,使SharePoint 2013 解決方案可以本地編輯,也提及了即使修改注冊表,還不能做到本地創建。

  后來,仔細看了一下注冊表的結構,思考了一下可能造成這樣問題的原因,經過幾次嘗試,發現在本地創建SharePoint解決方案,也是可行的。但是,並不是所有開發模板,都可以本地創建,例如事件觸發器、列表、工作流等,創建過程必須和SharePoint進行交互的模板,我們無法在本地創建。

  經過測試,發現有如下模板是可以本地創建的:

Ø  WebPart的開發

Ø  可視化WebPart的開發

Ø  模塊部署母版頁

Ø  應用程序頁開發

Ø  網站欄的開發

Ø  Feature的創建

  本結論為個人測試結果,僅供開發參考,如有問題還需要細細排查。以上都是自己測試通過,除了以上開發模板,我在測試中發現,都必須和SharePoint交互才能創建,我們對於本地創建無能為力。

  1、若希望本地使用VS2013創建SharePoint解決方案及項目,需要刪除以下注冊表節點,即SharePointTools,刪除前記得導出備份,方便以后需要時再次導入,經過一段時間的使用,還未曾發現VS使用有問題。

clip_image001

  2、如果不修改注冊表,創建SharePoint解決方案,會提示如下錯誤:

clip_image002

  3、刪除注冊表以后,重啟VS,創建SharePoint空項目成功,如下圖:

clip_image003

  4、創建可視化WebPart,在項目上右鍵,添加新項,選擇可視化WebPart,然后發現生成報錯;

clip_image004

  5、找到錯誤代碼,發現是這個初始化函數報錯,然后看黃色的警告,發現是有些本來自動生成的文件,沒有生成成功(因為必須和SharePoint交互,才能自動生成);

clip_image005

  6、對比正確的可視化WebPart,發現VisualWebPart1.ascx.g.cs這個文件,沒有生成成功,手動添加進來,如下圖;

clip_image006

  7、這個文件,不僅僅是手動添加進來就好使的,在使用過程中,還發現及時手動添加進來,自動生成的代碼,也不會生成,這就為我們開發帶來了不遍。但是,我通過手動添加需要生成的代碼,也成功完成了可視化WebPart的Demo。我在部件上添加了一個Div,ID為“mydiv”,runat=server,

clip_image007

  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,並顯示出來:

clip_image008

  11、創建完可視化WebPart以后,創建WebPart,在項目上右鍵,新建項,選擇WebPart;WebPart比較簡單,只是添加后台代碼就可以了,代碼依然是讀取站點Title然后Render出來;

clip_image009

  12、添加完畢WebPart,我們添加網站欄,新建一個網站欄,然后,編輯網站欄的Xml即可:

clip_image010

  13、然后,再添加應用程序頁,如下圖:

  因為測試,功能比較簡單,只是改了上面的文字,就是測試應用程序頁是否可以使用;

clip_image011

  14、創建模塊,添加母版頁,如下圖:

  這是模塊的目錄結構:

clip_image012

  模塊的Xml描述文件,如下圖:

clip_image013

  15、到這里,能創建的項目,都已經創建完畢,並添加了簡單的功能代碼,那些不能創建的,會報如下錯誤,看了看應該是調用程序集與SharePoint交互,而本地並沒有SharePoint造成的;

clip_image014

  16、下面是我的本地解決方案的完整結構,包括兩個Feature(一個web,一個Site范圍),還包括應用程序頁、模塊、網站欄、可視化WebPart、WebPart;

clip_image015

  17、將代碼拷貝到服務器,在項目上右鍵,按功能鍵F4調出屬性菜單,修改站點Url,在服務器上打包部署;

clip_image016

  18、部署解決方案完畢,頁面上添加WebPart,正常顯示:

clip_image017

  19、頁面上添加可視化WebPart,顯示正常:

clip_image018

  20、打開網站欄,我們創建的網站欄已經部署成功,如下圖:

clip_image019

  編輯網站欄,如下圖,可以編輯網站欄的欄名,並選擇網站欄所屬的分組,這里的分組是網站欄xml中描述的分組:

clip_image020

  21、打開應用程序頁面,如下圖,顯示正常:

clip_image021

  22、使用SPD打開網站,找到母版頁文件夾,發現母版頁也已經部署成功,就此,所有測試的模板,均證實本地創建、開發,服務器部署是可行的;

clip_image022

  美中不足,因為本地沒有SharePoint環境,所以我們打包解決方案依然要去有環境並裝有VS的地方打包,然后部署,但是本地開發,也已經算是很大的進步了,我們不用在糾結於沒有服務器了。

  本地創建SharePoint解決方案,而后服務器打包部署,遠程調試,更加方便了SharePoint的開發和使用。最后,如有對SharePoint模板開發不熟悉的,可以參見我的圖文入門開發系列博客,對遠程調試不了解的,也可以參見我的上一篇博客。

  再次,感謝您的閱讀,希望我的博客可以為您帶來幫助,歡迎熱衷於SharePoint研究和開發的程序員,加入我的qq群一起討論、探討SharePoint開發。

  SharePoint 2013 圖文開發系列之入門教程

  SharePoint 2013 本地開發解決方案以及遠程調試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM