SharePoint 2013 本地创建解决方案
在之前的博客《SharePoint 2013本地开发解决方案以及远程调试》中,我们介绍了如何通过修改注册表,使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的声明代码;
[GeneratedCodeAttribute("Microsoft.VisualStudio.SharePoint.ProjectExtensions.CodeGenerators.SharePointWebP" +
"artCodeGenerator", "12.0.0.0")]
protected global::System.Web.UI.HtmlControls.HtmlGenericControl mydiv;
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
[GeneratedCodeAttribute("Microsoft.VisualStudio.SharePoint.ProjectExtensions.CodeGenerators.SharePointWebP" +
"artCodeGenerator", "12.0.0.0")]
private global::System.Web.UI.HtmlControls.HtmlGenericControl @__BuildControlmydiv()
{
global::System.Web.UI.HtmlControls.HtmlGenericControl @__ctrl;
@__ctrl = new global::System.Web.UI.HtmlControls.HtmlGenericControl("div");
this.mydiv = @__ctrl;
@__ctrl.ID = "mydiv";
return @__ctrl;
}
9、在private void @__BuildControlTree中添加创建控件代码:
global::System.Web.UI.HtmlControls.HtmlGenericControl @__ctrl1;
@__ctrl1 = this.@__BuildControlmydiv();
System.Web.UI.IParserAccessor @__parser = ((System.Web.UI.IParserAccessor)(@__ctrl));
@__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解决方案,而后服务器打包部署,远程调试,更加方便了SharePoint的开发和使用。最后,如有对SharePoint模板开发不熟悉的,可以参见我的图文入门开发系列博客,对远程调试不了解的,也可以参见我的上一篇博客。
再次,感谢您的阅读,希望我的博客可以为您带来帮助,欢迎热衷于SharePoint研究和开发的程序员,加入我的qq群一起讨论、探讨SharePoint开发。
附 录
SharePoint 2013 本地开发解决方案以及远程调试
SharePoint 2013 本地创建解决方案的更多相关文章
- SharePoint 2013 本地开发解决方案以及远程调试
转自:http://www.cnblogs.com/jianyus/p/3523387.html 在SharePoint开发中,我们需要在部署有SharePoint环境的服务器中开发,这是一件让人很苦 ...
- SharePoint 2013 代码创建应用程序目录(App Catalog)
众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地S ...
- SharePoint 2013怎样创建Wiki库
们使用Wiki页面来分享知识,增进团队合作.下面我将向大家展示SharePoint 2013 Wiki的使用方法.教程我都将以这张Wiki页面(即当前页)为示例. 编辑页面 如要编辑页面,单击顶部Ed ...
- SharePoint 2013 沙盒解决方案不能激活(激活按钮不可用)
把沙盒解决方案上传到目标站点的"解决方案"库中,发现"激活"按钮是灰掉的,不可用. 首先,我想到的是权限不足,所以 "以管理员身份"启动IE ...
- 基于SharePoint 2013的论坛解决方案[开源]
前言 这是自己在空闲时间里,为了提高对SharePoint的认识和熟悉技术,做的一个Demo.可能不尽完善,但是基本功能都已经有了,欢迎大家评论和提意见.自己也会在把源代码放到Github上进行开源, ...
- SharePoint 2013 强制安装解决方案
Add-SPSolution Install-SPSolution -Identity DemonstrationZone.wsp -GACDeployment -CompatibilityLevel ...
- SharePoint 2013 场解决方案包含第三方程序集
前言 当我们使用SharePoint 场解决方案的时候,经常会包含第三方的程序集,而第三方的程序集经常会有强签名的问题,如果有强签名可以部署到GAC,没有的话也可以部署到应用程序下. 那么,很多初学者 ...
- 跟我学SharePoint 2013视频培训课程——怎样创建文档库并上传文档(8)
课程简介 第8天,怎样在SharePoint 2013怎样创建文档库并上传文档. 视频 SharePoint 2013 交流群 41032413
- 跟我学SharePoint 2013视频培训课程——怎样创建列表和列表项(7)
课程简介 第7天,怎样在SharePoint 2013中创建列表和列表项 视频 SharePoint 2013 交流群 41032413
随机推荐
- Tomcat集群的session共享
配置Tomcat的session共享可以有三种解决方案: 第一种是以负载均衡服务器本身提供的session共享策略,每种服务器的配置是不一样的并且nginx本身是没有的. 第二种是利用web容器本身的 ...
- vue中methods、watch、computed之间的差别对比以及适用场景
首先要说,methods,watch和computed都是以函数为基础的,但各自却都不同: 一.computer 当页面中有某些数据依赖其他数据进行变动的时候,可以使用计算属性. <p id=& ...
- linux java环境变量设置
下载JRE或者JDK后解压,设置以下环境变量 JAVA_HOME=/home/zm/jdk1.8.0_181JRE_HOME=/home/zm/jdk1.8.0_181/jreCLASSPATH=.: ...
- 【Java】if判断boolean类型
public class Test { public static void main(String[] args) { boolean i=false; boolean j=true; if(i=j ...
- JavaScript中变量、作用域、内存问题
这几天,闲的没事看看JavaScript高级编程,感觉JavaScript真的很强大,尤其是采用面向对象的编程方式. 一. 基本类型和引用类型的值: ECMAScript变量可能包含两种不同数据类 ...
- 转:linux关闭防火墙iptables
ref:https://jingyan.baidu.com/article/066074d64f433ec3c21cb000.html Linux系统下面自带了防火墙iptables,iptables ...
- SCU 4441 Necklace
最长上升子序列,枚举. 因为$10000$最多只有$10$个,所以可以枚举采用哪一个$10000$,因为是一个环,所以每次枚举到一个$10000$,可以把这个移到最后,然后算从前往后的$LIS$和从后 ...
- Python 函数系列 - Str对path的处理
由此可见,“\”是转义字符,它能够将第2个“\”从转义字符转回普通字符,从而“\n”就不再起到换行符的作用. 这样操作虽然简单,但是遇到下方这个路径,看起来就会有些麻烦! path = 'D:\new ...
- python3 django 安装
参考https://www.cnblogs.com/yuyang26/p/7411269.html 前提条件:python3.x环境 windows 步骤1 pip install Django==2 ...
- MongoDB——环境搭建
项目中需要将一些读多改少的数据存入到 MongoDB 数据库中来提高效率,于是简单学习一些MongoDB数据库的知识,来进行应对,也是对自己知识盲区进行补充.本文主要学习介绍MongoDB数据库在Li ...