SharePoint 2013 本地开发解决方案以及远程调试
转自:http://www.cnblogs.com/jianyus/p/3523387.html
在SharePoint开发中,我们需要在部署有SharePoint环境的服务器中开发,这是一件让人很苦恼的事情,毕竟不能一个项目多人开发配备多台服务器,这就需要本地开发。
本来自己以为SharePoint 2013在不再支持客户端系统的条件下,只能服务器上开发,QQ群里的朋友提醒说也可以本地开发,远程调试,以为自己是知道SharePoint 2010可以通过注册表修改,本地安装SharePoint的,顺着这个思路,经过一番谷歌/bing,然后实现了,在此总结一下,分享给大家。
思 路
本地安装Visual Studio 2013,导入SharePoint注册表,复制必须的dll,使用远程调试;
缺 陷
不能本地创建SharePoint解决方案,只能编辑;
场 景
可以使用源代码管理,将文件下载到本地进行开发,然后在服务器上获取,打包/部署,然后本地调试。
1、在本地尝试使用VS开发SharePoint的朋友,都知道新建/打开SharePoint解决方案,会报如下错误:

2、在SharePoint 服务器中,打开注册表,找到如下位置:
我查资料没有查到2013版本的,但是2010版本说要把服务器上Web Server Extensions下面,14这个节点导出,然后导入到本地即可;
由于2013版本,Web Server Extensions下面,有14和15两个文件夹,自己不知道导入哪个,索性就把Shared Tools整个节点导出,然后导入到本机(Win8);

3、导入注册表,新建SharePoint解决方案依然报错,因为默认需要连接调试的站点,而本地没有,必然报错(或许修改不让默认连接,也能解决,待解决);
但是,在服务器上创建一个解决方案,本地编辑已经可以了,但是会报如下错误,很正常,因为本地没有环境必然没有这两个引用,去服务器拷过来,放到bin/debug下:

4、这两个文件所在位置,服务器物理路径15\ISAPI下,如下图:

5、本地重新生成,VS显示全部重新生成已成功,如下图:
这样,我们本地编写SharePoint 2013的解决方案,已经可以了,下面我们进行远程调试的配置:

6、使用远程调试,有几个步骤需要配置:
a.本地/服务器必须有相同的管理员帐号;
b.将本地VS中的Remote Debugger拷贝到服务器,并执行msvsmon.exe;
c.设置msvsmon.exe为windows认证,将调试使用账号授权允许调试;
d.暂时关闭两台机器防火墙,或者允许调试通过;
7、服务器和本地,共同创建一个账号mydebug(用户名/密码相同);
我在完成这步以后,测试了可以不必使用这个账号调试,但是这个账号两边必须有,而且必须授权管理员;

8、找到本地的Remote Debugger,拷贝到服务器,路径如下:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Remote Debugger,调试的时候,注意使用里面64位进行调试;

9、在拷贝到服务器的Remote Debugger中,右键msvsmon.exe,以管理员运行,然后会看到Visual Studio远程调试监视器打开;

10、如下图,可以看到在等待新的连接:

11、端口号随意设置,要使用Windows身份认证,权限要勾上调试账号;

12、在本地VS中,附加进程,如下图:
可以看到,我们附加的已经是远程服务器的进程了,选择w3wp.exe

13、可以看到Visual Studio远程调试监视器,已经接到我们的连接了;

14、远程调试注意要部署最新的程序,否则断点不会命中;

15、部署以后,还要单独部署pdb文件,使用命令行的方式;
Copy SharePointProject.pdb C:\Windows\Microsoft.NET\assembly\GAC_MSIL\ SharePointProject\v4.0_1.0.0.0__3475aec342981a3a
在SharePoint 2013中,由于.Net 4.0和Windows系统兼容问题,4.0以上版本的dll,都不熟到C:\Windows\Microsoft.NET\assembly下了,不再是我们熟悉的GAC,这一点要特别注意;
pdb文件部署路径C:\Windows\Microsoft.NET\assembly\GAC_MSIL\SharePointProject\ v4.0_1.0.0.0__3475aec342981a3a,“3475aec342981a3a”是这个程序集的强名称;

16、所有工作完成,看看远程调试的效果吧,还是不错的。

总 结
SharePoint 2013本地开发,就是把SharePoint注册表从服务起导出然后从本地导入;远程调试有几个要注意的地方,本地/远程Remote Debugger版本要一致,本地/远程要有相同的管理员账号,远程运行Remote Debugger本地连接,Remote Debugger配置Windows认证并授权调试账号,代码要是最新pdb文件要部署到GAC下,GAC已经不再原来的位置。
以上就是SharePoint2013本地开发解决方案以及配置远程调试的全部内容,在此,谢谢大家的阅读并欢迎点赞,希望霖雨的博客能够为大家带来帮助。
SharePoint 2013 本地开发解决方案以及远程调试的更多相关文章
- SharePoint 2013 本地创建解决方案
在之前的博客<SharePoint 2013本地开发解决方案以及远程调试>中,我们介绍了如何通过修改注册表,使SharePoint 2013 解决方案可以本地编辑,也提及了即使修改注册表, ...
- SharePoint 2013 APP 开发示例 (三)使用远程的web资源
在这个示例里我们将详细介绍 TokenHelper 类, 我们将看到它是怎么简单地从远程web站点访问SharePoint的.我们还将取到它的一些值.这将帮助我们理解连接是怎么被构造的,同时也方便我们 ...
- VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)
------------VS 2013驱动开发 + Windbg + VM双机调试(亲测+详解)------------- WIN10已上线,随之而来的是VS2015:微软在 "WDK760 ...
- SharePoint 2013 图文开发系列之计时器任务
SharePoint的计时器任务,又称TimerJob,由服务里的Timer服务执行,在管理中心管理,是一个类似于Windows任务计划的功能,方便定时执行一些需要的功能,以免影响服务器性能. 在Sh ...
- SharePoint 2013常用开发工具
SharePoint 2013常用开发工具分享 2014-04-01 00:59 by jv9, 589 阅读, 1 评论, 收藏, 编辑 众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协 ...
- SharePoint 2013 图文开发系列之列表定义高级篇
转载自 http://www.cnblogs.com/jianyus/p/3484714.html SharePoint列表库,是我们使用过程中最常用的库,下面,我们简单介绍下代码定义自定义列表,主 ...
- SharePoint 2013 图文开发系列之入门教程
做了SharePoint有三年了,大家经常会问到,你的SharePoint是怎么学的,想想自己的水平,也不过是初级开发罢了.因为,SharePoint开发需要接触的东西太多了,Windows操作系统. ...
- SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API)
虽然 JQuery 也能通过授权header实现跨域, 但SharePoint 提供了更简单的方法,它被实现在SP.RequestExecutor里 .它能访问跨域的服务包括REST AP ...
- SharePoint 2013 APP 开发示例 系列
SharePoint 2013 APP 安全: SharePoint 2013 APP 开发示例 (一)List 读写 SharePoint 2013 APP 开发示例 (二)获取用户信息 Share ...
随机推荐
- ITer的七夕节,你的情人在哪里(2015-08-19)
自写<一个程序猿的生命周期>连载以来,迎来第一个七夕节,打算写篇文章纪念一下.我主张过中国自己的节日的,也不反对过其他国家的节日,但是要搞清楚其他国家节日的由来,不要把别人的鬼节当成我们的 ...
- Java内存模型与垃圾回收
1.Java内存模型 Java虚拟机在执行程序时把它管理的内存分为若干数据区域,这些数据区域分布情况如下图所示: 程序计数器:一块较小内存区域,指向当前所执行的字节码.如果线程正在执行一个Java方法 ...
- ComboBox的联动
窗体搭建: 实现功能: 加载年级下拉框 选中年级时加载出科目下拉框 加载年级下拉框: 第一步,在DAL层中写一个方法,检索所有的年级名称集合,返回的是泛型集合List<> public L ...
- [No000058]一口气读完一本英语书
个人:"如何学好英语?"99个人会回答:"去,读英文原著." 然而这事儿吧,恐怕比坚持背单词还难.无论少侠们背过多少单词,最后都会败在生词太多.句子太难的坎儿上 ...
- wk_02
Python 序列 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推.序列都可以进行的操作包括索引,切片,加,乘,检 ...
- 树莓派B+安装archlinux arm版
按Archlinux官网操作而来,如有疑问参照官网:http://archlinuxarm.org/platforms/armv6/raspberry-pi 以我自己安装过程举例,我的SD卡挂载在ub ...
- C# 发送邮件,QQ企业邮箱测试成功
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- (原创)在Exchange 2007 server中使用实时黑名单服务(RBL)过滤垃圾邮件
近一段有同事抱怨公司的邮件系统垃圾邮件非常多,早上上班打开邮箱垃圾邮件竟然有几十封.然后赶紧打开Exchange工具“邮件跟踪”,发现有每隔1到2分钟,邮件系统便会收到来自不同IP的垃圾邮件,由于源I ...
- [xen]XenServer6.2增加第二块盘&vm开启自动启动&图形化安装centos
很多服务器都会多块盘或者做了Raid的多个虚拟磁盘,而安装xenserver后,他只会默认挂载第一快盘,也就是安装xenServer系统的那块. 为XenServer6.2挂载/增加第二块硬盘的方法 ...
- sobel算子
#1,个人理解 网上查了很多资料,都说sobel算子是用来检测边缘的,分别给了两个方向上的卷积核,然后说明做法,就说这就是sobel算子.对于我个人来说,还有很多不明白的地方,所以理清下思路. #2, ...