设为首页 收藏本站
查看: 1568|回复: 0

[经验分享] SharePoint 2013 本地创建解决方案

[复制链接]

尚未签到

发表于 2015-9-29 12:03:38 | 显示全部楼层 |阅读模式
  在之前的博客《SharePoint 2013本地开发解决方案以及远程调试》中,我们介绍了如何通过修改注册表,使SharePoint 2013 解决方案可以本地编辑,也提及了即使修改注册表,还不能做到本地创建。
  后来,仔细看了一下注册表的结构,思考了一下可能造成这样问题的原因,经过几次尝试,发现在本地创建SharePoint解决方案,也是可行的。但是,并不是所有开发模板,都可以本地创建,例如事件触发器、列表、工作流等,创建过程必须和SharePoint进行交互的模板,我们无法在本地创建。
  经过测试,发现有如下模板是可以本地创建的:
Ø  WebPart的开发
Ø  可视化WebPart的开发
Ø  模块部署母版页
Ø  应用程序页开发
Ø  网站栏的开发
Ø  Feature的创建
  本结论为个人测试结果,仅供开发参考,如有问题还需要细细排查。以上都是自己测试通过,除了以上开发模板,我在测试中发现,都必须和SharePoint交互才能创建,我们对于本地创建无能为力。
  1、若希望本地使用VS2013创建SharePoint解决方案及项目,需要删除以下注册表节点,即SharePointTools,删除前记得导出备份,方便以后需要时再次导入,经过一段时间的使用,还未曾发现VS使用有问题。
DSC0000.png
  2、如果不修改注册表,创建SharePoint解决方案,会提示如下错误:
DSC0001.jpg
  3、删除注册表以后,重启VS,创建SharePoint空项目成功,如下图:
DSC0002.png
  4、创建可视化WebPart,在项目上右键,添加新项,选择可视化WebPart,然后发现生成报错;
DSC0003.png
  5、找到错误代码,发现是这个初始化函数报错,然后看黄色的警告,发现是有些本来自动生成的文件,没有生成成功(因为必须和SharePoint交互,才能自动生成);
DSC0004.png
  6、对比正确的可视化WebPart,发现VisualWebPart1.ascx.g.cs这个文件,没有生成成功,手动添加进来,如下图;
DSC0005.png
  7、这个文件,不仅仅是手动添加进来就好使的,在使用过程中,还发现及时手动添加进来,自动生成的代码,也不会生成,这就为我们开发带来了不遍。但是,我通过手动添加需要生成的代码,也成功完成了可视化WebPart的Demo。我在部件上添加了一个Div,ID为“mydiv”,runat=server,
DSC0006.png
  8、手动添加该div的声明代码;


DSC0007.gif DSC0008.gif


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,并显示出来:
DSC0009.png
  11、创建完可视化WebPart以后,创建WebPart,在项目上右键,新建项,选择WebPart;WebPart比较简单,只是添加后台代码就可以了,代码依然是读取站点Title然后Render出来;
DSC00010.png
  12、添加完毕WebPart,我们添加网站栏,新建一个网站栏,然后,编辑网站栏的Xml即可:
DSC00011.png
  13、然后,再添加应用程序页,如下图:
  因为测试,功能比较简单,只是改了上面的文字,就是测试应用程序页是否可以使用;
DSC00012.png
  14、创建模块,添加母版页,如下图:
  这是模块的目录结构:
DSC00013.png
  模块的Xml描述文件,如下图:
DSC00014.png
  15、到这里,能创建的项目,都已经创建完毕,并添加了简单的功能代码,那些不能创建的,会报如下错误,看了看应该是调用程序集与SharePoint交互,而本地并没有SharePoint造成的;
DSC00015.png
  16、下面是我的本地解决方案的完整结构,包括两个Feature(一个web,一个Site范围),还包括应用程序页、模块、网站栏、可视化WebPart、WebPart;
DSC00016.png
  17、将代码拷贝到服务器,在项目上右键,按功能键F4调出属性菜单,修改站点Url,在服务器上打包部署;
DSC00017.png
  18、部署解决方案完毕,页面上添加WebPart,正常显示:
DSC00018.png
  19、页面上添加可视化WebPart,显示正常:
DSC00019.png
  20、打开网站栏,我们创建的网站栏已经部署成功,如下图:
DSC00020.png
  编辑网站栏,如下图,可以编辑网站栏的栏名,并选择网站栏所属的分组,这里的分组是网站栏xml中描述的分组:
DSC00021.png
  21、打开应用程序页面,如下图,显示正常:
DSC00022.png
  22、使用SPD打开网站,找到母版页文件夹,发现母版页也已经部署成功,就此,所有测试的模板,均证实本地创建、开发,服务器部署是可行的;
DSC00023.png
  
  美中不足,因为本地没有SharePoint环境,所以我们打包解决方案依然要去有环境并装有VS的地方打包,然后部署,但是本地开发,也已经算是很大的进步了,我们不用在纠结于没有服务器了。
  本地创建SharePoint解决方案,而后服务器打包部署,远程调试,更加方便了SharePoint的开发和使用。最后,如有对SharePoint模板开发不熟悉的,可以参见我的图文入门开发系列博客,对远程调试不了解的,也可以参见我的上一篇博客。
  再次,感谢您的阅读,希望我的博客可以为您带来帮助,欢迎热衷于SharePoint研究和开发的程序员,加入我的qq群一起讨论、探讨SharePoint开发。
  
  SharePoint 2013 图文开发系列之入门教程
  SharePoint 2013 本地开发解决方案以及远程调试

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-120433-1-1.html 上篇帖子: SharePoint 开发TimerJob 介绍 下篇帖子: SharePoint下利用DocX组件导出Word
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表