随笔分类 -  开发

使用Visual Studio进行SharePoint开发
摘要:这是这个系列的第一篇,介绍一个小工具,主要是用在Web Service测试的。因为为了用一点高级的东西,就免不了和web service打交道。你可以使用按照KB819267来修改web.config实现。这个默认的确实有点弱,而且还需要一个SharePoint Server。显然有个工具更加方便。微软的一个员工发布了一个小工具:WebServiceStudio,https://webservicestudio.codeplex.com/。名字很大气,却很小巧,很好用。上图是一个调用GetCurrentUserInfo的示例。下面一篇文章就会介绍这个Web Service方法。 Stay Tu 阅读全文
posted @ 2013-10-16 18:31 Lambert Qin 阅读(854) 评论(0) 推荐(0) 编辑
摘要:开发慢慢向着SharePoint 2013迁移,环境也开始慢慢准备起来了。由于FAST Search的集成,和缓存服务的加入,SharePoint 2013对开发机器要求的不是一般的高。这里介绍一下如何降低这个需求,分配4G内存给虚拟的情况下,基本可以完成正常开发。 尽量减少启动服务和应用程序池数量。 一般开发,并不需要所有SharePoint服务,尽量按需启用。 Plan service deployment in SharePoint 2013,这个文档清楚的说明了每个服务的作用。 例如下面将会介绍的,分布式缓存和搜索服务,如果你暂时用不到,就不要启用。 安装的时候,尽量合并所有的服务,使 阅读全文
posted @ 2013-09-03 16:42 Lambert Qin 阅读(3664) 评论(7) 推荐(0) 编辑
摘要:今天碰到一个有意思的问题,就顺便借用了这里的一段示例代码,稍作修改,导出个不同地区,文化下的时间格式。 class Program { static void Main(string[] args) { List<string> list = new List<string>(); foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.AllCultures)) { string spe... 阅读全文
posted @ 2013-05-27 11:59 Lambert Qin 阅读(1737) 评论(0) 推荐(0) 编辑
摘要:用户信息列表(User Information List),这个隐藏的SharePoint列表,主要用来储存一些用户Profile的基本数据。这个列表不能使用普通的方式去添加或者删除数据。首先,为什么要在这个列表中增加数据?这个列表是由SharePoint进行管理的,在使用PeoplePicker控件的时候,点时候就会自动把用户添加进用户信息列表。对于列表中的用户类型的字段来说,这个会利用ID关联到用户信息列表。我碰到过2个典型场景:实际用户操作中,对于批量数据导入的时候,一般使用的是Datasheet View,通过Excel导入。如果张三从来没有访问过网站,导入的时候有张三这个人,这个时候 阅读全文
posted @ 2013-03-28 22:28 Lambert Qin 阅读(1949) 评论(1) 推荐(2) 编辑
摘要:接着上一篇Query Options的一些用法(4):UTC时间处理,这一篇也是介绍一下日历中关于重复发生事件(Recurrence)的查询。首先,建立测试数据,一个每周重复发生的事件,一个普通的事件。这个测试中,增加了一个特殊的ViewField,fRecurrence,用来判断当前事件是否是重复发生的。static XmlNode ViewFields { get { XmlElement viewFields = _camlDoc.CreateElement("ViewFields"); System.Text.StringBuilder viewFieldsSB = 阅读全文
posted @ 2012-12-20 17:57 Lambert Qin 阅读(1497) 评论(1) 推荐(0) 编辑
摘要:接着上一篇Query Options的一些用法(3): 分页,这一篇也是介绍一下Lists.GetListItems方法文档上已经存在的一个:DateInUtc。DateInUtcTRUE to return dates in Coordinated Universal Time (UTC) format. FALSE to return dates in ISO format. This element is optional, and its default value is False.(注意,这里文档在SharePoint2010环境下错误了,默认值应该是FALSE。见下面示例。)首先 阅读全文
posted @ 2012-12-13 11:24 Lambert Qin 阅读(1540) 评论(1) 推荐(2) 编辑
摘要:使用Query Options分页在Lists.GetListItems方法的介绍已经包含了,不足的是没有给一个示例,所以我这里给一个使用示例来说明。PagingA string that contains data needed to support paging, including aListItemCollectionPositionNextattribute. If left empty, the list items returned start from the beginning of the list. Client applications should supply th 阅读全文
posted @ 2012-12-03 15:27 Lambert Qin 阅读(2661) 评论(2) 推荐(1) 编辑
摘要:接着上一篇:Query Options的一些用法(1): 展开用户列信息。这次增加了两条新的列表记录。第二条没有附件,第三条有2个附件,并且给第一条记录增加了一个附件。在View fields增加附件的引用。这样可以显示附件信息。 static XmlNode ViewFields { get { XmlElement viewFields = _camlDoc.CreateElement("ViewFields"); System.Text.StringBuilder viewFieldsSB = new System.Text.StringBuilder(); #reg 阅读全文
posted @ 2012-12-01 10:48 Lambert Qin 阅读(1385) 评论(0) 推荐(0) 编辑
摘要:每个SharePoint开发者打交道很多的一个肯定是使用CAML查询。针对一个非服务端开发,为了查询到想要的数据,不得不依赖CAML。 只要使用CAML查询,没有没有用过下面的方法的。从官方文档看,一个典型的查询包含了如下的参数。 public XmlNode GetListItems ( string listName, string viewName, XmlNode query, XmlNode viewFields, string rowLimit, XmlNode queryOptions, string webID ) 列表名,视图名,... 阅读全文
posted @ 2012-11-30 16:36 Lambert Qin 阅读(2398) 评论(1) 推荐(1) 编辑
摘要:如果你还在用Test01等等无意义的账号来进行测试,你可以看看这篇文章。 我利用微软的PeoplePackV4,修改的部分代码,用于批量生成测试账号。 一些注意事项: 1. 生成账号是本地账号,默认加入Users组 2. 运行前,确认当前账号是User Profile Application的管理员和Full Control。 下面是使用说明了。 下载PeoplePackV4_LAQI... 阅读全文
posted @ 2012-04-19 17:00 Lambert Qin 阅读(1154) 评论(6) 推荐(1) 编辑
摘要:最近在做一项目,发现的一个很奇怪的性能问题。自定义Master Page后,即使什么也不改,比SharePoint默认页面的性能相比,有极大的降低。 测试了一系列场景,诡异的事情就不一一赘述了。 一些典型表现为: 1. IIS Failed Request Log表现为很多大时间(>3s)的页面和页面资源文件,这些看起来都是随机的,无规律的。 其中Log显示以下错误, 404... 阅读全文
posted @ 2012-04-13 11:28 Lambert Qin 阅读(673) 评论(3) 推荐(0) 编辑
摘要:一段很小的代码,注册当前目录下所有的DLL到GAC,请先把gacutil.exe复制到同一个目录。 $Path = Get-Location$Dir = Get-ChildItem "$Path" -Recurse$Dlls = $Dir | Where { $_.extension -eq ".dll" }$Dlls | ForEach-Object { .\gacutil.exe -i $_.... 阅读全文
posted @ 2012-03-13 15:26 Lambert Qin 阅读(928) 评论(2) 推荐(1) 编辑
摘要:这个blog转载多余原创,越来越忙,代码写的越来越多,眼睛也越来越不舒服,看到了Windie Chai的VS的样式,强烈要求他分享,于是得到了下面两个blog, 让代码看起来更舒服 http://coding.windstyle.cn/2009/11/19/make-your-code-more-comfortable-1-choose-the-right-color-scheme/ http:/... 阅读全文
posted @ 2012-01-09 23:01 Lambert Qin 阅读(10934) 评论(1) 推荐(0) 编辑
摘要:作为一个开发人员,你应该很多次遇到这样一种情况,打开SharePoint,Attach到w3wp进程,一步步的单步,然后思考,然后超过90秒,然后就看到下面的错误了。 然后你自由重新刷新页面,重新Attach到w3wp进程,重新一步步的单步,然后思考,然后超过90秒,然后又看到上面的错误了。 实际上,只要简单的修改IIS的一个设置,就可以避免这个问题。 打开IIS Manager, 找到你需要... 阅读全文
posted @ 2011-08-30 21:24 Lambert Qin 阅读(2119) 评论(5) 推荐(1) 编辑
摘要:在Visual Studio 2010中,对于SharePoint开发增加了Replaceable Parameters,可以在设计的时候帮助我们替换到那些解决方案的输出,不过今天既然偶然看到了一个这个查看Public Key Token的简单方法,就放在这里备忘吧。 1. 打开External Tools 2. 设置 如上图所示: Title: Get &PublicKeyToken Co... 阅读全文
posted @ 2011-08-29 13:23 Lambert Qin 阅读(757) 评论(0) 推荐(0) 编辑
摘要:SPSiteDataQuery可以进行在同一个网站集(Site Collection)中跨站点和跨列表的查询,使用这个类,可以比较方便的进行某一类文档的统计。特别是在使用Content Query Web Part无法做到的情况。 我在使用的过程中,也出现了一些有意思的问题,这里做一个记录,总结。 1. 利用内容类型(Content Type)查询的时候,如何包含这个内容类型(Content Ty... 阅读全文
posted @ 2011-06-23 10:51 Lambert Qin 阅读(623) 评论(1) 推荐(0) 编辑
摘要:最近做了一个项目,里面有一个根据用户AD属性进行页面跳转的需求,通常的实现方法是在首页增加一个Web Part,在里面去做一些逻辑处理,不过我认为这样效率不高,因为: 1. 首先有个跳转页面,每次访问,都会对这个跳转页面进行解析,然后跳转到目的页面,这样为了访问一个页面,就需要等待2个页面加载。 2. 不利于扩展。如果用户需求变更,针对访问其他页面的时候也要做额外的身份验证,那把这样一个web part放到所有页面就显得不现实了。 所以我选择使用Http Module,针对HttpRequest,在页面加载前进行处理。对于Http Module,注册需要写到对应的web.config文件中。 阅读全文
posted @ 2011-02-10 22:22 Lambert Qin 阅读(417) 评论(3) 推荐(0) 编辑
摘要:Rating是SharePoint Server 2010新加入的一个功能,可以在List Settings的General Settings分类中找到。 如果你没有看到这个设置,请先创建一个User Profile Service Application,并且确认Social Features是启用的。如下图所示: 对于管理员来说,只需要轻松的进入List设置页面,点击启用Rating就好了。... 阅读全文
posted @ 2011-02-10 21:55 Lambert Qin 阅读(1617) 评论(0) 推荐(1) 编辑
摘要:工作需要,有时候会测试各种情况下Event Handler,包括测试哪种事件是最合适的,但是每次写Event Handler的Feature的确是重复性麻烦的事情。所以就写了个代码生成的小程序生成了下面的37个工程,对应37个不同的List模板。ListTemplateId来自于http://msdn.microsoft.com/en-us/library/ms431081.aspx。 工程注册... 阅读全文
posted @ 2010-01-06 22:40 Lambert Qin 阅读(455) 评论(0) 推荐(0) 编辑
摘要:SharePoint在部署WSP的时候,会停止掉所有相关的Application Pool,部署完毕会自动启动他们。 所以你看到的暂时的503错误是正常的,有时候Application Pool会长眠不醒了,就需要你自己去IIS Manager中把它们叫醒了 :) 阅读全文
posted @ 2009-12-29 18:47 Lambert Qin 阅读(294) 评论(0) 推荐(0) 编辑