<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/xiaoshatiantec" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/xiaoshatiantec" type="application/rss+xml"></fs:self_link><lastBuildDate>Wed, 01 Feb 2012 14:42:52 GMT</lastBuildDate><title>『 听 风 且 吟 』技术版</title><description>倚楼听风雨,淡看江湖路......</description><image><url>http://www.feedsky.com/feed/xiaoshatiantec/sc/gif</url><title>『 听 风 且 吟 』技术版</title><link>http://coding.windstyle.cn</link></image><link>http://coding.windstyle.cn</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Wed, 01 Feb 2012 14:52:19 GMT</pubDate><item><title>隐藏SharePoint User Profile页面中的提示文本</title><link>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/</link><content:encoded>&lt;p&gt;在SharePoint 2010的User Profile页面中存在一些提示，本文的内容就是如何去掉这些提示而又不影响其他功能，这是一件简单而又意义不大的事情，但我却不小心想复杂了，前后花了几个小时，用jQuery写了几行代码，中间还发现bug修改了一遍，终于发现走了弯路，用区区3行CSS搞定。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1126&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;首先是“标签和注释”页面（thoughts.aspx）中的提示文本，位于标签云的下方，如图所示：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb.png&quot; alt=&quot;image&quot; width=&quot;384&quot; height=&quot;365&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;最下面几行提示文本的标签既没有id也没有class，还好标签云是有class的，可以用它来定位到之后的元素，并将其隐藏，只需一句Style：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;.ms-TagCloud.ms-socialThoughtBoxTags ~ div {display:none;}&lt;/pre&gt;
&lt;p&gt;其中~表示“之后的所有元素”，IE6不支持这个选择器，不过没关系，SharePoint 2010 不支持IE6。&lt;/p&gt;
&lt;p&gt;接着是“概述”页面（person.aspx）的记事板提示文本，这段提示文本是通过AJAX技术动态填充的，仅在没有Notes的情况下显示（包括将Notes全部删除之后）。&lt;/p&gt;
&lt;p&gt;没有Notes时的样子：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image1.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb1.png&quot; alt=&quot;image&quot; width=&quot;553&quot; height=&quot;293&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有Notes时的样子：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2012/02/image2.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;image&quot; src=&quot;http://coding.windstyle.cn/files/2012/02/image_thumb2.png&quot; alt=&quot;image&quot; width=&quot;542&quot; height=&quot;230&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这段提示文本的标签也没有id和class，而且多层嵌套，可以依靠有class的分页元素（“上一步”和“下一步”的功能居然是为Notes翻页，我还以为是引导提示文本的向导按钮）来定位它。值得注意的是提示文本和Notes位于同一个div中，但结构却大相径庭，还好Notes的元素具有id，所以可以先将该层的所有div隐藏，然后再将具有id的div显示出来，籍此来隐藏提示文本，而又不影响Notes本身：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;.ms-socialCommentPaging + div &amp;gt; div {display:none}
.ms-socialCommentPaging + div &amp;gt; div[id] {display:block;}&lt;/pre&gt;
&lt;p&gt;其中+表示相邻的下一个元素，&amp;gt;表示第一级子元素，[id]表示包含id属性的元素。&lt;/p&gt;
&lt;p&gt;最终的CSS样式如下：&lt;/p&gt;
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;style&amp;gt;
.ms-socialCommentPaging + div &amp;gt; div {display:none}
.ms-socialCommentPaging + div &amp;gt; div[id] {display:block;}
.ms-TagCloud.ms-socialThoughtBoxTags ~ div {display:none;}
&amp;lt;/style&amp;gt;&lt;/pre&gt;
&lt;p&gt;将这段CSS添加到MySite Host的Custom Master Page中即可（默认为MySite.master）。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285934/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>在SharePoint 2010的User Profile页面中存在一些提示，本文的内容就是如何去掉这些提示而又不影响其他功能，这是一件简单而又意义不大的事情，但我却不小心想复杂了，前后花了几个小时，用jQuery写了几行代码，中间还发现bug修改了一遍，终于发现走了弯路，用区区3行CSS搞定。 首先是“标签和注释”页面（thoughts.aspx）中的提示文本，位于标签云的下方，如图所示： 最下面几行提示文本的标签既没有id也没有class，还好标签云是有class的，可以用它来定位到之后的元素，并将其隐藏，只需一句Style： 其中~表示“之后的所有元素”，IE6不支持这个选择器，不过没关系，SharePoint 2010 不支持IE6。 接着是“概述”页面（person.aspx）的记事板提示文本，这段提示文本是通过AJAX技术动态填充的，仅在没有Notes的情况下显示（包括将Notes全部删除之后）。 没有Notes时的样子： 有Notes时的样子： 这段提示文本的标签也没有id和class，而且多层嵌套，可以依靠有class的分页元素（“上一步”和“下一步”的功能居然是为Notes翻页，我还以为是引导提示文本的向导按钮）来定位它。值得注意的是提示文本和Notes位于同一个div中，但结构却大相径庭，还好Notes的元素具有id，所以可以先将该层的所有div隐藏，然后再将具有id的div显示出来，籍此来隐藏提示文本，而又不影响Notes本身： 其中+表示相邻的下一个元素，&amp;#62;表示第一级子元素，[id]表示包含id属性的元素。 最终的CSS样式如下： 将这段CSS添加到MySite Host的Custom Master Page中即可（默认为MySite.master）。&lt;img src=&quot;http://www1.feedsky.com/t1/601285934/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint</category><category>SharePoint 2010</category><category>提示</category><category>CSS</category><pubDate>Wed, 01 Feb 2012 22:42:52 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1126</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2012/02/01/hide-tip-text-in-sharepoint-user-profile-page/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285934/1488721</fs:itemid></item><item><title>SharePoint HttpModule和SharePoint Designer的冲突</title><link>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/</link><content:encoded>&lt;p&gt;前段时间为SharePoint写了一个HttpModule来将对重定向对某些页面的请求,结果发现有一个副作用,会和SharePoint Designer有冲突.&lt;/p&gt;
&lt;p&gt;具体表现为启用了这个HttpModule之后,SharePoint Designer在打开aspx页面时会报以下错误:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;服务器不能完成您的请求.&lt;/p&gt;
&lt;p&gt;soap:Server服务器无法处理请求。 &amp;#8212;&amp;gt; 无法完成此操作。 请重试。 &amp;#8212;&amp;gt; 无法完成此操作。 请重试。&amp;lt;nativehr&amp;gt;0&amp;#215;80004005&amp;lt;/nativehr&amp;gt;&amp;lt;nativestack&amp;gt;&amp;lt;/nativestack&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span id=&quot;more-1117&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;排除了HttpModule代码对该文件路径的影响之后,开始考虑是不是事件顺序的缘故.&lt;/p&gt;
&lt;p&gt;之前这个HttpModule是在PostAuthorizeRequest事件中处理重定向逻辑的,经过一番尝试,最后发现只要使用的事件早于PostRequestHandlerExecute,就会引发SharePoint Designer出错.&lt;/p&gt;
&lt;p&gt;具体原因未知.&lt;/p&gt;
&lt;p&gt;另附上HttpApplication中的事件触发顺序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;BeginRequest&lt;/li&gt;
&lt;li&gt;AuthenticateRequest&lt;/li&gt;
&lt;li&gt;PostAuthenticateRequest&lt;/li&gt;
&lt;li&gt;AuthorizeRequest&lt;/li&gt;
&lt;li&gt;PostAuthorizeRequest&lt;/li&gt;
&lt;li&gt;ResolveRequestCache&lt;/li&gt;
&lt;li&gt;PostResolveRequestCache&lt;/li&gt;
&lt;li&gt;PostMapRequestHandler&lt;/li&gt;
&lt;li&gt;AcquireRequestState&lt;/li&gt;
&lt;li&gt;PostAcquireRequestState&lt;/li&gt;
&lt;li&gt;PreRequestHandlerExecute&lt;/li&gt;
&lt;li&gt;PostRequestHandlerExecute&lt;/li&gt;
&lt;li&gt;ReleaseRequestState&lt;/li&gt;
&lt;li&gt;PostReleaseRequestState&lt;/li&gt;
&lt;li&gt;UpdateRequestCache&lt;/li&gt;
&lt;li&gt;PostUpdateRequestCache&lt;/li&gt;
&lt;li&gt;EndReques&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;另：据说事件过于靠前还会使SharePoint无法上传文件。&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285935/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>前段时间为SharePoint写了一个HttpModule来将对重定向对某些页面的请求,结果发现有一个副作用,会和SharePoint Designer有冲突. 具体表现为启用了这个HttpModule之后,SharePoint Designer在打开aspx页面时会报以下错误: 服务器不能完成您的请求. soap:Server服务器无法处理请求。 &amp;#8212;&amp;#62; 无法完成此操作。 请重试。 &amp;#8212;&amp;#62; 无法完成此操作。 请重试。&amp;#60;nativehr&amp;#62;0&amp;#215;80004005&amp;#60;/nativehr&amp;#62;&amp;#60;nativestack&amp;#62;&amp;#60;/nativestack&amp;#62; 排除了HttpModule代码对该文件路径的影响之后,开始考虑是不是事件顺序的缘故. 之前这个HttpModule是在PostAuthorizeRequest事件中处理重定向逻辑的,经过一番尝试,最后发现只要使用的事件早于PostRequestHandlerExecute,就会引发SharePoint Designer出错. 具体原因未知. 另附上HttpApplication中的事件触发顺序： BeginRequest AuthenticateRequest PostAuthenticateRequest AuthorizeRequest PostAuthorizeRequest ResolveRequestCache PostResolveRequestCache PostMapRequestHandler AcquireRequestState PostAcquireRequestState PreRequestHandlerExecute PostRequestHandlerExecute ReleaseRequestState PostReleaseRequestState UpdateRequestCache PostUpdateRequestCache EndReques 另：据说事件过于靠前还会使SharePoint无法上传文件。&lt;img src=&quot;http://www1.feedsky.com/t1/601285935/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint Designer</category><category>SharePoint</category><category>错误</category><category>HttpModule</category><pubDate>Fri, 23 Dec 2011 19:00:18 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1117</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/12/23/conflict-of-sharepoint-designer-and-sharepoint-httpmodule/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285935/1488721</fs:itemid></item><item><title>版本历史</title><link>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/</link><content:encoded>&lt;h3&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot;&gt;« Tagging Contacts 钛金联系人 for Windows Phone 7&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;v1.1.0.0 &lt;/strong&gt;2011-12-03 &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 支持查看拥有同一标签的所有联系人 &lt;/li&gt;
&lt;li&gt;+ 支持将联系人固定到“开始屏幕” &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;v1.0.0.0 &lt;/strong&gt;2011-11-24 &lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 自动显示“人脉”中的所有联系人 &lt;/li&gt;
&lt;li&gt;+ 查看联系人的详细信息 &lt;/li&gt;
&lt;li&gt;+ 管理联系人的标签&lt;/li&gt;
&lt;li&gt;+ 通过各种途径与联系人联络&lt;/li&gt;
&lt;li&gt;+ 可以向联系人的任何电话号码发送短信&lt;/li&gt;
&lt;li&gt;+ 查看所有标签&lt;/li&gt;
&lt;li&gt;+ 支持各种主题&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285936/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>« Tagging Contacts 钛金联系人 for Windows Phone 7 v1.1.0.0 2011-12-03 + 支持查看拥有同一标签的所有联系人 + 支持将联系人固定到“开始屏幕” v1.0.0.0 2011-11-24 + 自动显示“人脉”中的所有联系人 + 查看联系人的详细信息 + 管理联系人的标签 + 通过各种途径与联系人联络 + 可以向联系人的任何电话号码发送短信 + 查看所有标签 + 支持各种主题&lt;img src=&quot;http://www1.feedsky.com/t1/601285936/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 08 Dec 2011 10:34:24 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/changelog/</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285936/1488721</fs:itemid></item><item><title>Tagging Contacts 钛金联系人 for Windows Phone</title><link>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;&quot; alt=&quot;&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/banner.jpg&quot; width=&quot;560&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;钛金联系人是一个增强版的联系人应用。    &lt;br /&gt;您可以通过它来为您的联系人打标签，标签的内容没有任何限制，可以是他（她）最喜爱的食物、特长、昵称，也可以是你们认识的地方、你们的关系等等……     &lt;br /&gt;通过标签，您可以在瞬间回忆起他（她)的点点滴滴。     &lt;br /&gt;在未来的更新中，您还可以给拥有同一个标签的所有联系人群发短信和邮件，可以完全取代“人脉”的分组功能，而且没有联系人数量限制。&lt;/p&gt;
&lt;h3&gt;试用版功能&lt;/h3&gt;
&lt;p&gt;自动显示“人脉”中的所有联系人，并按照首字母分组。    &lt;br /&gt;查看联系人的详细信息。     &lt;br /&gt;为联系人添加和删除标签。     &lt;br /&gt;通过各种途径与联系人联络。     &lt;br /&gt;可以向联系人的任何电话号码发送短信。     &lt;br /&gt;查看所有标签。     &lt;br /&gt;浏览拥有同一个标签的所有联系人。     &lt;br /&gt;支持各种主题。&lt;/p&gt;
&lt;h3&gt;收费版功能&lt;/h3&gt;
&lt;p&gt;将联系人固定在开始屏幕&lt;/p&gt;
&lt;h3&gt;系统要求&lt;/h3&gt;
&lt;p&gt;Windows Phone 7.1（Mango）以及更新的系统&lt;/p&gt;
&lt;h3&gt;版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;当前版本：1.1.0.0 &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/changelog/&quot;&gt;版本历史»&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;截图&amp;amp;预览：&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_01.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;增强的联系人列表&quot; alt=&quot;增强的联系人列表&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_01_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_02.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;标签列表&quot; alt=&quot;标签列表&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_02_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_03.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;增强的联系人信息&quot; alt=&quot;增强的联系人信息&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_03_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_04.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;添加标签&quot; alt=&quot;添加标签&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_04_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_05.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;批量删除标签&quot; alt=&quot;批量删除标签&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_05_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_06.png&quot;&gt;&lt;img style=&quot;display: inline&quot; title=&quot;白色主题&quot; alt=&quot;白色主题&quot; src=&quot;http://coding.windstyle.cn/files/2011/12/snapshot_06_thumb.png&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;下载&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://windowsphone.com/s?appid=30df6cbe-c2e5-42e8-b678-e064b2746575&quot; target=&quot;_blank&quot;&gt;前往Windows Phone Marketplace下载安装&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285937/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>钛金联系人是一个增强版的联系人应用。 您可以通过它来为您的联系人打标签，标签的内容没有任何限制，可以是他（她）最喜爱的食物、特长、昵称，也可以是你们认识的地方、你们的关系等等…… 通过标签，您可以在瞬间回忆起他（她)的点点滴滴。 在未来的更新中，您还可以给拥有同一个标签的所有联系人群发短信和邮件，可以完全取代“人脉”的分组功能，而且没有联系人数量限制。 试用版功能 自动显示“人脉”中的所有联系人，并按照首字母分组。 查看联系人的详细信息。 为联系人添加和删除标签。 通过各种途径与联系人联络。 可以向联系人的任何电话号码发送短信。 查看所有标签。 浏览拥有同一个标签的所有联系人。 支持各种主题。 收费版功能 将联系人固定在开始屏幕 系统要求 Windows Phone 7.1（Mango）以及更新的系统 版本 当前版本：1.1.0.0 版本历史» 截图&amp;#38;预览： &amp;#160; &amp;#160; &amp;#160; 下载 前往Windows Phone Marketplace下载安装&lt;img src=&quot;http://www1.feedsky.com/t1/601285937/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Thu, 08 Dec 2011 10:28:30 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?page_id=1114</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/tagging-contacts-for-windows-phone/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285937/1488721</fs:itemid></item><item><title>使用SharePoint 2010内置的媒体播放器</title><link>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/</link><content:encoded>&lt;p&gt;SharePoint 2010 内置了一个基于Silverlight的媒体播放器，并且SharePoint 2010内置的一些WebPart会检测其输出内容中的链接，如果链接指向一个媒体文件，那么点击该链接之后就会在当前页面弹出这个播放器进行播放。那么如果我们自己开发了一些功能，要如何使用这个内置播放器呢？本文以一个同样基于Silverlight的幻灯片应用来举例说明，过程并不复杂，很容易应用到服务器端代码或JavaScript等其他开发方式中。&lt;span id=&quot;more-1100&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;首先我们需要在页面中引入mediaplayer.js，在Silverlight里可以这样写：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;if (!System.ComponentModel.DesignerProperties.IsInDesignTool &amp;amp;&amp;amp; HtmlPage.Document.GetElementById(&amp;quot;IDS_Script_MediaPlayer&amp;quot;) == null)
{
    HtmlElement script = HtmlPage.Document.CreateElement(&amp;quot;script&amp;quot;);
    script.SetAttribute(&amp;quot;id&amp;quot;, &amp;quot;IDS_Script_MediaPlayer&amp;quot;);
    script.SetAttribute(&amp;quot;type&amp;quot;, &amp;quot;text/javascript&amp;quot;);
    script.SetAttribute(&amp;quot;src&amp;quot;, &amp;quot;/_layouts/mediaplayer.js&amp;quot;);
    HtmlPage.Document.Body.AppendChild(script);
}&lt;/pre&gt;
&lt;p&gt;之后在适当的时候，提前创建一个播放器：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;ScriptObject mediaPlayer = HtmlPage.Window.Eval(&amp;quot;mediaPlayer&amp;quot;) as ScriptObject;
if (mediaPlayer != null)
{
    mediaPlayer.Invoke(&amp;quot;createOverlayPlayer&amp;quot;);
}&lt;/pre&gt;
&lt;p&gt;当用户点击了链接时，先判断链接的扩展名是不是被支持的媒体文件，然后根据情况决定弹出播放器或者直接打开链接：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;
Regex regex = new Regex(&amp;quot;\\.wmv|\\.wma|\\.mp3|\\.mp4&amp;quot;);
if (this.regex.IsMatch(url))
{
    ScriptObject mediaPlayer = HtmlPage.Window.Eval(&amp;quot;mediaPlayer&amp;quot;) as ScriptObject;
    if(mediaPlayer!=null)
    {
        ScriptObject overlayPlayer;
        try
        {
            overlayPlayer = mediaPlayer.Invoke(&amp;quot;getOverlayPlayer&amp;quot;) as ScriptObject;
            if(overlayPlayer==null)
                throw new Exception();
        }
        catch
        {
            mediaPlayer.Invoke(&amp;quot;createOverlayPlayer&amp;quot;);
            overlayPlayer = mediaPlayer.Invoke(&amp;quot;getOverlayPlayer&amp;quot;) as ScriptObject;
        }
        try
        {
            overlayPlayer.SetProperty(&amp;quot;MediaSource&amp;quot;, news.Url.ToString());
            overlayPlayer.SetProperty(&amp;quot;MediaTitle&amp;quot;, news.Title);
            overlayPlayer.SetProperty(&amp;quot;DisplayMode&amp;quot;, &amp;quot;Overlay&amp;quot;);
            overlayPlayer.Invoke(&amp;quot;Play&amp;quot;);
        }
        catch
        {
            HtmlPage.Window.Navigate(news.Url, &amp;quot;_blank&amp;quot;);
        }
    }
}
else
    HtmlPage.Window.Navigate(news.Url, &amp;quot;_blank&amp;quot;);
&lt;/pre&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285938/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>SharePoint 2010 内置了一个基于Silverlight的媒体播放器，并且SharePoint 2010内置的一些WebPart会检测其输出内容中的链接，如果链接指向一个媒体文件，那么点击该链接之后就会在当前页面弹出这个播放器进行播放。那么如果我们自己开发了一些功能，要如何使用这个内置播放器呢？本文以一个同样基于Silverlight的幻灯片应用来举例说明，过程并不复杂，很容易应用到服务器端代码或JavaScript等其他开发方式中。 首先我们需要在页面中引入mediaplayer.js，在Silverlight里可以这样写： 之后在适当的时候，提前创建一个播放器： 当用户点击了链接时，先判断链接的扩展名是不是被支持的媒体文件，然后根据情况决定弹出播放器或者直接打开链接：&lt;img src=&quot;http://www1.feedsky.com/t1/601285938/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>mediaplayer.js</category><category>SharePoint</category><category>Silverlight</category><category>SharePoint 2010</category><category>Silverlight/WPF</category><category>播放器</category><pubDate>Fri, 04 Nov 2011 18:38:17 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1100</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/11/04/using-the-media-player-built-in-sharepoint-2010/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285938/1488721</fs:itemid></item><item><title>用Silverlight调用SharePoint User Profile Web Service</title><link>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/</link><content:encoded>&lt;p&gt;调用SharePoint Web Service本来就不是一件令人愉悦的事情，如果期间在遇到一些诡异的问题的话……譬如我今天遇到的这件 ……&lt;/p&gt;
&lt;p&gt;按照惯例，添加好引用，编写代码调用GetUserProfileByNameAsync方法，稍等一下，一个异常抛出了（liao），大概反序列化某个属性时发生了错误。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1097&quot;&gt;&lt;/span&gt;而这个错误竟然是因为Visual Studio生成的Reference.cs文件和SharePoint提供的WSDL文件映射错误引起的，解决方法就是手工更改Reference.cs文件，该文件的路径是：项目文件夹\Service References\引用名称\Reference.cs。&lt;/p&gt;
&lt;p&gt;打开后定位到PropertyData类，我们需要给以下5个属性重新排序，顺序如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;IsPrivacyChanged&lt;/li&gt;
&lt;li&gt;IsValueChanged&lt;/li&gt;
&lt;li&gt;Values&lt;/li&gt;
&lt;li&gt;Name&lt;/li&gt;
&lt;li&gt;Privacy&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;重新排序的方法就是找到这几个属性，修改它们各自的System.Runtime.Serialization.DataMemberAttribute，修改或增加参数Order，如：&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;[System.Runtime.Serialization.DataMemberAttribute(IsRequired = true, Order = 1)]
 public bool IsPrivacyChanged { ... }&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;这一步完成之后，调用GetUserProfileByNameAsync方法不会再抛出异常了，但是拿到的结果中，所有的PropertyData.Values都为null，但其实SharePoint Server已经返回了结果，但这些结果并没有被正确的反序列化出来，好在我们还有办法直接去解析原始的XML结果。&lt;/div&gt;
&lt;div&gt;我们首先需要实现一个IEndpointBehavior和IClientMessageInspector：&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;public class UserProfilesBehavior : IEndpointBehavior
    {
        public UserProfilesInspector Inspector { get; private set; }

        public UserProfilesBehavior()
        {
            this.Inspector = new UserProfilesInspector();
        }

        public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
        { }

        public void ApplyClientBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.ClientRuntime clientRuntime)
        {
            clientRuntime.MessageInspectors.Add(Inspector);
        }

        public void ApplyDispatchBehavior(ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher)
        { }

        public void Validate(ServiceEndpoint endpoint)
        { }

    }
    public class UserProfilesInspector : IClientMessageInspector
    {
        public string Account { get; private set; }

        XNamespace xmlns = &amp;quot;http://microsoft.com/webservices/SharePointPortalServer/UserProfileService&amp;quot;;

        public void AfterReceiveReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
        {
//像这样取出需要的内容
XDocument document = XDocument.Load(new System.IO.StringReader(reply.ToString()));
            this.Account = this.GetValue(document, &amp;quot;AccountName&amp;quot;).ToString();
        }

        private object GetValue(XDocument document, string propertyName)
        {
            var node = document.Descendants().FirstOrDefault((element) =&amp;gt; { return element.Name == xmlns + &amp;quot;PropertyData&amp;quot; &amp;amp;&amp;amp; element.Element(xmlns + &amp;quot;Name&amp;quot;).Value == propertyName; });
            if (node != null)
            {
                var valueNode = node.Descendants(xmlns + &amp;quot;Value&amp;quot;).FirstOrDefault();
                if (valueNode != null)
                {
                    return valueNode.Value.Replace(&amp;quot;_MThumb&amp;quot;,&amp;quot;_LThumb&amp;quot;);
                }
            }
            return string.Empty;
        }

        public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
        {
            return null;
        }

    }&lt;/pre&gt;
&lt;p&gt;然后更改一下调用Web Service的代码，把刚才写的UserProfilesBehavior以Behavior和UserState的形式进去：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;UserProfilesBehavior behavior = new UserProfilesBehavior();
SPUserProfile.UserProfileServiceSoapClient userSoap = new SPUserProfile.UserProfileServiceSoapClient(binding, endpoint);
userSoap.Endpoint.Behaviors.Add(behavior);//添加为Behavior
userSoap.GetUserProfileByNameCompleted += new EventHandler&amp;lt;SPUserProfile.GetUserProfileByNameCompletedEventArgs&amp;gt;(userSoap_GetUserProfileByNameCompleted);
userSoap.GetUserProfileByNameAsync(people.Account, behavior);//添加为UserState&lt;/pre&gt;
&lt;p&gt;那么在GetUserProfileByNameAsync完成时的事件处理程序中，就可以通过UserState——也就是刚才编写的UserProfilesBehavior来拿到需要的数据了：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;void userSoap_GetUserProfileByNameCompleted(object sender, SPUserProfile.GetUserProfileByNameCompletedEventArgs e)
{
            if (e.Error == null)
            {
                UserProfilesBehavior behavior = (UserProfilesBehavior)e.UserState;
string account = behavior.Inspector.Account;
            }
}&lt;/pre&gt;
&lt;p&gt;参考资源：&lt;a href=&quot;http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/d1c6a143-dc1b-4788-8431-e16f0269f8b4/&quot;&gt;http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/d1c6a143-dc1b-4788-8431-e16f0269f8b4/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285939/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>调用SharePoint Web Service本来就不是一件令人愉悦的事情，如果期间在遇到一些诡异的问题的话……譬如我今天遇到的这件 …… 按照惯例，添加好引用，编写代码调用GetUserProfileByNameAsync方法，稍等一下，一个异常抛出了（liao），大概反序列化某个属性时发生了错误。 而这个错误竟然是因为Visual Studio生成的Reference.cs文件和SharePoint提供的WSDL文件映射错误引起的，解决方法就是手工更改Reference.cs文件，该文件的路径是：项目文件夹\Service References\引用名称\Reference.cs。 打开后定位到PropertyData类，我们需要给以下5个属性重新排序，顺序如下： IsPrivacyChanged IsValueChanged Values Name Privacy 重新排序的方法就是找到这几个属性，修改它们各自的System.Runtime.Serialization.DataMemberAttribute，修改或增加参数Order，如： 这一步完成之后，调用GetUserProfileByNameAsync方法不会再抛出异常了，但是拿到的结果中，所有的PropertyData.Values都为null，但其实SharePoint Server已经返回了结果，但这些结果并没有被正确的反序列化出来，好在我们还有办法直接去解析原始的XML结果。 我们首先需要实现一个IEndpointBehavior和IClientMessageInspector： 然后更改一下调用Web Service的代码，把刚才写的UserProfilesBehavior以Behavior和UserState的形式进去： 那么在GetUserProfileByNameAsync完成时的事件处理程序中，就可以通过UserState——也就是刚才编写的UserProfilesBehavior来拿到需要的数据了： 参考资源：http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/d1c6a143-dc1b-4788-8431-e16f0269f8b4/&lt;img src=&quot;http://www1.feedsky.com/t1/601285939/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint</category><category>Silverlight</category><category>异常</category><category>UserProfiles</category><category>Silverlight/WPF</category><pubDate>Mon, 17 Oct 2011 19:58:29 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1097</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/10/17/call-sharepoint-user-profile-webservice-in-silverlight/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285939/1488721</fs:itemid></item><item><title>版本历史</title><link>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/</link><content:encoded>&lt;h3&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/&quot;&gt;« Human Calendar for Windows Phone 7&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;v1.2.0.0 &lt;/strong&gt;2011-09-26&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 支持中文显示（仅指界面，非日历）&lt;/li&gt;
&lt;li&gt;+ 支持在后台只更新Tile图片，以节省流量&lt;/li&gt;
&lt;li&gt;+ 延长后台任务的默认过期时间（14天），请在每两周内打开一次应用来延长后台任务的过期时间。&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;v1.1.0.0 &lt;/strong&gt;2011-09-01&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 当www.humancalendar.com没有提供日历时，显示默认日历&lt;/li&gt;
&lt;li&gt;* 改善用户界面&lt;/li&gt;
&lt;li&gt;* 减小程序体积&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;strong&gt;v1.0.0.0 &lt;/strong&gt;2011-08-25&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;+ 支持显示当月日历&lt;/li&gt;
&lt;li&gt;+ 支持固定到开始屏幕并显示当天日历&lt;/li&gt;
&lt;li&gt;+ 支持后台更新&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285940/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>« Human Calendar for Windows Phone 7 v1.2.0.0 2011-09-26 + 支持中文显示（仅指界面，非日历） + 支持在后台只更新Tile图片，以节省流量 + 延长后台任务的默认过期时间（14天），请在每两周内打开一次应用来延长后台任务的过期时间。 v1.1.0.0 2011-09-01 + 当www.humancalendar.com没有提供日历时，显示默认日历 * 改善用户界面 * 减小程序体积 v1.0.0.0 2011-08-25 + 支持显示当月日历 + 支持固定到开始屏幕并显示当天日历 + 支持后台更新&lt;img src=&quot;http://www1.feedsky.com/t1/601285940/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 31 Aug 2011 15:58:30 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/apps/human-calendar-for-windows-phone-7/changelog/</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285940/1488721</fs:itemid></item><item><title>Human Calendar for Windows Phone</title><link>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/</link><content:encoded>&lt;p&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;HumanCalendar&quot; src=&quot;http://coding.windstyle.cn/files/2011/08/HumanCalendar.jpg&quot; alt=&quot;HumanCalendar&quot; width=&quot;560&quot; height=&quot;227&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Human Calendar是一款Windows Phone 7上的日历应用，和寻常的日历有所不同，Human Calendar中的日期都是一个个现实生活中的人物，表情丰富、俏皮可爱，在查看日期的同时也能给您带来一份好心情。&lt;/p&gt;
&lt;p&gt;感谢&lt;a href=&quot;http://www.humancalendar.com/&quot; target=&quot;_blank&quot;&gt;the human calendar ®&lt;/a&gt;提供API。&lt;/p&gt;
&lt;h3&gt;功能介绍&lt;/h3&gt;
&lt;p&gt;Human Calendar包含一个完整的当月日历和一个当天日历，当您把Human Calendar固定到开始屏幕后，您就可以看到当天日历了，当天日历是一个四格日历，提供年月日以及星期信息。&lt;/p&gt;
&lt;p&gt;Human Calendar支持后台每日自动更新日历以及启动应用时自动更新日历，您可以根据喜好来选择。&lt;/p&gt;
&lt;h3&gt;系统要求&lt;/h3&gt;
&lt;p&gt;Windows Phone 7.1（Mango）以及更新的系统&lt;/p&gt;
&lt;h3&gt;版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;当前版本：1.2.0.0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/changelog/&quot;&gt;版本历史»&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;截图&amp;amp;预览：&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_1.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;主界面&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_1_thumb.png&quot; alt=&quot;主界面&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_2.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;设置界面&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_2_thumb.png&quot; alt=&quot;设置界面&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_3.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;Live Tile 四格当天日历&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_3_thumb.png&quot; alt=&quot;Live Tile 四格当天日历&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_4.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; title=&quot;Live Tile 四格当天日历 反面&quot; src=&quot;http://coding.windstyle.cn/files/2011/09/snapshot_4_thumb.png&quot; alt=&quot;Live Tile 四格当天日历 反面&quot; width=&quot;240&quot; height=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;下载&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://windowsphone.com/s?appid=18e21357-5a16-4967-ac01-c0fa905c1cb9&quot;&gt;使用Zune客户端下载到手机&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285941/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>Human Calendar是一款Windows Phone 7上的日历应用，和寻常的日历有所不同，Human Calendar中的日期都是一个个现实生活中的人物，表情丰富、俏皮可爱，在查看日期的同时也能给您带来一份好心情。 感谢the human calendar ®提供API。 功能介绍 Human Calendar包含一个完整的当月日历和一个当天日历，当您把Human Calendar固定到开始屏幕后，您就可以看到当天日历了，当天日历是一个四格日历，提供年月日以及星期信息。 Human Calendar支持后台每日自动更新日历以及启动应用时自动更新日历，您可以根据喜好来选择。 系统要求 Windows Phone 7.1（Mango）以及更新的系统 版本 当前版本：1.2.0.0 版本历史» 截图&amp;#38;预览：     下载 使用Zune客户端下载到手机&lt;img src=&quot;http://www1.feedsky.com/t1/601285941/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 31 Aug 2011 15:52:06 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?page_id=1075</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/apps/human-calendar-for-windows-phone/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285941/1488721</fs:itemid></item><item><title>SharePoint 2010调试（2）：开发人员面板</title><link>http://coding.windstyle.cn/2011/07/20/sharepoint-2010-debugging-2-developer-dashboard/</link><content:encoded>&lt;p&gt;开发人员面板是SharePoint 2010新增的一个功能，它可以根据需要在页面下方显示当前页面从加载到呈现完毕所执行的各种步骤的耗时情况，以及Web服务器、声明和关键事件、数据库查询、服务调用、SPRequest、Web部件事件偏移等耗时情况。&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1057&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/07/image.png&quot;&gt;&lt;img style=&quot;display: inline;&quot; src=&quot;http://coding.windstyle.cn/files/2011/07/image_thumb.png&quot; alt=&quot;SharePoint 2010 开发人员面板&quot; width=&quot;560&quot; height=&quot;317&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;上图便是开发人员面板的一个样例，更多详细信息以及开关方式可以参考&lt;a href=&quot;http://blog.joycode.com/kaneboy&quot; target=&quot;_blank&quot;&gt;Kaneboy&lt;/a&gt;的日志&lt;a href=&quot;http://blog.joycode.com/kaneboy/archives/2009/12/08/115807.joy&quot; target=&quot;_blank&quot;&gt;《SharePoint 2010 新体验6 – 开发人员面板》&lt;/a&gt;，本文会介绍开发人员面板的另外一些细节。&lt;/p&gt;
&lt;h3&gt;定制开发人员面板&lt;/h3&gt;
&lt;p&gt;我们可以通过SPDeveloperDashboardSettings类来控制开发人员面板，该类的实例可以从SPWebService.ContentService.DeveloperDashboardSettings中得到，下面是一些我们可以进行定制的内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DisplayLevel：面板的显示方式，可以设置为Off、On和OnDemand，默认值为Off；&lt;/li&gt;
&lt;li&gt;MaximumCriticalEventsToTrack：单次请求中最多跟踪多少个事件；&lt;/li&gt;
&lt;li&gt;MaximumSQLQueriesToTrack：单次请求中最多跟踪多少个SQL查询；&lt;/li&gt;
&lt;li&gt;RequiredPermissions：查看面板所需要的权限，默认值为AddAndCustomizePages；&lt;/li&gt;
&lt;li&gt;TraceEnabled：是否启用详细的追踪信息，启用后会在开发人员面板下方额外显示更加详细的追踪信息，默认值为false；&lt;/li&gt;
&lt;li&gt;EnableDiagnosticMode()：启用诊断模式，调用此方法会将DisplayLevel设置为OnDemand、将RequiredPermissions设置为EmptyMask并将TraceEnabled设置为true；&lt;/li&gt;
&lt;li&gt;DisableDiagnosticMode()：禁用诊断模式，调用此方法会将DisplayLevel、RequiredPermissions和TraceEnabled的值恢复为默认值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;更改后，不要忘记调用Update方法来更新到SharePoint。&lt;/p&gt;
&lt;p&gt;下图是启用详细追踪信息之后的效果，信息非常之多，注意滚动条：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/07/image1.png&quot;&gt;&lt;img src=&quot;http://coding.windstyle.cn/files/2011/07/image_thumb1.png&quot; alt=&quot;开发人员面板的其他追踪信息&quot; width=&quot;560&quot; height=&quot;321&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;监视自己编写的代码&lt;/h3&gt;
&lt;p&gt;有时候我们需要在自己写的代码中揪出影响性能的罪魁祸首，我们就会希望开发人员面板能够跟踪并显示我们的某段代码的执行情况，SPMonitoredScope类（位于Microsoft.SharePoint.Utilities命名空间）可以帮助我们达到这个目的（但仅适用于完全信任的解决方案）。&lt;/p&gt;
&lt;p&gt;SPMonitoredScope的使用方法很简单：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;using (new SPMonitoredScope(&amp;quot;Display user name&amp;quot;))
{
control.Text = &amp;quot;Hello, &amp;quot; + SPContext.Current.Web.CurrentUser.Name;
}&lt;/pre&gt;
&lt;p&gt;上面这段代码中的SPMonitoredScope构造函数只接受一个字符串作为名称，SPMonitoredScope还有另外一个构造函数，除了字符串名称之外，还接受一个整型值来表示预估的最大执行时间（超出此时间后，开发人员面板会将其高亮标识起来）以及一个ISPScopedPerformanceMonitor对象数组。&lt;/p&gt;
&lt;p&gt;SharePoint已经提供了ISPScopedPerformanceMonitor的几个实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SPCriticalTraceCounter：跟踪关键事件，收集诸如事件文本、ID和调用堆栈等信息；&lt;/li&gt;
&lt;li&gt;SPExecutionTimeCounter：统计关于执行时间的详细信息；&lt;/li&gt;
&lt;li&gt;SPRequestUsageCounter：统计SPRequest对象的数量；&lt;/li&gt;
&lt;li&gt;SPSqlQueryCounter：跟踪SQL查询，收集SqlQueryData文本、调研堆栈以及执行时间等信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;pre class=&quot;brush: csharp; title: ; notranslate&quot;&gt;using (new SPMonitoredScope(&amp;quot;Sleep&amp;quot;, 1000, new SPSqlQueryCounter(5), new SPCriticalTraceCounter()))
{
Thread.Sleep(5000);
}&lt;/pre&gt;
&lt;p&gt;下图是上面两段代码执行之后的效果，注意Sleep因为超过了我们期望的耗时而被高亮显示：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://coding.windstyle.cn/files/2011/07/image2.png&quot;&gt;&lt;img src=&quot;http://coding.windstyle.cn/files/2011/07/image_thumb2.png&quot; alt=&quot;跟踪自定义代码&quot; width=&quot;420&quot; height=&quot;144&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Configuration Feature&lt;/h3&gt;
&lt;p&gt;最后介绍一个第三方Feature，它可以在SharePoint管理中心中添加一个开发人员面板的控制界面，我们可以通过它来控制开发人员面板的显示状态、最大跟踪数量、权限等等。具体信息请移步&lt;a href=&quot;http://www.wictorwilen.se/Post/SharePoint-2010-Developer-Dashboard-configuration-feature.aspx&quot; target=&quot;_blank&quot;&gt;这里&lt;/a&gt;。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285942/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/07/20/sharepoint-2010-debugging-2-developer-dashboard/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/07/20/sharepoint-2010-debugging-2-developer-dashboard/feed/</wfw:commentRss><slash:comments>2</slash:comments><description>开发人员面板是SharePoint 2010新增的一个功能，它可以根据需要在页面下方显示当前页面从加载到呈现完毕所执行的各种步骤的耗时情况，以及Web服务器、声明和关键事件、数据库查询、服务调用、SPRequest、Web部件事件偏移等耗时情况。 上图便是开发人员面板的一个样例，更多详细信息以及开关方式可以参考Kaneboy的日志《SharePoint 2010 新体验6 – 开发人员面板》，本文会介绍开发人员面板的另外一些细节。 定制开发人员面板 我们可以通过SPDeveloperDashboardSettings类来控制开发人员面板，该类的实例可以从SPWebService.ContentService.DeveloperDashboardSettings中得到，下面是一些我们可以进行定制的内容： DisplayLevel：面板的显示方式，可以设置为Off、On和OnDemand，默认值为Off； MaximumCriticalEventsToTrack：单次请求中最多跟踪多少个事件； MaximumSQLQueriesToTrack：单次请求中最多跟踪多少个SQL查询； RequiredPermissions：查看面板所需要的权限，默认值为AddAndCustomizePages； TraceEnabled：是否启用详细的追踪信息，启用后会在开发人员面板下方额外显示更加详细的追踪信息，默认值为false； EnableDiagnosticMode()：启用诊断模式，调用此方法会将DisplayLevel设置为OnDemand、将RequiredPermissions设置为EmptyMask并将TraceEnabled设置为true； DisableDiagnosticMode()：禁用诊断模式，调用此方法会将DisplayLevel、RequiredPermissions和TraceEnabled的值恢复为默认值。 更改后，不要忘记调用Update方法来更新到SharePoint。 下图是启用详细追踪信息之后的效果，信息非常之多，注意滚动条： 监视自己编写的代码 有时候我们需要在自己写的代码中揪出影响性能的罪魁祸首，我们就会希望开发人员面板能够跟踪并显示我们的某段代码的执行情况，SPMonitoredScope类（位于Microsoft.SharePoint.Utilities命名空间）可以帮助我们达到这个目的（但仅适用于完全信任的解决方案）。 SPMonitoredScope的使用方法很简单： 上面这段代码中的SPMonitoredScope构造函数只接受一个字符串作为名称，SPMonitoredScope还有另外一个构造函数，除了字符串名称之外，还接受一个整型值来表示预估的最大执行时间（超出此时间后，开发人员面板会将其高亮标识起来）以及一个ISPScopedPerformanceMonitor对象数组。 SharePoint已经提供了ISPScopedPerformanceMonitor的几个实现： SPCriticalTraceCounter：跟踪关键事件，收集诸如事件文本、ID和调用堆栈等信息； SPExecutionTimeCounter：统计关于执行时间的详细信息； SPRequestUsageCounter：统计SPRequest对象的数量； SPSqlQueryCounter：跟踪SQL查询，收集SqlQueryData文本、调研堆栈以及执行时间等信息。 例如： 下图是上面两段代码执行之后的效果，注意Sleep因为超过了我们期望的耗时而被高亮显示： Configuration Feature 最后介绍一个第三方Feature，它可以在SharePoint管理中心中添加一个开发人员面板的控制界面，我们可以通过它来控制开发人员面板的显示状态、最大跟踪数量、权限等等。具体信息请移步这里。&lt;img src=&quot;http://www1.feedsky.com/t1/601285942/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/07/20/sharepoint-2010-debugging-2-developer-dashboard/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>开发人员面板</category><category>SharePoint</category><category>跟踪</category><category>SharePoint 2010</category><category>调试</category><pubDate>Wed, 20 Jul 2011 10:00:54 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/07/20/sharepoint-2010-debugging-2-developer-dashboard/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1057</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/07/20/sharepoint-2010-debugging-2-developer-dashboard/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285942/1488721</fs:itemid></item><item><title>SharePoint 2010调试（1）：F5</title><link>http://coding.windstyle.cn/2011/07/19/sharepoint-2010-debugging-1-f5/</link><content:encoded>&lt;p&gt;在SharePoint 2007时代，我们在进行调试时，很多时候需要手工去附加w3wp.exe进程，SharePoint 2010改进了这一点，准确地说，是Visual Studio 2010 SharePoint开发工具改进了这一点，现在我们可以使用F5来调试了，就像调试桌面应用那样简单。那么Visual Studio究竟为我们做了什么呢？&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-1049&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;第一次使用F5调试时，Visual Studio会提示对SharePoint网站的Web.config进行配置，这里会进行三处修改：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;启用调用堆栈：
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;SafeMode CallStack=&amp;quot;true&amp;quot;/&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;禁用自定义错误以查看详细的错误信息：
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;customErrors mode=&amp;quot;Off&amp;quot;/&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;启用编译调试：
&lt;pre class=&quot;brush: xml; title: ; notranslate&quot;&gt;&amp;lt;compilatioin debug=&amp;quot;true&amp;quot;&amp;gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后Visual Studio会执行一系列地步骤来进行部署以及调试前的准备工作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;执行“预先部署命令行”，可以在项目属性的“SharePoint”选项卡中进行配置；&lt;/li&gt;
&lt;li&gt;使用MSBuild来创建WSP文件；&lt;/li&gt;
&lt;li&gt;如果部署在服务器场中，则回收IIS应用程序池；&lt;/li&gt;
&lt;li&gt;如果部署的是解决方案的新版本，则依序执行以下操作：
&lt;ol&gt;
&lt;li&gt;停用Feature&lt;/li&gt;
&lt;li&gt;卸载现有版本&lt;/li&gt;
&lt;li&gt;删除现有版本&lt;/li&gt;
&lt;li&gt;删除WSP文件&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此时会触发Feature Receiver；&lt;/li&gt;
&lt;li&gt;安装新的解决方案和Feature；&lt;/li&gt;
&lt;li&gt;如果部署的是工作流，则将工作流程序集安装到GAC；&lt;/li&gt;
&lt;li&gt;激活网站集或网站Feature，如果是Web Application或Farm Feature，则需要手工激活。此时会触发Feature Receiver；&lt;/li&gt;
&lt;li&gt;如果部署的是工作流，则将其关联到指定的列表；&lt;/li&gt;
&lt;li&gt;执行“后期部署命令行”，也是在项目属性的“SharePoint”选项卡中进行配置；&lt;/li&gt;
&lt;li&gt;将调试器附加到相应的进程：&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;针对Full Trust解决方案，附加到SharePoint进程（w3wp.exe）；&lt;/li&gt;
&lt;li&gt;针对沙盒解决方案，附加到（SPUCSPUWorkerProcess.exe）；&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;如果部署到服务器场，则启动JavaScript调试器；&lt;/li&gt;
&lt;li&gt;启动浏览器，显示相应的SharePoint网站。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此外，还可以通过修改注册表来在Visual Studio的“输出”面板中查看更加底层的Stack Trace信息。方法如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开注册表编辑器，找到HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SharePointTools&lt;/li&gt;
&lt;li&gt;修改或创建一个DWORD项，名为EnableDiagnostics，值为1。&lt;/li&gt;
&lt;/ol&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/601285943/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/07/19/sharepoint-2010-debugging-1-f5/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://coding.windstyle.cn/2011/07/19/sharepoint-2010-debugging-1-f5/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>在SharePoint 2007时代，我们在进行调试时，很多时候需要手工去附加w3wp.exe进程，SharePoint 2010改进了这一点，准确地说，是Visual Studio 2010 SharePoint开发工具改进了这一点，现在我们可以使用F5来调试了，就像调试桌面应用那样简单。那么Visual Studio究竟为我们做了什么呢？ 第一次使用F5调试时，Visual Studio会提示对SharePoint网站的Web.config进行配置，这里会进行三处修改： 启用调用堆栈： 禁用自定义错误以查看详细的错误信息： 启用编译调试： 然后Visual Studio会执行一系列地步骤来进行部署以及调试前的准备工作： 执行“预先部署命令行”，可以在项目属性的“SharePoint”选项卡中进行配置； 使用MSBuild来创建WSP文件； 如果部署在服务器场中，则回收IIS应用程序池； 如果部署的是解决方案的新版本，则依序执行以下操作： 停用Feature 卸载现有版本 删除现有版本 删除WSP文件 此时会触发Feature Receiver； 安装新的解决方案和Feature； 如果部署的是工作流，则将工作流程序集安装到GAC； 激活网站集或网站Feature，如果是Web Application或Farm Feature，则需要手工激活。此时会触发Feature Receiver； 如果部署的是工作流，则将其关联到指定的列表； 执行“后期部署命令行”，也是在项目属性的“SharePoint”选项卡中进行配置； 将调试器附加到相应的进程： 针对Full Trust解决方案，附加到SharePoint进程（w3wp.exe）； 针对沙盒解决方案，附加到（SPUCSPUWorkerProcess.exe）； 如果部署到服务器场，则启动JavaScript调试器； 启动浏览器，显示相应的SharePoint网站。 此外，还可以通过修改注册表来在Visual Studio的“输出”面板中查看更加底层的Stack Trace信息。方法如下： 打开注册表编辑器，找到HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SharePointTools 修改或创建一个DWORD项，名为EnableDiagnostics，值为1。&lt;img src=&quot;http://www1.feedsky.com/t1/601285943/xiaoshatiantec/feedsky/s.gif?r=http://coding.windstyle.cn/2011/07/19/sharepoint-2010-debugging-1-f5/&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>SharePoint</category><category>SharePoint 2010</category><category>Web.config</category><category>Visual Studio 2010</category><category>调试</category><category>注册表</category><pubDate>Tue, 19 Jul 2011 16:30:24 +0800</pubDate><author>Windie Chai</author><comments>http://coding.windstyle.cn/2011/07/19/sharepoint-2010-debugging-1-f5/#comments</comments><guid isPermaLink="false">http://coding.windstyle.cn/?p=1049</guid><dc:creator>Windie Chai</dc:creator><fs:srclink>http://coding.windstyle.cn/2011/07/19/sharepoint-2010-debugging-1-f5/</fs:srclink><fs:srcfeed>http://coding.windstyle.cn/feed/</fs:srcfeed><fs:itemid>feedsky/xiaoshatiantec/~7883976/601285943/1488721</fs:itemid></item></channel></rss>
