<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
   <channel>
      <title>Office System Israeli Bloggers</title>
      <description>Pipes Output</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=ZJxcjW7I3BG_KqDxl7okhQ</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=ZJxcjW7I3BG_KqDxl7okhQ&amp;_render=rss&amp;page=2" />
      <pubDate>Mon, 28 May 2012 20:50:08 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/officeisrael" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="officeisrael" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>Presenting at SharePoint User Group Tomorrow</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/05/27/presenting-at-sharepoint-user-group-tomorrow.aspx</link>
         <description>&lt;p dir="rtl" align="right"&gt;תזכורת: מחר (28/05/2012) בשעה 17:30 יתקיים מפגש של SharePoint User Group. אני אעביר הרצאה על Claims Based Authentication in SharePoint 2010.    &lt;br /&gt;המפגש אינו כרוך בתשלום, אך מצריך הרשמה מראש בקישור:     &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://spug-28-may-eorg.eventbrite.com"&gt;http://spug-28-may-eorg.eventbrite.com&lt;/a&gt; &lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;הערה: למי שהיה בהרצאה שלי בכנס SharePoint Extreme האחרון, מדובר על אותה הרצאה.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1104475" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/r0NZym1HKNosb7HB_cf8bZFga7A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r0NZym1HKNosb7HB_cf8bZFga7A/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/r0NZym1HKNosb7HB_cf8bZFga7A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r0NZym1HKNosb7HB_cf8bZFga7A/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1104475</guid>
         <pubDate>Sun, 27 May 2012 07:10:15 +0000</pubDate>
      </item>
      <item>
         <title>BDC -&amp;gt; BCS?</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/05/15/bdc-gt-bcs.aspx</link>
         <description>&lt;p&gt;MOSS 2007 had a feature called Business Data Catalog. When SharePoint 2010 came out, this feature was introduced as Business Connectivity Services.&lt;/p&gt;  &lt;p&gt;The common belief is that BCS is the new version of BDC, and that in the new version the name was changed from BDC to BCS. According to this, there is no reason to use the term BDC in the context of SharePoint 2010.    &lt;br /&gt;This is not exactly correct.     &lt;br /&gt;BDC was and still the infrastructure that allows SharePoint to connect to other systems. It has the concept of metadata and descriptors, and is still present in 2010 under the name “Business Data Connectivity”. BCS is based on BDC and is what makes all the advanced connectivity scenarios possible (such as integration with Office, ECT,…).&lt;/p&gt;  &lt;p&gt;In the bottom-line, the terms BDC and BCS is used interchangeably, so you should too. But you don’t have to be angry if you see BDC in the same sentence with SharePoint 2010 :)&lt;/p&gt;  &lt;p&gt;Here are some supporting quotes from MSDN:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Business Data Connectivity (BDC) service is the new version of the Business Data &lt;/em&gt;&lt;em&gt;Catalog that was provided in Microsoft Office SharePoint Server 2007”      &lt;br /&gt;&lt;/em&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ee556407.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee556407.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Business Data Connectivity (BDC) service succeeds the Business Data Catalog that was provided in Microsoft Office SharePoint Server 2007”&lt;/em&gt;     &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ee558876.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee558876.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“BDC is the foundation of Business Connectivity Services”      &lt;br /&gt;&lt;/em&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ee559650.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee559650.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Business Data Connectivity (BDC) service in Microsoft Business Connectivity Services (BCS) is the underlying framework in the Microsoft SharePoint Foundation 2010 platform on which Business Connectivity Services is built”&lt;/em&gt;     &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ee557963.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee557963.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1092403" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cd-sjbU0pwhQ1RRunyZbTQJ50L4/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1092403</guid>
         <pubDate>Tue, 15 May 2012 12:40:17 +0000</pubDate>
      </item>
      <item>
         <title>Xml Serialize Interface Typed Members</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/04/30/xml-serialize-interface-typed-members.aspx</link>
         <description>&lt;p&gt;If you try to serialize a class that has a public member of an interface type to xml file using the regular .net &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx"&gt;XmlSerializer&lt;/a&gt;, you will get an error: “Cannot serialize member {m} of type {t} because it is an interface.” ({m} and {t} are placeholders).     &lt;br /&gt;In this post I suggest a workaround to this issue.&lt;/p&gt;  &lt;p&gt;Consider the following scenario:&lt;/p&gt;  &lt;p&gt;You have an object model like this:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; Car&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; Model { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; Year { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; IEngine Engine { get; set; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; IEngine&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Work();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ElectricEngine : IEngine&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; batteryPrecentageLeft;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; BatteryPrecentageLeft&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         get { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.batteryPrecentageLeft; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         set { &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.batteryPrecentageLeft = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; IEngine.Work() { }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; InternalCombustionEngine : IEngine&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; gasLitersLeft;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;int&lt;/span&gt; GasLitersLeft&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;         get { &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.gasLitersLeft; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;         set { &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.gasLitersLeft = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;; }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; IEngine.Work() { }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And you use it like so:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; Car myCar = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Car();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; myCar.Model = &lt;span style="color:#006080;"&gt;&amp;quot;Ford Focus&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; myCar.Year = 2011;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; myCar.Engine = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; ElectricEngine() { BatteryPrecentageLeft = 70 };&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; myCar.Engine.Work();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you would try to serialize &lt;em&gt;myCar&lt;/em&gt; using the regular XmlSerializer, you will get the error above.&lt;/p&gt;

&lt;p&gt;There are many reasons why you shouldn’t want to serialize an interface typed member. I will not dive into this debate right now. I assume that you have considered this before, and are just looking for a workaround.&lt;/p&gt;

&lt;p&gt;So first lets understand what we are trying to achieve. 
  &lt;br /&gt;In the example above, I expect the serialized output of &lt;em&gt;myCar&lt;/em&gt; to be something like this:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Car&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Model&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Ford Focus&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Model&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Year&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;2011&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Year&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Engine&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ElectricEngine&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;FullAssemblyQualifiedTypeName&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Common.ElectricEngine, Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;       &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;BatteryPrecentageLeft&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;70&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;BatteryPrecentageLeft&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ElectricEngine&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Engine&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Car&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I have &lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/questions/10252207/how-to-serialize-interface-typed-member"&gt;asked a question&lt;/a&gt; on StackOverflow, and &lt;a rel="nofollow" target="_blank" href="http://stackoverflow.com/users/214222/jens-granlund"&gt;Jens Granlund&lt;/a&gt; has pointed me in the right direction. 

  &lt;br /&gt;The workaround that I have implemented consists of the following steps:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Mark all interface typed members with the &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlignoreattribute.aspx"&gt;&lt;em&gt;XmlIgnoreAttribute&lt;/em&gt;&lt;/a&gt;, that tells the XmlSerializer to not serialize those members. &lt;/li&gt;

  &lt;li&gt;Now serialize the class to produce an output similar to the one above, but without the problematic members. &lt;/li&gt;

  &lt;li&gt;For-each member marked with the attribute, get it’s current value, and that value’s type. That can only be done in runtime. &lt;/li&gt;

  &lt;li&gt;Use that type to create a standard XmlSerializer, and use that serializer to serialize that value. &lt;/li&gt;

  &lt;li&gt;Inject those serialized values to the parent class’s serialized xml. &lt;/li&gt;

  &lt;li&gt;In order to allow regular use of the &lt;em&gt;XmlIgnoreAttribute&lt;/em&gt;, implement a new attribute that act like it. &lt;/li&gt;

  &lt;li&gt;During deserialization perform the same process in reverse. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I have followed that basic recipe to create my own &lt;em&gt;“RuntimeXmlSerializer”&lt;/em&gt;. You use it the same way you would use the standard XmlSerializer.&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; RuntimeXmlSerializerAttribute : XmlIgnoreAttribute { }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; RuntimeXmlSerializer&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; Type m_type;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; XmlSerializer m_regularXmlSerializer;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; k_FullClassNameAttributeName = &lt;span style="color:#006080;"&gt;&amp;quot;FullAssemblyQualifiedTypeName&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; RuntimeXmlSerializer(Type i_subjectType)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_type = i_subjectType;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_regularXmlSerializer = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_type);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum16"&gt;  16:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; Serialize(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; i_objectToSerialize, Stream i_streamToSerializeTo)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum17"&gt;  17:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum18"&gt;  18:&lt;/span&gt;         StringWriter sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum19"&gt;  19:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_regularXmlSerializer.Serialize(sw, i_objectToSerialize);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum20"&gt;  20:&lt;/span&gt;         XDocument objectXml = XDocument.Parse(sw.ToString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum21"&gt;  21:&lt;/span&gt;         sw.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum22"&gt;  22:&lt;/span&gt;         SerializeExtra(i_objectToSerialize,objectXml);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum23"&gt;  23:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; res = objectXml.ToString();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum24"&gt;  24:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;byte&lt;/span&gt;[] bytesToWrite = Encoding.UTF8.GetBytes(res);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum25"&gt;  25:&lt;/span&gt;         i_streamToSerializeTo.Write(bytesToWrite, 0, bytesToWrite.Length);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum26"&gt;  26:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum27"&gt;  27:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum28"&gt;  28:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; Deserialize(Stream i_streamToSerializeFrom)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum29"&gt;  29:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum30"&gt;  30:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; xmlContents = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StreamReader(i_streamToSerializeFrom).ReadToEnd();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum31"&gt;  31:&lt;/span&gt;         StringReader sr;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum32"&gt;  32:&lt;/span&gt;         sr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringReader(xmlContents);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum33"&gt;  33:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; res = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.m_regularXmlSerializer.Deserialize(sr);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum34"&gt;  34:&lt;/span&gt;         sr.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum35"&gt;  35:&lt;/span&gt;         sr = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringReader(xmlContents);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum36"&gt;  36:&lt;/span&gt;         XDocument doc = XDocument.Load(sr);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum37"&gt;  37:&lt;/span&gt;         sr.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum38"&gt;  38:&lt;/span&gt;         deserializeExtra(res, doc);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum39"&gt;  39:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; res;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum40"&gt;  40:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum41"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum42"&gt;  42:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; deserializeExtra(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; i_desirializedObject, XDocument i_xmlToDeserializeFrom)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum43"&gt;  43:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum44"&gt;  44:&lt;/span&gt;         IEnumerable propertiesToDeserialize = i_desirializedObject.GetType()&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum45"&gt;  45:&lt;/span&gt;             .GetProperties().Where(p =&amp;gt; p.GetCustomAttributes(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum46"&gt;  46:&lt;/span&gt;                 .FirstOrDefault(a =&amp;gt; a.GetType() ==&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum47"&gt;  47:&lt;/span&gt;                     &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(RuntimeXmlSerializerAttribute)) != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum48"&gt;  48:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (PropertyInfo prop &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; propertiesToDeserialize)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum49"&gt;  49:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum50"&gt;  50:&lt;/span&gt;             XElement propertyXml = i_xmlToDeserializeFrom.Descendants().FirstOrDefault(e =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum51"&gt;  51:&lt;/span&gt;                 e.Name == prop.Name);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum52"&gt;  52:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (propertyXml == &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;) &lt;span style="color:#0000ff;"&gt;continue&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum53"&gt;  53:&lt;/span&gt;             XElement propertyValueXml = propertyXml.Descendants().FirstOrDefault();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum54"&gt;  54:&lt;/span&gt;             Type type = Type.GetType(propertyValueXml.Attribute(k_FullClassNameAttributeName).Value.ToString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum55"&gt;  55:&lt;/span&gt;             XmlSerializer srl = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(type);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum56"&gt;  56:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; deserializedObject = srl.Deserialize(propertyValueXml.CreateReader());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum57"&gt;  57:&lt;/span&gt;             prop.SetValue(i_desirializedObject, deserializedObject, &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum58"&gt;  58:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum59"&gt;  59:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum60"&gt;  60:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum61"&gt;  61:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; SerializeExtra(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; objectToSerialize, XDocument xmlToSerializeTo)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum62"&gt;  62:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum63"&gt;  63:&lt;/span&gt;         IEnumerable propertiesToSerialize =&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum64"&gt;  64:&lt;/span&gt;             objectToSerialize.GetType().GetProperties().Where(p =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum65"&gt;  65:&lt;/span&gt;                 p.GetCustomAttributes(&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;).FirstOrDefault(a =&amp;gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum66"&gt;  66:&lt;/span&gt;                     a.GetType() == &lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(RuntimeXmlSerializerAttribute)) != &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum67"&gt;  67:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt; (PropertyInfo prop &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; propertiesToSerialize)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum68"&gt;  68:&lt;/span&gt;         {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum69"&gt;  69:&lt;/span&gt;             XElement serializedProperty = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XElement(prop.Name);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum70"&gt;  70:&lt;/span&gt;             serializedProperty.AddFirst(serializeObjectAtRuntime(prop.GetValue(objectToSerialize, &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;)));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum71"&gt;  71:&lt;/span&gt;             xmlToSerializeTo.Descendants().First().Add(serializedProperty); &lt;span style="color:#008000;"&gt;//TODO&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum72"&gt;  72:&lt;/span&gt;         }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum73"&gt;  73:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum74"&gt;  74:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum75"&gt;  75:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; XElement serializeObjectAtRuntime(&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt; i_objectToSerialize)&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum76"&gt;  76:&lt;/span&gt;     {&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum77"&gt;  77:&lt;/span&gt;         Type t = i_objectToSerialize.GetType();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum78"&gt;  78:&lt;/span&gt;         XmlSerializer srl = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlSerializer(t);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum79"&gt;  79:&lt;/span&gt;         StringWriter sw = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum80"&gt;  80:&lt;/span&gt;         srl.Serialize(sw, i_objectToSerialize);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum81"&gt;  81:&lt;/span&gt;         XElement res = XElement.Parse(sw.ToString());&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum82"&gt;  82:&lt;/span&gt;         sw.Dispose();&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum83"&gt;  83:&lt;/span&gt;         XAttribute fullClassNameAttribute = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XAttribute(k_FullClassNameAttributeName, t.AssemblyQualifiedName);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum84"&gt;  84:&lt;/span&gt;         res.Add(fullClassNameAttribute);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum85"&gt;  85:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum86"&gt;  86:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; res;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum87"&gt;  87:&lt;/span&gt;     }&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum88"&gt;  88:&lt;/span&gt; }&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Notice that this solution doesn’t handle situations in which the interface typed member is not a direct descendent of the type being serialized. In example if &lt;em&gt;Car&lt;/em&gt; has a member of type &lt;em&gt;List&amp;lt;IWheel&amp;gt;&lt;/em&gt; or if &lt;em&gt;Car&lt;/em&gt; has a member of type &lt;em&gt;Dashboard&lt;/em&gt; which has a member f type &lt;em&gt;IGauge, &lt;/em&gt;than serialization will fail. 

  &lt;br /&gt;This can be solved by recursively performing the “Runtime” serialization on all members, until we reach a primitive member which we can serialize using the regular serializer.&lt;/p&gt;

&lt;p&gt;You can find the Visual Studio project in this link:
  &lt;br /&gt;&lt;a rel="nofollow" title="http://blogs.microsoft.co.il/files/folders/1078707/download.aspx" target="_blank" href="http://blogs.microsoft.co.il/files/folders/1078707/download.aspx"&gt;http://blogs.microsoft.co.il/files/folders/1078707/download.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1078708" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YvrOxCUOq-e3uyQ91hliNHH1TdQ/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1078708</guid>
         <pubDate>Mon, 30 Apr 2012 07:48:30 +0000</pubDate>
      </item>
      <item>
         <title>Enterprise Wiki site template vs. Wiki Library template</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/04/15/enterprise-wiki-site-template-vs-wiki-library-template.aspx</link>
         <description>&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/itaysk/Wiki-Linking-1_0B4F1AC8.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="Wiki-Linking-1" border="0" alt="Wiki-Linking-1" align="right" src="http://blogs.microsoft.co.il/blogs/itaysk/Wiki-Linking-1_thumb_1E8FD167.png" width="349" height="225"/&gt;&lt;/a&gt;We all know wikis and how they work. It&amp;#39;s a quick way to create inter-connected items of unstructured data.    &lt;br /&gt;SharePoint 2010 Introduces two wiki solutions that appear similar on first sight, but are actually different. In this post I will cover technical differences between the two.&lt;/p&gt;  &lt;p&gt;First is the &amp;quot;&lt;strong&gt;Enterprise Wiki&lt;/strong&gt;&amp;quot; site template. It&amp;#39;s a template that can be used to create site collections, or sub-sites. The Enterprise Wiki site template creates a site that is dedicated to wiki content. The main component in the site is the &amp;quot;Pages&amp;quot; Library. We will explorer it later.&lt;/p&gt;  &lt;p&gt;Second is the &amp;quot;Wiki Page Library&amp;quot; list template. This Wiki Library can host wiki pages. It can be created in any kind of site.    &lt;br /&gt;As a matter of fact, this Wiki Library list template is used as the default pages library in the &amp;quot;Team Site&amp;quot; site template.&lt;/p&gt;  &lt;p&gt;According to &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/ee721051.aspx"&gt;this article on MSDN&lt;/a&gt;, here is a short comparison between the two:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;If you want to:&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Use this site template:&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Encourage one-to-many communication&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Team Site&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Encourage many-to-many communication&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Offer a structured exchange of information&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Team Site&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Enable a collaborative exchange of information&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Insert images or files in a pages&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Team Site or Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Mark pages for easier reference by tagging them with enterprise keywords&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Enterprise Wiki&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;These are nice guidelines, but what is the real difference of each?   &lt;br /&gt;I am now going to go through the detailed process that I took for investigating the case. You can skip to the end if you want the summary.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Wiki Page Library&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;The template is part of the feature called &amp;quot;WebPageLibrary&amp;quot;. In this feature, you can find the list definition at: &amp;quot;14&amp;#92;TEMPLATES&amp;#92;FEATURES&amp;#92;WebPageLibrary&amp;#92;ListTemlpates&amp;#92;WebPageLibrary.xml&amp;quot;.   &lt;br /&gt;If you look at it, you&amp;#39;ll notice that the list template id is 119, and BaseType=&amp;quot;1&amp;quot;, which means it is a regular document library.&lt;/p&gt;  &lt;p&gt;If we take a look at the schema.xml file at &amp;quot;14&amp;#92;TEMPLATES&amp;#92;FEATURES&amp;#92;WebPageLibrary&amp;#92;WebPageLib&amp;#92;schema.xml&amp;quot;, we will see that the template associates a content type with ID 0x010108 to the library. This content type is called &amp;quot;WikiDocument&amp;quot;, and is defined in: &amp;quot;14&amp;#92;TEMPLATES&amp;#92;FEATURES&amp;#92;ctypes&amp;#92;ctypeswss.xml&amp;quot;. It inherits from the base &amp;quot;Document&amp;quot; content type, does 2 things: Add the &amp;quot;WikiField&amp;quot;, and remove the &amp;quot;Title&amp;quot; field.    &lt;br /&gt;The &amp;quot;WikiField&amp;quot; field is what holds the content of the page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Enterpries Wiki&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is an entierly different beast. First of all, it&amp;#39;s a site definition. You will find the &amp;quot;Enterprise Wiki&amp;quot; site definition at 14&amp;#92;TEMPLATE&amp;#92;1033&amp;#92;XML&amp;#92;webtempsps.xml. Let&amp;#39;s take a closer look at it.   &lt;br /&gt;The site definition onet.xml file is at: 14&amp;#92;TEMPLATE&amp;#92;SiteTemplates&amp;#92;ENTERWIKI&amp;#92;XML&amp;#92;onet.xml. In here, we can see that this is actually a publishing site (publishing features, such as &amp;quot;Publishing 22A9EF51-737B-4ff2-9346-694633FE4416&amp;quot; are activated).&lt;/p&gt;  &lt;p&gt;In addition to the standatd pablishing features, there&amp;#39;s an additional feature with id &amp;quot;76D688AD-C16E-4cec-9B71-7B7F0D79B9CD&amp;quot;. This is the EnterpriseWiki feature, you can find it&amp;#39;s source at: 14&amp;#92;TEMPALTE&amp;#92;FEATURES&amp;#92;EnterpriseWiki.&lt;/p&gt;  &lt;p&gt;If you take a look at EnterpriseWikiContentTypeBinding.xml, you will see that the feature takes the default pages library that is created with the publishing infrastructure, and binds to it 2 content types. One is the standard Redirect Page content type, and the other is the Enterprise Wiki content type.    &lt;br /&gt;The Enterprise Wiki content type is defined at: 14&amp;#92;TEMPALTE&amp;#92;FEATURES&amp;#92;EnterpriseWikiContentTypes, and defines the following fields: ModifiedBy, PublishingPageContent, Rating, RatingCount.&lt;/p&gt;  &lt;p&gt;If we take a look at the page layout at: 14&amp;#92;TEMPALTE&amp;#92;FEATURES&amp;#92;EnterpriseWikiLayouts&amp;#92;PageLayouts&amp;#92;EnterpriseWiki.aspx, we will see that the field that holds the content of the page is &amp;quot;PublishingPageContent&amp;quot;. This field is just like the &amp;quot;WikiField&amp;quot; field that we discussed earlier.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Rendering&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Handling wiki style markup is integrated into SharePoint foundation. From what I have found, it seems that the translation from wiki syntax to html is done in the field level (not UI control). The class &amp;quot;SPFieldMultilineText&amp;quot; has a property called &amp;quot;WikiLinking&amp;quot; (boolean), that toggles the feature on or off.    &lt;br /&gt;For publishing pages, the &amp;quot;HtmlField&amp;quot; inherits indirectly from SPFieldMultilineText, so it supports this too.&lt;/p&gt;  &lt;p&gt;You can use this feature with regular publishing pages as well (not nessicarely wiki page layouts).   &lt;br /&gt;If you look at the source of a publishing page you will see a line similar to this: document.getElementById(&amp;#39;ctl00_PlaceHolderMain_PageContent_RichHtmlField_displayContent&amp;#39;).WikiLinking = &amp;#39;on&amp;#39;;    &lt;br /&gt;This controls whether or not the wiki syntax translation is active.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SharePoint has different 2 solutions for wiki style editing:&lt;/p&gt;  &lt;p&gt;1. Wiki Library - a web pages library that uses the &amp;quot;Wiki Document&amp;quot; content type. This content type has a field called &amp;quot;WikiField&amp;quot; to hold the wiki content.&lt;/p&gt;  &lt;p&gt;2. Enterprise Wiki - a site definition that is based on the publishing infrustructure. As such, it is based on the built in &amp;quot;Pages&amp;quot; library. It uses a content type called &amp;quot;Enterprise Wiki&amp;quot;, in which the field &amp;quot;PublishingPageContent&amp;quot; is used to hold wiki content.&lt;/p&gt;  &lt;p&gt;This knowledge can be helpful if you are developing solutions that are usign the wiki features programmatically.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;-- My name is Itay Shakury, and I&amp;#39;m a SharePoint consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1065594" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DSs_IdbuKvhaEzDgaRtufQZ3GiA/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1065594</guid>
         <pubDate>Sun, 15 Apr 2012 17:00:52 +0000</pubDate>
      </item>
      <item>
         <title>More Findings from reading SharePoint 15 CTP SDK</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/27/more-findings-from-reading-sharepoint-15-ctp-sdk.aspx</link>
         <description>&lt;p&gt;A while ago, Microsoft has released a CTP (Community Tech Preview) version for the SDK (Software Development Kit) of the next version of SharePoint (aka SharePoint 15).    &lt;br /&gt;I have already discussed Apps in a &lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/26/sharepoint-15-apps-as-documented-in-the-ctp-sdk.aspx"&gt;previous post&lt;/a&gt;, but there’s even more to learn from the new CTP SDK.&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;SPPageContentManagerb - &lt;/strong&gt;“&lt;em&gt;Manages all the resource content that may be registered on a SharePoint page, including script files, inline scripts, style files, inline styles, and hidden input fields. Spweb Ensures that the content can be either appropriately placed on a fully-rendered HTML page or correctly transmitted to a browser in the case of a partial page load.&lt;/em&gt;”&lt;/p&gt;  &lt;p&gt;This class must work closely with this new feature:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;MdsCompliantAttribute&lt;/strong&gt; – “&lt;em&gt;Indicates whether the script, style, and field registrations of a class are compliant with the Minimal Download Strategy (MDS) framework.”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;So this is an attribute that can be applied to controls (?), that specifies weather or not the control adheres to “Minimal Download Strategy (MDS)”. Googling the phrase “Minimal Download Strategy” took me to &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/hh645522(office.12).aspx"&gt;this&lt;/a&gt; page that explains what MDS is about: “&lt;em&gt;The minimal download strategy will use a single .aspx file (start.aspx) for your pages, with the actual &lt;/em&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/dd905493(office.12).aspx#gt_433a4fb7-ef84-46b0-ab65-905f5e3a80b1"&gt;&lt;em&gt;URL&lt;/em&gt;&lt;/a&gt;&lt;em&gt; encoded in the text following the hashmark (‘#’). When navigating from page to page, only the changes between two compatible pages will be downloaded. Fewer bytes will be downloaded and the page will appear more quickly.&lt;/em&gt;”     &lt;br /&gt;So this is some kind of hardcore AJAX, in which all pages are actually a single page, and switching between pages will only load differences (so the chrome stays fixed). I wonder if this will get the same kind of bad reputation that the (pretty similar) UpdatePanel control from ASP.net has got.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Search from Client OM&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;New namespace called Microsoft.SharePoint.Client.Search.Query that indicates the Client Object Model now supports using SharePoint’s search.    &lt;br /&gt;Up until now we could only use web services to do this. Now we have convenient and familiar object model.     &lt;br /&gt;The namespace has classes like &lt;em&gt;Query&lt;/em&gt;, &lt;em&gt;KeywordQuery&lt;/em&gt; (that inharites from Query), and &lt;em&gt;ResultTable&lt;/em&gt;. This is similar to what we know from the server OM.     &lt;br /&gt;There’s also a new &lt;em&gt;SearchExecutor&lt;/em&gt; class that execute the queries (like ClientContext.Execute).&lt;/p&gt;  &lt;p&gt;Looking forward to more interesting stuff in SharePoint 15 :)&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;-- My name is Itay Shakury, and I’m a SharePoint Consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1045673" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C7meDpHZoCszadPpwWBLdFbzF4o/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1045673</guid>
         <pubDate>Tue, 27 Mar 2012 20:21:34 +0000</pubDate>
      </item>
      <item>
         <title>ArcGIS–Getting the Legend Labels out</title>
         <link>http://weblogs.asp.net/avnerk/archive/2012/03/27/arcgis-getting-the-legend-labels-out.aspx</link>
         <description>&lt;p&gt;Working with ESRI’s ArcGIS package, especially the WPF API, can be confusing. There’s the REST API, the SOAP APIs, and the WPF classes themselves, which expose some web service calls and information, but not everything. With all that, it can be hard to find specific features between the different options. Some functionality is handed to you on a silver platter, while some is maddeningly hard to implement.&lt;/p&gt;  &lt;p&gt;Today, for instance, I was working on adding a Legend control to my map-based WPF application, to explain the different symbols that can appear on the map.&lt;/p&gt;  &lt;p&gt;This is how the legend looks on ESRI’s own map-editing tools:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://forums.arcgis.com/attachment.php?attachmentid=12895&amp;amp;d=1332335980" width="363" height="199"/&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;but this is how it looks when I used the Legend control, supplied out of the box by ESRI:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://forums.arcgis.com/attachment.php?attachmentid=12894&amp;amp;d=1332333784"/&gt;&lt;/p&gt;  &lt;p&gt;Very pretty, but unfortunately missing the option to display the name of the fields that make up the symbology.&lt;/p&gt;  &lt;p&gt;Luckily, the WPF controls have a lot of templating/extensibility points, to allow you to specify the layout of each field:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend.MapLayerTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;              &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Layer.ID}&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend.MapLayerTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;but that only replicates the same built in behavior. I could now add any additional fields I liked, but unfortunately, I couldn’t find them as part of the Layer, GraphicsLayer or FeatureLayer definitions. This is the part where ESRI’s lack of organization is noticeable, since I can see this data easily when accessing the ArcGis Server’s web-interface, but I had no idea how to find it as part of the built-in class. Is it a part of Layer? Of LayerInfo? Of the LayerDefinition class that exists only in the SOAP service?&lt;/p&gt;

&lt;p&gt;As it turns out, neither. Since these fields are used by the symbol renderer to determine which symbol to draw, they’re actually a part of the layer’s Renderer. Since I already had a MyFeatureLayer class derived from FeatureLayer that added extra functionality, I could just add this property to it:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; LegendFields&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; {&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;     get&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;     {&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Renderer &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; UniqueValueRenderer)&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Renderer &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; UniqueValueRenderer).Field;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;if&lt;/span&gt; (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Renderer &lt;span style="color:#0000ff;"&gt;is&lt;/span&gt; UniqueValueMultipleFieldsRenderer)&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt;         {&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum11"&gt;  11:&lt;/span&gt;             var renderer = &lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Renderer &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; UniqueValueMultipleFieldsRenderer;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum12"&gt;  12:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;.Join(renderer.FieldDelimiter, renderer.Fields);&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum13"&gt;  13:&lt;/span&gt;         }&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum14"&gt;  14:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;else&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum15"&gt;  15:&lt;/span&gt; }&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;For my scenario, all of my layers used symbology derived from a single field or, as in the examples above, from several of them. The renderer even kindly supplied me with the comma to separate the fields with. Now it was a simple matter to get the Legend control in line – assuming that it was bound to a collection of MyFeatureLayer:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend.MapLayerTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Layer.ID}&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;TextBlock&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Text&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;{Binding Layer.LegendFields}&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Margin&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;10,0,0,0&amp;quot;&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;TextStyle&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;=&amp;quot;Italic&amp;quot;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum8"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:white;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum9"&gt;   9:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend.MapLayerTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;

    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum10"&gt;  10:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;esri:Legend&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

    &lt;p&gt;&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;and get the look I wanted – the list of fields below the layer name, indented.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8365787" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8365787</guid>
         <pubDate>Tue, 27 Mar 2012 08:18:19 +0000</pubDate>
      </item>
      <item>
         <title>SharePoint 15 “Apps” (as documented in the CTP SDK)</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/26/sharepoint-15-apps-as-documented-in-the-ctp-sdk.aspx</link>
         <description>&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/itaysk/windows_store_tile_13E48626.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top:0px;border-right:0px;padding-top:0px;" title="windows_store_tile" border="0" alt="windows_store_tile" align="right" src="http://blogs.microsoft.co.il/blogs/itaysk/windows_store_tile_thumb_1F99CD58.png" width="131" height="131"/&gt;&lt;/a&gt;A while ago, Microsoft has released a CTP (Community Tech Preview) version for the SDK (Software Development Kit) of the next version of SharePoint (aka SharePoint 15).     &lt;br /&gt;Browsing through it I have learned about the new concept of &lt;em&gt;Apps&lt;/em&gt; in SharePoint 15 (codename). In this post I will share my findings and conclusions.&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I start by noticing the &lt;em&gt;SPApp&lt;/em&gt; object, that lies in the &lt;em&gt;Microsoft.SharePoint.Administration &lt;/em&gt;namespace. It “&lt;em&gt;Represents an app loaded onto Microsoft SharePoint Server and ready to be installed.&lt;/em&gt;”     &lt;br /&gt;Right next to the &lt;em&gt;SPApp &lt;/em&gt;Object, we see the &lt;em&gt;SPAppCatlog &lt;/em&gt;class which “&lt;em&gt;Represents all of the &lt;/em&gt;&lt;em&gt;SPAppInstance&lt;/em&gt;&lt;em&gt; objects installed on an instance of Microsoft SharePoint Server. It provides querying capabilities for discovering installations.&lt;/em&gt;”. Naturally, if we are going to have apps, we need some sort of an App Store to obtain apps from.&lt;/p&gt;  &lt;p&gt;If we drill down a level into the &lt;em&gt;SPAppCatalog&lt;/em&gt;, we will see that it has a &lt;em&gt;GetAppInstance&lt;/em&gt; method, that “&lt;em&gt;Gets all the &lt;/em&gt;&lt;em&gt;SPAppInstance&lt;/em&gt;&lt;em&gt; objects installed at a given &lt;/em&gt;&lt;em&gt;SPWeb&lt;/em&gt;&lt;em&gt;.&lt;/em&gt;”. Also, the &lt;em&gt;SPAppInstance&lt;/em&gt; class says it “&lt;em&gt;Represents an &lt;/em&gt;&lt;em&gt;SPApp&lt;/em&gt;&lt;em&gt; object installed to a specific &lt;/em&gt;&lt;em&gt;SPWeb&lt;/em&gt;&lt;em&gt; site.”&lt;/em&gt;. So apps are scoped to the SPWeb level – cool.&lt;/p&gt;  &lt;p&gt;Continuing to the &lt;em&gt;SPWebApplication&lt;/em&gt; class, we find that is has a new method called &lt;em&gt;IsUserLicensedForEntity&lt;/em&gt;, that “&lt;em&gt;Checks if the currently logged in user has the proper license to access the specified entity.&lt;/em&gt;” If we going to have an App Store like system, we need to have a mechanism to enforce licensing.&lt;/p&gt;  &lt;p&gt;What more do we know about apps from real world? They need your permissions to access your data. This is usually done (in real world) with the OAuth protocol, and SharePoint 15 apparently supports this too! There’s a new namespace called &lt;em&gt;Microsoft.SharePoint.IdentityModel.OAuth2&lt;/em&gt; that will probably contain the basis for this, and some classes in &lt;em&gt;Microsoft.SharePoint&lt;/em&gt; like &lt;em&gt;SPApplicationCredentials&lt;/em&gt; and &lt;em&gt;SPAppPrincipalPermissionsManager&lt;/em&gt; that will probably allow programmatic handling of permissions.&lt;/p&gt;  &lt;p&gt;There’s another new namespace called &lt;em&gt;Microsoft.SharePoint.Administration.AppDeployment&lt;/em&gt; that contains two classes – &lt;em&gt;DatabaseProviderConstants&lt;/em&gt;, and &lt;em&gt;DatabaseProviderTypePersistedObject&lt;/em&gt;. So there’s apparently something with a database for an app. The SPWeb class also has new properties regarding App DBs – for example the &lt;em&gt;AppDataBaseName&lt;/em&gt; property that “&lt;em&gt;Gets the name of the app database associated with this Web.&lt;/em&gt;”. Frankly, this is still a mystery for me since it’s use is not documented in the CTP SDK, and not very self explanatory.&lt;/p&gt;  &lt;p&gt;In conclusion:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SharePoint has a new concept of Apps &lt;/li&gt;    &lt;li&gt;Apps are scoped to SPWeb &lt;/li&gt;    &lt;li&gt;Apps are distributed via the AppCatalog &lt;/li&gt;    &lt;li&gt;There’s built in support for licensing apps &lt;/li&gt;    &lt;li&gt;Apps can ask for permission using OAuth &lt;/li&gt;    &lt;li&gt;There’s something with app databases yet to be clarified &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is a very interesting direction that the SharePoint team is taking, and probably revolutionary in the SharePoint world. I hope we can here more details soon.&lt;/p&gt;  &lt;p&gt;Disclaimer: This post is my personal take from browsing through the CTP SDK. This is not an official announcement. All the info this post is based upon is publicly available here: &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/download/en/confirmation.aspx?id=28768"&gt;http://www.microsoft.com/download/en/confirmation.aspx?id=28768&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;-- My name is Itay Shakury, and I’m a SharePoint Consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1044348" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/S-gKS9JeZWrygSJV2JOGElMyxN0/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1044348</guid>
         <pubDate>Mon, 26 Mar 2012 21:25:22 +0000</pubDate>
      </item>
      <item>
         <title>Storing Configuration Settings For Timer Jobs</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/23/storing-configuration-settings-for-timer-jobs.aspx</link>
         <description>&lt;p&gt;When you develop a custom timer job, there is often a need to store configuration settings.    &lt;br /&gt;The best way to do this is using the Hierarchical Object Store in SharePoint, by creating an &lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.sppersistedobject.aspx"&gt;SPPerststedObject&lt;/a&gt;. There are plenty of articles out there that tell you to how to do this.    &lt;br /&gt;For more info on this subject, see this:     &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/cc406686(office.12).aspx"&gt;http://msdn.microsoft.com/en-us/library/cc406686(office.12).aspx&lt;/a&gt;     &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://msdn.microsoft.com/en-us/library/hh528519.aspx"&gt;http://msdn.microsoft.com/en-us/library/hh528519.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So it’s called &amp;quot;&lt;em&gt;hierarchical&lt;/em&gt;” object store, because you have to attach the settings to a certain object in the SharePoint object model, and that object must support this by inheriting from SPPersistedObject.&lt;em&gt;&amp;#160;&lt;/em&gt;Most of those articles shows you how to attach settings to SPFarm, SPWebApplication, or SPSiteCollection objects, but as a matter of fact, the SPJobDefinition class is also a SPPersistedObject!&lt;/p&gt;  &lt;p&gt;This means that &lt;strong&gt;you can attach settings to the job object directly&lt;/strong&gt;, and not leave them hanging at the farm or a higher level. This has two benefits:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It’s more organized to keep timer job related settings at the timer job level (and not web application level for example)&lt;/li&gt;    &lt;li&gt;When you delete the timer job, the settings are deleted as well&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Here’s a sample:&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; SPWebApplication wa = SPWebApplication.Lookup(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Uri(&lt;span style="color:#006080;"&gt;&amp;quot;http://MySP&amp;quot;&lt;/span&gt;));&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; SPJobDefinition job = wa.JobDefinitions.First(j =&amp;gt; j.Name == &lt;span style="color:#006080;"&gt;&amp;quot;MyTimerJob&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt;&amp;#160; &lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum4"&gt;   4:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//Store the settings&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum5"&gt;   5:&lt;/span&gt; MyJobSettings settings = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; MyJobSettings(&lt;span style="color:#006080;"&gt;&amp;quot;settings&amp;quot;&lt;/span&gt;, job); &lt;span style="color:#008000;"&gt;//here we set job as the parent&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum6"&gt;   6:&lt;/span&gt; settings.settings1 = &lt;span style="color:#006080;"&gt;&amp;quot;Sample Data&amp;quot;&lt;/span&gt;;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum7"&gt;   7:&lt;/span&gt; settings.Update();&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;And the reading:&lt;/p&gt;

&lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;//Read the settings&lt;/span&gt;&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum2"&gt;   2:&lt;/span&gt; MyJobSettings res = job.GetChild&amp;lt;MyJobSettings&amp;gt;(&lt;span style="color:#006080;"&gt;&amp;quot;settings&amp;quot;&lt;/span&gt;);&lt;/pre&gt;


    &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;background-color:#f4f4f4;margin:0em;border-left-style:none;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;border-right-style:none;font-size:8pt;overflow:visible;padding-top:0px;"&gt;&lt;span style="color:#606060;" id="lnum3"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; setting1 = res.setting1;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;-- My name is Itay Shakury, and I’m a SharePoint consultant --&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1040812" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w9d4vqftTveeXzk8MnjfNLHfrOg/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1040812</guid>
         <pubDate>Fri, 23 Mar 2012 13:58:07 +0000</pubDate>
      </item>
      <item>
         <title>Follow Up on My SharePoint Extreme Session on Claims Based Authentication</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/22/follow-up-on-my-sharepoint-extreme-session-on-claims-based-authentication.aspx</link>
         <description>&lt;p dir="rtl" align="right"&gt;בכנס SharePoint Extreme האחרון העברתי מצגת על Claims Based Authentication עם SharePoint 2010.    &lt;br /&gt;מכיוון שזהו נושא חדש יחסית, המצגת התמקדה בעיקר בהיכרות עם מה זה בכלל Claims Based Authenticatoin, ואיך זה עובד.     &lt;br /&gt;לאחר המצגת קיבלתי שאלות בנוגע לתהליך הטכני. פוסט זה בא להבהיר את התהליך.&lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;התהליך שהצגתי הוא כזה:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="right"&gt;משתמש ניגש לשרת SP&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;המשתמש מופנה ל STS&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;STS מאמת את המשתמש&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;STS מחזיר למשתמש Token&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;המשתמש ניגש אל ה SP, הפעם עם ה Token&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;SP מאשר את ה Token ומאפשר גישה&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p dir="rtl" align="right"&gt;השאלה העיקרית הייתה בנוגע לשימוש ב Cookies, ואיך כל זה עובד עם מגבלות כמו Cross-Domain.&lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;הדרך שבה זה עובד בצורה טכנית היא כזו (מספרי השורות תואמים לשלבים שתוארו מקודם):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;     &lt;div align="right"&gt;משתמש מבצע HTTP GET ל SP&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;SP מחזיר 302 Redirect. בסופו של דבר המשתמש מופנה אל הכתובת של ה STS (בד”כ סדרה של הפניות) &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;הדפדפן ניגש אל ה STS, המשתמש מאומת באמצעות דף ה Login&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;ה STS מחזיר למשתמש דף שמכיל את ה Token (בגוף הדף, בד”כ כ hidden field), &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;באותו דף ישנו קוד Javascript שגורם לדפדפן לעשות HTTP POST אל ה SP, עם ה Token.&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="right"&gt;SP מקבל את הבקשה ויודע לנתח אותה בהתאם&lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p dir="rtl" align="right"&gt;אם כן, השאלה הבאה היא איך Cookies נכנסים לתמונה?&lt;/p&gt;  &lt;p dir="rtl" align="right"&gt;ה STS, או ה SP יכולים להשתמש ב cookies (או באיזו טכנולוגיה שהם רוצים) כדי לשמר session עם המשתמש.    &lt;br /&gt;כלומר, כדי שתהליך ההזדהות לא יקרה בכל פעם, ה SP מנפיק למשתמש cookie שמשאיר אותו מזוהה במהלך השימוש שלו באתר (ע”ע FedAuth).     &lt;br /&gt;באותה מידה ה STS יכול להנפיק למשתמש cookie כדי לזהות בצורה אוטומאטית את המשתמש אם הגיעה בקשה נוספת להזדהות.&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1040100" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W0UycVUK9g2dmoucze6f0Ut6xnA/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1040100</guid>
         <pubDate>Thu, 22 Mar 2012 12:56:58 +0000</pubDate>
      </item>
      <item>
         <title>I’m Speaking at SharePoint Extreme 2012</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2012/03/12/i-m-speaking-at-sharepoint-extreme-2012.aspx</link>
         <description>&lt;p style="direction:rtl;" align="right"&gt;ביום שלישי הקרוב עד יום חמישי, 13-15/3/2012, יתקיים כנס SharePoint Extreme – כנס מקצועי לחלוטין עם הרצאות ממוקדות לקהלי יעד שונים בנושאי SharePoint.    &lt;br /&gt;אני ארצה ביום חמישי במסלול &lt;strong&gt;Real World SharePoint Architecture&lt;/strong&gt; הרצאה על &lt;strong&gt;Claims Based Authentication&lt;/strong&gt; ב SharePoint 2010.     &lt;br /&gt;בהרצאה אציג את העולם של Claims Based Authenticatoin, את היתרונות והמניעים לטכנולוגיה, את השילוב עם SharePoint, ותרחישים לדוגמא שמתבססים עליה.&lt;/p&gt;  &lt;p style="direction:rtl;" align="right"&gt;(ההרשמה לכנס כרוכה בתשלום)&lt;/p&gt;  &lt;p style="direction:rtl;" align="right"&gt;לפרטים נוספים והרשמה:    &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/israel/sharepointExtreme/content/Lectures/13036.aspx"&gt;http://www.microsoft.com/israel/sharepointExtreme/content/Lectures/13036.aspx&lt;/a&gt;     &lt;br /&gt;&lt;/p&gt;  &lt;p style="direction:rtl;" align="right"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/israel/sharepointExtreme/content/Lectures/13036.aspx"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="28392_Microsoft_mail_signature1" border="0" alt="28392_Microsoft_mail_signature1" src="http://blogs.microsoft.co.il/blogs/itaysk/28392_Microsoft_mail_signature1_5BC63762.jpg" width="364" height="84"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=1032173" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WkhFN7duLyCYQCDE2HJ3hNUVsm0/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:1032173</guid>
         <pubDate>Mon, 12 Mar 2012 17:30:20 +0000</pubDate>
      </item>
      <item>
         <title>Datasheet view alternatives</title>
         <link>http://kwizcom.blogspot.com/2012/03/datasheet-view-alternatives.html</link>
         <description>&lt;p&gt;Ok, this is really long overdue…&lt;/p&gt;  &lt;p&gt;Ever since Microsoft introduced the datasheet view for editing lists in SharePoint I’ve had mixed emotions about it.&lt;/p&gt;  &lt;p&gt;Although datasheet is a great editing tool for SharePoint lists that allows you to quickly edit and update multiple items in an excel-like experience – it has been a challenge getting it to work.&lt;/p&gt;  &lt;p&gt;One customer of mine used a proxy server internally to direct traffic into his SharePoint, which made the datasheet view unavailable.&lt;/p&gt;  &lt;p&gt;Another customer had deployed office 2010 64 bit on his users computers. Apparently datasheet view does not support office 2010 64bit: &lt;a rel="nofollow" title="http://support.microsoft.com/kb/2266203" target="_blank" href="http://support.microsoft.com/kb/2266203"&gt;http://support.microsoft.com/kb/2266203&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Some other customers complaining that they cannot use FireFox or Chrome with datasheet view, or any OS that does not have office installed.&lt;/p&gt;  &lt;p&gt;And finally, datasheet view does not support custom field types – they appear as read only. Actually, even standard OOB fields use a different editing control inside the datasheet view, causing an inconsistent editing experience to the user.&lt;/p&gt;  &lt;p&gt;This have been bothering me for a long while, and finally with the help of my friend Igor Goldshtaub we came up with an idea that will allow you to:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Edit multiple list items (bulk edit) &lt;/li&gt;    &lt;li&gt;Enjoy fast inline editing in list views on all major browsers &lt;/li&gt;    &lt;li&gt;Inline edit custom field types as well as OOB field types &lt;/li&gt;    &lt;li&gt;Have a consistent user experience, using the same editing controls as used in the actual “edit” item form &lt;/li&gt;    &lt;li&gt;Paste information from excel into a list &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The best part is, it potentially supports any 3rd party custom field type, from any other vendor or even ones you develop yourself. Most field types just work, others may need to call a JavaScript method when the content is resized (picker is opened, for example) “OnClientResponseEnded();”&lt;/p&gt;  &lt;p&gt;Inline editing demo:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Paste from excel demo:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’d love to hear what you think about this solution, and if you run into trouble using a custom field type – please let me know! My goal is to be able to support all custom field types in this inline editing platform!&lt;/p&gt;  &lt;p&gt;Finally, we have an answer for editing custom field types in datasheet view. It’s not datasheet, but it comes close!&lt;/p&gt;  &lt;p&gt;Cheers, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-7315707738781771378?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7315707738781771378</guid>
         <pubDate>Wed, 07 Mar 2012 16:51:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://img.youtube.com/vi/iGfONvBNGIQ/default.jpg" width="72" />
      </item>
      <item>
         <title>The Case of the Unexpected Expected Exception</title>
         <link>http://weblogs.asp.net/avnerk/archive/2012/03/01/the-case-of-the-unexpected-expected-exception.aspx</link>
         <description>&lt;p&gt;“NUnit is being problematic again”, they told me when I came to visit the project. “When running unattended it’s not catching assertions properly and the test is coming up green, but when stepping through in the debugger, it works fine.”. It’s nice, when getting a passing test is acknowledged as a bad thing, at least when you don’t expect it to be. In this case, though, the fault wasn’t really with NUnit.&lt;/p&gt;  &lt;pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  1: [Test]
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  2: [ExpectedException]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  3: &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; DoTheTest()
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  4: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  5:     _myComponent.RunMethod();
&lt;/pre&gt;&lt;pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  6:     Assert.IsFalse(_myComponent.EverythingIsFine);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  7: }&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;“It’s simple. Either the method throws an exception, or at the very least – the EverythingIsFine property won’t be set to “True”, so the assert will catch the problem. But in their case, no exception was thrown and Everything wasn’t Fine,&amp;#160; but the Assert call wasn’t raising a red flag – unless they stepped through, in which case it did. What’s going on?&lt;/p&gt;

&lt;p&gt;The basic problem is that to many developers, NUnit is a kind of magic. You write a self-contained little bit of code, the [Test] method, but you don’t call it yourself, you don’t get a feel for the whole execution flow. The result – developers don’t exercise the same sort of judgement they do on their own application code.&lt;/p&gt;

&lt;p&gt;The root of the problem here is that the [ExpectedException] attribute told NUnit to pass the test if an exception is thrown. NUnit’s Assertion utilities, however, use exceptions as the mechanism for failing tests – when an assertion is hit, it raises an exception – it can be an AssertionException. For various mock frameworks, it can be an ExpectationException. It doesn’t matter – it’s these exceptions that make the test fail, and not some behind-the-scenes magic. Because the test had an open-ended [ExpectedException] attribute, these exceptions were caught, fulfilling the condition, and NUnit was happy. &lt;/p&gt;

&lt;p&gt;What can we do to avoid this?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Be explicit. Don’t try to catch ALL exceptions with [ExpectedException]. If you’re expecting an exception, you’re probably expecting a &lt;em&gt;specific&lt;/em&gt; exception. Specify it. &lt;/li&gt;

  &lt;li&gt;Be aware of how your tools work. If NUnit works by throwing an exception, don’t wrap it with a try/catch. Your tests are C# code too, as is the plumbing to enable it. It plays by the same rules. &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8321162" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8321162</guid>
         <pubDate>Thu, 01 Mar 2012 19:20:00 +0000</pubDate>
      </item>
      <item>
         <title>Open Source Vigilantes?</title>
         <link>http://weblogs.asp.net/avnerk/archive/2012/02/26/open-source-vigilantes.aspx</link>
         <description>&amp;lt;Placeholder for StackOverflow Weekday counter&amp;gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=8314435" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:8314435</guid>
         <pubDate>Sun, 26 Feb 2012 10:37:20 +0000</pubDate>
      </item>
      <item>
         <title>Cache explained - the milk story</title>
         <link>http://kwizcom.blogspot.com/2012/02/cache-explained-milk-story.html</link>
         <description>&lt;h4&gt;&lt;/h4&gt;&lt;h3&gt;Introduction&lt;/h3&gt;  &lt;p&gt;I came up with this little story when trying to explain what is caching, how to plan for caching and how to use it. Like many things in software, caching is something we use very widely in our day to day life without even knowing about it. Hopefully this example will give you a different, easier to understand point of view on caching that will help you get your head around it.&lt;/p&gt;  &lt;h3&gt;The milk story&lt;/h3&gt;  &lt;h4&gt;No cache&lt;/h4&gt;  &lt;p&gt;Caching is like drinking milk. &lt;/p&gt;  &lt;p&gt;When you want to drink milk you have to go to the store and buy it.&lt;/p&gt;  &lt;p&gt;You can walk (56k modem) ride your bike (3G) or drive there in your corvette (high speed Internet).&lt;/p&gt;  &lt;p&gt;You have to identify yourself, find and get the milk you want, check its expiration and pay for it. Since there are many things at the store it takes more time to find your milk.&lt;/p&gt;  &lt;p&gt;Then you have to fight traffic back home. Pour the milk into a glass and drink it.&lt;/p&gt;  &lt;h4&gt;Caching options&lt;/h4&gt;  &lt;p&gt;Now, how do we make it better?&lt;/p&gt;  &lt;p&gt;We notice that the store keeps the same milk for 10 days.&lt;/p&gt;  &lt;p&gt;So, we can buy 10 days worth of milk ahead. We calculate our milk usage to be 0.5 liter a day, do we need 5 liters.&lt;/p&gt;  &lt;p&gt;Wow - this is when we discover bulk discounts!&lt;/p&gt;  &lt;p&gt;But - then we discover we need to store it all in the fridge. This type of storage is very expensive since it has many uses and is limited.&lt;/p&gt;  &lt;p&gt;So we compromise and fetch only 2 liters at a time, knowing we will be back at the store once every 4 days.&lt;/p&gt;  &lt;p&gt;Now, we notice we go to the store to get cookies with our milk. So when we go in for milk we use that same opportunity to get cookies as well.&lt;/p&gt;  &lt;p&gt;Now every time we want milk we need to check our fridge first. If there is milk we can use it and we saved a lot of time and resources!&lt;/p&gt;  &lt;p&gt;But, if there is no milk we have to go and get it. In the case we added some overhead by checking the fridge first...&lt;/p&gt;  &lt;p&gt;Now, milk is known to go bad from time to time. So we have to check its expiration. If the milk gone bad we have to throw it.&lt;/p&gt;  &lt;p&gt;That's another overhead every time we want milk.&lt;/p&gt;  &lt;h4&gt;Conclusion&lt;/h4&gt;  &lt;p&gt;Milk is your data.&lt;/p&gt;  &lt;p&gt;The store is your data base.&lt;/p&gt;  &lt;p&gt;Your fridge is your quick accessible cache storage.&lt;/p&gt;  &lt;p&gt;Throwing out bad milk is flushing the cache when invalidated.&lt;/p&gt;  &lt;p&gt;Cache is life ( ok, I went too far… ).&lt;/p&gt;  &lt;p&gt;We use caching techniques every day!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-950504639172852257?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-950504639172852257</guid>
         <pubDate>Tue, 14 Feb 2012 16:48:00 +0000</pubDate>
      </item>
      <item>
         <title>Microsoft Canada - Imagine Cup</title>
         <link>http://kwizcom.blogspot.com/2012/02/microsoft-canada-imagine-cup.html</link>
         <description>&lt;p&gt;Are you ready to change the world? &lt;/p&gt;  &lt;p&gt;All it takes is one good idea. &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/canada/imaginecup/?wt.mc_id=can_dpe-ImagineCup-en_Friendly_Feb1_MVP"&gt;Imagine Cup&lt;/a&gt;, one of the premiere worldwide technology competitions, is looking for students, to help solve some of the world’s toughest problems through technology. &lt;/p&gt;  &lt;p&gt;This year, Microsoft will be hosting a Canadian &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/canada/imaginecup/?wt.mc_id=can_dpe-ImagineCup-en_Friendly_Feb1_MVP"&gt;Imagine Cup&lt;/a&gt; competition with two categories: Software Design and Windows Phone 7 Game Design. You could win a trip to Toronto for the Canadian Finals, a trip to Australia for the Worldwide Finals, international acclaim and cash grants. What are you waiting for? &lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/canada/imaginecup/?wt.mc_id=can_dpe-ImagineCup-en_Friendly_Feb1_MVP"&gt;Get involved&lt;/a&gt; »&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-8066731125887098952?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8066731125887098952</guid>
         <pubDate>Tue, 14 Feb 2012 15:12:00 +0000</pubDate>
      </item>
      <item>
         <title>TSQL: Concatenate Column from Multiple Rows into String</title>
         <link>http://feedproxy.google.com/~r/AdlaiMaschiach/~3/6wnsODG_4kk/tsql-concatenate-column-from-multiple-rows-into-string.aspx</link>
         <description>&lt;p&gt;Ok , So I had a problem related to concatenation of a single Column into one ( same ) column when using GROUP BY .    &lt;br /&gt;The Problem came from a Reporting Services perspective and there might be other solutions ( like coding in VB.NET in the report )&lt;/p&gt;  &lt;p&gt;I have found a very nice samples :&lt;/p&gt;  &lt;p&gt;Option 1: &lt;/p&gt;  &lt;div style="background:whitesmoke;"&gt;   &lt;p&gt;use Northwind&lt;/p&gt;    &lt;p&gt;declare @CategoryList varchar(1000)      &lt;br /&gt;set @CategoryList =&amp;#39;&amp;#39;       &lt;br /&gt;select @CategoryList = @CategoryList + &amp;#39; , &amp;#39; + CategoryName from Categories&lt;/p&gt;    &lt;p&gt;select &amp;#39;Results = &amp;#39; + @CategoryList&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Option 2: &lt;/p&gt;  &lt;div style="background:whitesmoke;"&gt;   &lt;p&gt;use Northwind&lt;/p&gt;    &lt;p&gt;declare @CategoryList varchar(1000)      &lt;br /&gt;select @CategoryList = coalesce(@CategoryList + &amp;#39;, &amp;#39;, &amp;#39;&amp;#39;) + CategoryName from Categories&lt;/p&gt;    &lt;p&gt;select &amp;#39;Results = &amp;#39; + @CategoryList&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the end I used option 2 as part of a UserDefiendFunction .   &lt;br /&gt;    &lt;br /&gt;The manipulation was that the of the “GROUP BY” was sent to the UDF to use in it’s select “where” , so it could return the filtered row concatenated. And that UDF was called as part of the grand SELECT.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;NOTE: this is a developer solution , a DBA might have a better solution ;)&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=996185" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:996185</guid>
         <pubDate>Tue, 24 Jan 2012 08:48:58 +0000</pubDate>
      </item>
      <item>
         <title>SharePoint 2010 : The following computer running SharePoint does not contain the required Infopath form template</title>
         <link>http://feedproxy.google.com/~r/AdlaiMaschiach/~3/0LsEV-vDEek/sharepoint-2010-the-following-computer-running-sharepoint-does-not-contain-the-required-infopath-form-template.aspx</link>
         <description>&lt;p&gt;What can I say … except &lt;b&gt;&amp;quot;elementary my dear Watson&amp;quot;&lt;/b&gt; ;)&lt;/p&gt;  &lt;p&gt;Ok , the problem is that you didn’t activate a feature in the site you’re working with :P&lt;/p&gt;  &lt;p&gt;go to : Site Actions &amp;gt; Site Settings &amp;gt; Manage Site Features &amp;gt; Team Collaboration Lists.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;The problem :&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/adlaim/Untitled_3B87DE95.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Untitled" border="0" alt="Untitled" src="http://blogs.microsoft.co.il/blogs/adlaim/Untitled_thumb_069AD958.jpg" width="454" height="326"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;The solution:&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/adlaim/Untitled2_6462CDD1.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Untitled2" border="0" alt="Untitled2" src="http://blogs.microsoft.co.il/blogs/adlaim/Untitled2_thumb_0FC6EECC.jpg" width="324" height="654"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/adlaim/Untitled3_4C9B709E.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Untitled3" border="0" alt="Untitled3" src="http://blogs.microsoft.co.il/blogs/adlaim/Untitled3_thumb_22D7F5AB.jpg" width="454" height="243"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/adlaim/Untitled4_4E3C16A5.jpg"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Untitled4" border="0" alt="Untitled4" src="http://blogs.microsoft.co.il/blogs/adlaim/Untitled4_thumb_3D746BF7.jpg" width="454" height="259"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;( Personal Note: I know it has been a while , but once in a while doesn’t hurt ;)&amp;#160; )&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=995516" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:995516</guid>
         <pubDate>Mon, 23 Jan 2012 11:43:13 +0000</pubDate>
      </item>
      <item>
         <title>Speaking Engagements 2012</title>
         <link>http://kwizcom.blogspot.com/2012/01/speaking-engagements-2012.html</link>
         <description>&lt;p&gt;My 2012 speaking engagements are posted below,    &lt;br /&gt;If you are around – come see me!     &lt;br /&gt;If you were in one of my sessions, you can find links to the session code and presentation below. Also – if you have any comments on my session – feel free to post it here! &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;January 7 2012&lt;/strong&gt; – &lt;a rel="nofollow" target="_blank" href="http://www.sharepointsaturday.org/virginiabeach/default.aspx"&gt;SPS Virginia Beach&lt;/a&gt; – Session unknown… – Cancelled due to other obligations. Sorry I couldn’t make it!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;January 18 2012&lt;/strong&gt; – &lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/TorontoSPUG/"&gt;Toronto SharePoint User Group&lt;/a&gt; - &lt;a rel="nofollow" target="_blank" href="http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html"&gt;Developer’s guide: how to enhance your SP performance: Understanding caching&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;May 16 2012&lt;/strong&gt; – &lt;a rel="nofollow" target="_blank" href="http://www.sharepointsummit.org/Toronto/conference-day3.htm#session_13_3"&gt;Toronto SharePoint Summit&lt;/a&gt;- &lt;a rel="nofollow" target="_blank" href="http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html"&gt;Developer’s guide: how to enhance your SP performance: Understanding caching&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;My 2011 speaking engagements can be found &lt;a rel="nofollow" target="_blank" href="http://kwizcom.blogspot.com/2010/11/speaking-engagements-2011.html"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-3182485966020502192?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3182485966020502192</guid>
         <pubDate>Wed, 04 Jan 2012 23:04:00 +0000</pubDate>
      </item>
      <item>
         <title>SharePoint Popup Scroll gone after autoSize</title>
         <link>http://kwizcom.blogspot.com/2011/11/sharepoint-popup-scroll-gone-after.html</link>
         <description>&lt;p&gt;I’m writing this post after not finding anything about this problem in Google.&lt;/p&gt;  &lt;h3&gt;The issue&lt;/h3&gt;  &lt;p&gt;When you have a SharePoint 2010 popup dialog, that uses autoSize (like the new item / edit item forms in any SharePoint list), if you call “window.frameElement.autoSize()” second time, there is no scroll in the popup.&lt;/p&gt;  &lt;p&gt;Say you have a field control or a web part that changes in height when the user interacts with it. In my case, I was working on a “repeating rows” field type, where the user can add as many rows to the field as he wants – much like in InfoPath.&lt;/p&gt;  &lt;p&gt;When the user add new rows, the height of my popup changes, so I have to resize it.&lt;/p&gt;  &lt;p&gt;Documentation is pretty clear, call window.frameElement.autoSize() and it should resize your dialog.&lt;/p&gt;  &lt;p&gt;Apparently, this works well for the first time you call it, but for some reason if I call it second/third/ninth time – once the popup is too high the vertical scroll is gone.&lt;/p&gt;  &lt;p&gt;Another issue is, that even when it does fit to the page – the top of the popup does not move up so you end up having to move the popup to the top of the page yourself.&lt;/p&gt;  &lt;p&gt;This caused great frustration for some of our customers, and by extent – our product manager and support – and by extent – me!&lt;/p&gt;  &lt;h3&gt;The solution&lt;/h3&gt;  &lt;p&gt;I knew I was alone in this, since not only Google did not have any solution for this issue – I could not even find someone asking about it in any forums / mailing list.&lt;/p&gt;  &lt;p&gt;So, since waiting for a Microsoft fix for this, which may or may not come eventually (after all this issue is introduced with custom development and not on OOB scenarios), I had to dig deep and get dirty with Microsoft JavaScript and popup DOM.&lt;/p&gt;  &lt;p&gt;It wasn’t pretty, I tell you, but I did find lots of cool stuff, like a function that calculates the width of the scroll bars in the browser :) (yeah, they actually have a function for it!)&lt;/p&gt;  &lt;p&gt;Well, it appears that the popup have few divs and iframe behind it to make it look and work so cool (great job on that Microsoft!), I figured the problem was that the height was not calculating correctly on the second call to autoSize. It disregards the maximum size of the parent window, and does not reposition the window vertically.&lt;/p&gt;  &lt;p&gt;I had to do it myself.&lt;/p&gt;  &lt;p&gt;I came up with this code, now – it is not fail proof, and might not work on some scenarios – but it did work for me, our QA and our customers. I will appreciate if you have any comments or fixes to this code, or if you know of another more “clean” solution to this issue.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:#006400;"&gt;//call autoSize&lt;br /&gt;&lt;/span&gt;window.frameElement.autoSize();&lt;br /&gt;&lt;span style="color:#006400;"&gt;//Fix scroll bar and positioning. $kw is our alias for jQuery&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;bodyHeight = $kw(top.document.body).height();&lt;br /&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;dialogMaxHeight = bodyHeight - 60;&lt;br /&gt;&lt;span style="color:#006400;"&gt;//if dialog is too high&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;($kw(window.frameElement).height() &amp;gt; dialogMaxHeight) {&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//move dialog to top&lt;br /&gt;    &lt;/span&gt;top.document.getElementsByClassName(&lt;span style="color:maroon;"&gt;'ms-dlgContent'&lt;/span&gt;)[0].style.top = &lt;span style="color:maroon;"&gt;'8px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color:maroon;"&gt;'ms-dlgContent'&lt;/span&gt;)[0].previousSibling.style.top = &lt;span style="color:maroon;"&gt;'8px'&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//resize all dialog divs/frames/whatnot&lt;br /&gt;    &lt;/span&gt;window.frameElement.style.height = dialogMaxHeight + &lt;span style="color:maroon;"&gt;'px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color:maroon;"&gt;'ms-dlgContent'&lt;/span&gt;)[0].previousSibling.style.height = dialogMaxHeight + &lt;span style="color:maroon;"&gt;'px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color:maroon;"&gt;'ms-dlgContent'&lt;/span&gt;)[0].style.height = dialogMaxHeight + 32 + &lt;span style="color:maroon;"&gt;'px'&lt;/span&gt;;&lt;br /&gt;    top.document.getElementsByClassName(&lt;span style="color:maroon;"&gt;'ms-dlgBorder'&lt;/span&gt;)[0].style.height = dialogMaxHeight + 32 + &lt;span style="color:maroon;"&gt;'px'&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:#006400;"&gt;//end issue fix&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks, Shai.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-9324870977872148?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-9324870977872148</guid>
         <pubDate>Tue, 29 Nov 2011 20:27:00 +0000</pubDate>
      </item>
      <item>
         <title>Redirect to custom error page from event handler</title>
         <link>http://kwizcom.blogspot.com/2011/11/redirect-to-custom-error-page-from.html</link>
         <description>&lt;p&gt;I’ve seen a lot of posts saying you can’t redirect to a custom error page from a SPItemEventReceiver in SharePoint 2007.&lt;/p&gt;  &lt;p&gt;In 2010, you can use Properties.RedirectUrl which will send you to a custom error page, instead of the OOB error page that displays your properties.ErrorMessage. this is simple enough, all you have to do is set properties.Cancel = true – and the custom redirect Url kicks in.&lt;/p&gt;  &lt;p&gt;But still, in 2007 this property does not exist, and in 2010 – you might want to have a custom redirect page and not cancel the event.&lt;/p&gt;  &lt;p&gt;Good news – it is all possible!&lt;/p&gt;  &lt;h3&gt;Redirecting&lt;/h3&gt;  &lt;p&gt;The way to do it, is to add some code to a sync event. Async events can’t help you since they are not guaranteed to run immediately, and they don’t have any user context when they execute…&lt;/p&gt;  &lt;p&gt;You can use the SPUtility.Redirect(PageUrl, SPRedirectFlags, HTTPContext); within your ItemAdding, ItemUpdating or ItemDeleting event handler to redirect your user to a custom page.&lt;/p&gt;  &lt;p&gt;This redirection kicks in and throws the “ThreadAbortException”, stopping the rest of your code from running and redirecting the user to your custom page.&lt;/p&gt;  &lt;p&gt;Few things to know:&lt;/p&gt;  &lt;p&gt;1. ThreadAbortException is a “catch me if you can” exception. you can put it in try…catch… block, but this exception will always bubble up and be thrown again and again. essentially, only the catch and finally code blocks will run after this exception is thrown. you can set “SPRedirectFlags.DoNotEndResponse” if you don’t want this exception to be thrown and it should still redirect at the end, but using SPRedirectFlags.Default will throw it.&lt;/p&gt;  &lt;p&gt;2. You may notice, that if you try using HTTPContext.Current in your event handler method – you will get a null context. So, the only way to get the HTTPContext.Current is in your event handler class constructor. save it as a member, and use it in your event handlers. DONT SAVE IT AS A STATIC MEMBER! Use any instance member (private/public/protected…) but don’t use a static member as you may run into unexpected trouble.&lt;/p&gt;  &lt;h3&gt;Cancelling the event&lt;/h3&gt;  &lt;p&gt;Now, we took care of redirecting, but it is good to remember that this on its own will not cancel the item event and it will still be updated/added/deleted.&lt;/p&gt;  &lt;p&gt;If you want to cancel the item event, you still have to do that using properties.Cancel = true.&lt;/p&gt;  &lt;p&gt;Since we talked about ThreadAbortException – now you know you have to put the SPUtility.Redirect code in a try block, and set the properties.Cancel in the catch block.&lt;/p&gt;  &lt;h3&gt;Code Example:&lt;/h3&gt;  &lt;p&gt;Your code should look like this:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;try&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    &lt;span style="color:#2b91af;"&gt;SPUtility&lt;/span&gt;.Redirect(&lt;span style="color:#a31515;"&gt;&amp;quot;/_layouts/KWizCom/AppError.aspx?ErMsg=&amp;quot; &lt;/span&gt;+ errMessage, &lt;span style="color:#2b91af;"&gt;SPRedirectFlags&lt;/span&gt;.DoNotEndResponse, currentContext);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:blue;"&gt;catch&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;    properties.ErrorMessage = errMessage;&lt;br /&gt;    properties.Cancel = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Good luck!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-3129226863028146289?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3129226863028146289</guid>
         <pubDate>Thu, 24 Nov 2011 15:52:00 +0000</pubDate>
      </item>
      <item>
         <title>כנס בנושא ניהול ידע וניהול מסמכים</title>
         <link>http://blogs.microsoft.co.il/blogs/efrat/archive/2011/11/17/934352.aspx</link>
         <description>שלום לכולם,&lt;br /&gt;
&lt;p&gt;אני אשתתף בוועידה המרכזית בנושא ניהול ידע וניהול מסמכים שתתקיים ב- 29.11 במרכז הכנסים, קסאנאדו, פתח תקווה.&lt;/p&gt;
&lt;p&gt;אני אדבר על יישום פורטל ארגוני בפלטפורמה של SharePoint Portal Server, על שלבי העבודה, על הקשיים, על ההצלחות והרבה דוגמאות מהשטח.&lt;/p&gt;
&lt;p&gt;בנוסף, אציג איך SPS מהווה כלי שניתן להשתמש בו לבניית תהליכים ומערכות כמעט מבלי לכתוב קוד.&lt;/p&gt;
&lt;p&gt;ההשתתפות אינה כרוכה בתשלום.&lt;/p&gt;
&lt;p&gt;הולך להיות מעניין.&lt;/p&gt;
&lt;p&gt;מי שרוצה יכול להירשם בקישור:&lt;/p&gt;
&lt;p align="left"&gt;&lt;a rel="nofollow" title="http://www.meda-conferences.com/index.php?option=com_mtree&amp;amp;task=viewlink&amp;amp;link_id=101&amp;amp;Itemid=14" target="_blank" href="http://www.meda-conferences.com/index.php?option=com_mtree&amp;amp;task=viewlink&amp;amp;link_id=101&amp;amp;Itemid=14"&gt;http://www.meda-conferences.com/index.php?option=com_mtree&amp;amp;task=viewlink&amp;amp;link_id=101&amp;amp;Itemid=14&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/efrat/Meda2011_2874E7F3.jpg"&gt;&lt;img style="BORDER-RIGHT-WIDTH:0px;DISPLAY:block;FLOAT:none;BORDER-TOP-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;MARGIN-LEFT:auto;BORDER-LEFT-WIDTH:0px;MARGIN-RIGHT:auto;" title="Meda2011" border="0" alt="Meda2011" src="http://blogs.microsoft.co.il/blogs/efrat/Meda2011_thumb_3DF4B7FF.jpg" width="597" height="467"/&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;להתראות,&lt;/p&gt;
&lt;p&gt;אפרת קרמר&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=934352" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:934352</guid>
         <pubDate>Thu, 17 Nov 2011 05:16:00 +0000</pubDate>
      </item>
      <item>
         <title>Developer's Guide: How to enhance your SharePoint performance - Understand Caching</title>
         <link>http://kwizcom.blogspot.com/2011/10/developers-guide-how-to-enhance-your.html</link>
         <description>I have just finished my presentation at SharePoint Saturday Twin Cities!&lt;br /&gt;
&lt;br /&gt;
I talked with developers and ITPro on how to enhance their SharePoint and SharePoint customization performance using some of the built in caching features, such as:&lt;br /&gt;
- BLOB cache&lt;br /&gt;
- Ghost files&lt;br /&gt;
- Object cache&lt;br /&gt;
- Page output cache&lt;br /&gt;
As well as other coding practices, such as:&lt;br /&gt;
- Query pagination&lt;br /&gt;
- Indexed columns&lt;br /&gt;
- Throttling&lt;br /&gt;
- Code cache in multi-threaded environment&lt;br /&gt;
&lt;br /&gt;
Here is the complete presentation, download to read comments in each slide:&lt;br /&gt;
&lt;div style="width:425px;" id="__ss_9939826"&gt;&lt;strong style="display:block;margin:12px 0 4px;"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.slideshare.net/shaibs/developers-guide-understand-caching" title="Developer&amp;#x002019;s guide understand caching"&gt;Developer’s guide understand caching&lt;/a&gt;&lt;/strong&gt;  &lt;div style="padding:5px 0 12px;"&gt;View more &lt;a rel="nofollow" target="_blank" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a rel="nofollow" target="_blank" href="http://www.slideshare.net/shaibs"&gt;Shai Petel&lt;/a&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-7566805813736225108?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7566805813736225108</guid>
         <pubDate>Sat, 29 Oct 2011 16:16:00 +0000</pubDate>
      </item>
      <item>
         <title>Moq, Callbacks and Out parameters: a particularly tricky edge case</title>
         <link>http://weblogs.asp.net/avnerk/archive/2011/10/07/moq-callbacks-and-out-parameters-a-particularly-tricky-edge-case.aspx</link>
         <description>&lt;p&gt;In my current project we’re using &lt;a rel="nofollow" target="_blank" href="http://code.google.com/p/moq"&gt;Moq&lt;/a&gt; as our mocking framework for unit testing. It’s a very nice package – very simple, very intuitive for someone who has his wrapped around basic mocking concepts, but tonight I ran into an annoying limitation that, while rare, impeded my tests considerably.&lt;/p&gt;  &lt;p&gt;Consider the following code:&lt;/p&gt;  &lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:567px;padding-right:5px;height:390px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  1: &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;interface&lt;/span&gt; IOut
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  3:    &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; DoOut (&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; outval);
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  4: }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  5: 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  6: [Test]
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  7: &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; TestMethod()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  8: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  9:   var mock = &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Mock&amp;lt;IOut&amp;gt;();
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 10:   &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; outVal = &amp;quot;&lt;span style="color:#8b0000;"&gt;&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 11:   mock.Setup(&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; =&amp;gt; &lt;span style="color:#0000ff;"&gt;out&lt;/span&gt;.DoOut(&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; outVal))
&lt;/pre&gt;&lt;pre style="background-color:#ffff00;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 12:       .Callback&amp;lt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&amp;gt;(theValue =&amp;gt; DoSomethingWithTheValue(theValue));
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 13: }&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;What this code SHOULD do is create a mock object for the IOut interface that, when called with an out parameter, both assigns a value to it, and does something with the value in the Callback. &lt;/p&gt;

&lt;p&gt;Unfortunately, this does not work.&lt;/p&gt;

&lt;p&gt;The reason it doesn’t work is that the Callback method has many overloads, but they are all to various variants of the Action&amp;lt;&amp;gt; delegate. Either Action&amp;lt;T1&amp;gt;, which receives one parameter, or to Action&amp;lt;T1, T2, T3&amp;gt;, which receives three. None of these support out parameters. But none of these delegates has a signature with an out parameter. The result, at runtime, would be an error to the effect of &lt;/p&gt;

&lt;p&gt;“Invalid callback parameters &amp;lt;&lt;font style="background-color:#ffff00;"&gt;string&lt;/font&gt;&amp;gt; on object ISetup&amp;lt;&lt;font style="background-color:#ffff00;"&gt;string&amp;amp;&lt;/font&gt;&amp;gt;”&lt;/p&gt;

&lt;p&gt;Note the highlighted bits – The Setup method referred to a string&amp;amp; (a ref/out param), while the Callback inferred an Action&amp;lt;string&amp;gt; delegate, which expectes a regular string param. &lt;/p&gt;

&lt;p&gt;So what CAN we do?&lt;/p&gt;

&lt;p&gt;The first option is submit a patch to the Moq project. It’s open-source, and a solution might be appreciated, especially since the project’s lead, Daniel Cazzulino, pretty much &lt;a rel="nofollow" target="_blank" href="https://groups.google.com/group/moqdisc/browse_thread/thread/4c7590e725151da9"&gt;acknowledged&lt;/a&gt; that this is not supported right now. I might do that later, but right now it’s the middle of the night and I just want my tests to pass. So I manage to hack together this workaround which does the trick:&lt;/p&gt;

&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:550px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  1: &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; MoqExtension
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  2: {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  3:    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;delegate&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OutAction&amp;lt;TOut&amp;gt; (&lt;span style="color:#0000ff;"&gt;out&lt;/span&gt; TOut outVal);   
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  4:    &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;static&lt;/span&gt; IReturnsThrows&amp;lt;TMock, TReturn&amp;gt; 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  5:                         OutCallback&amp;lt;TOut, TMock, TReturn&amp;gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  6:                                  (&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt; ICallback&amp;lt;TMock,T4&amp;gt; mock, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  7:                                   OutAction&amp;lt;TOut&amp;gt; action) 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  8:                                      where TMock : &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;  9:    {
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 10:       mock.GetType()
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 11:           .Assembly.GetType(&amp;quot;&lt;span style="color:#8b0000;"&gt;Moq.MethodCall&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 12:           .InvokeMember(&amp;quot;&lt;span style="color:#8b0000;"&gt;SetCallbackWithArguments&lt;/span&gt;&amp;quot;, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 13:                         BindingFlags.InvokeMethod 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 14:                             | BindingFlags.NonPublic 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 15:                             | BindingFlags.Instance, 
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 16:                         &lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;, mock, &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;[] {action});
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 17:       &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; mock &lt;span style="color:#0000ff;"&gt;as&lt;/span&gt; IReturnsThrows&amp;lt;TMock,TReturn&amp;gt;;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 18:    }
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt; 19: }&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;We’ve created a new delegate, OutAction&amp;lt;T&amp;gt;, that has &lt;em&gt;out T &lt;/em&gt;as its parameters, and we’ve added a new extension method to Moq, OutCallback, which we will use instead of Callback. What this extension method does is use brute-force Reflection to hack into Moq’s internals and call the SetCallbackWithArguments method, which registers the Callback with Moq. Yes, it even works. I’m as surprised as you are. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note and Caveats:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1) This code works for the very specific &lt;em&gt;void Function (out T) &lt;/em&gt;signature. You will have to tailor it to the specific methods you want to mock. To make it generic, we’ll have to create a bucket-load of OutAction overloads, with different combinations of out and regular parameters.&lt;/p&gt;

&lt;p&gt;2) This is &lt;em&gt;very&lt;/em&gt; hacky and &lt;em&gt;very&lt;/em&gt; fragile. If Moq’s inner implementation changes in a future version (the one I’m using is 4.0.10827.0), it will break.&lt;/p&gt;

&lt;p&gt;3) I don’t like using out params, usually, but this is a 3rd party library, so I have to work with what I got.&lt;/p&gt;

&lt;p&gt;Comments? Questions? Scathing criticisms on how ugly my code is? A different, simpler method of accomplishing this that I totally missed? Bring’em on.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7984695" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7984695</guid>
         <pubDate>Fri, 07 Oct 2011 00:16:03 +0000</pubDate>
      </item>
      <item>
         <title>מגמות וניהול ידע</title>
         <link>http://blogs.microsoft.co.il/blogs/efrat/archive/2011/09/25/905789.aspx</link>
         <description>&lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;העם דורש צדק חברתי! לא רחוק היום שהרחוב יחלחל למקומות העבודה.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;אנו רואים מגמה חוזרת ונשנית של תופעה מסוימת שמתרחשת בחיינו הפרטיים ואחרי תקופה מועתקת גם למקומות העבודה שלנו, קרי, לארגונים ולחברות השונות.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;ניתן לראות זאת בדוגמא הרשתות החברתיות שמעניינות את כולנו. &lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;לפני כשלוש שנים כשיצאו לאוויר העולם אתרי הרשתות החברתיות כמו Facebook, כולנו התלהבנו, נרשמנו, פתחנו פרופילים, התכתבנו אחד עם השני, שיתפנו, צחקנו וכל זאת עד עצם היום הזה וכנראה גם בעתיד.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;כל זה התנהל כל אחד בשטחו הפרטי, ב&amp;quot;כובע האישי&amp;quot; של כל אחד מאתנו, אבל לא התנהלנו כך במקום העבודה שלנו.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;במקום העבודה כלי המשחק שונים: אנו כפופים לנהלים ולהנחיות גם לגבי שיתוף הידע שלנו. אנו עובדים בתרבות ארגונית שברוב המקרים מאוד ברורה: אנו מדווחים למנהל הישיר שלנו ואנו משתפים ידע בד&amp;quot;כ את הקולגות שלנו לעבודה בצוות.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;הולכים ומתרבים הארגונים שמשכילים להבין כי יש לספק כלים לשימור וניהול הידע הארגוני, ואף מנהלים את השינוי הארגוני באמצעות כלים אלה כך שבאמת העובדים משתפים בידע שלהם. &lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;בתקופה האחרונה, תרבות הרשת החברתית גולשת גם למקומות העבודה. כבר מבחינת מוכנותם של הפלטפורמות הטכנולוגיות ניתן לראות כי היצרניות מוצאות גרסאות חדשות שמכילות יכולות התחברות לרשתות החברתיות, לדוגמא: SharePoint Portal Server 2010.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;בשלב זה במקום העבודה משכילים העובדים לנצל את חזקתה של המדיה הדיגיטאלית להפצת המידע.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;תרבות הרשתות החברתיות בשטח הפרטי משפיעה עלינו באופן אישי ואני מאמינה שגם תשפיע על התרבות הארגונית במקום העבודה.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;אם התחולל אצלנו במקום האישי שינוי ואנו מוכנים להיחשף יותר בחיינו הפרטיים, זה יעשה את שלו גם במקום העבודה. אנו נכונים להתחבר אל חברי העבר, אל חברי בית ספר היסודי, אל חברינו מתקופת הצבא וכו&amp;#39;. בפירוש ניתן לראות מגמת היחשפות ושיתוף. &lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;לא חסרות דוגמאות של חברויות שנוצרו ברשתות החברתיות והבשילו לכדי חברות מעבר לכך.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;יכול להיות שנעשינו חברותיים יותר?&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;מעניין מה יקרה הלאה?&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;שתהיה לכולנו שנה טובה, שגשוג, בריאות וכלכלה טובה.&lt;/font&gt;&lt;/p&gt;  &lt;p align="right"&gt;&lt;font color="#5f5f5f" size="2" face="Arial"&gt;,שלכם, אפרת קרמר&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=905789" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:905789</guid>
         <pubDate>Sun, 25 Sep 2011 13:15:45 +0000</pubDate>
      </item>
      <item>
         <title>Windows 8 Developer Preview!</title>
         <link>http://kwizcom.blogspot.com/2011/09/windows-8-developer-preview.html</link>
         <description>&lt;p&gt;Finally, My Lenovo tablet, x201, multi touch screen, will be more cool than my iPad!&lt;/p&gt;  &lt;p&gt;and that’s saying a lot!&lt;/p&gt;  &lt;p&gt;I just installed windows 8 on my hyper V, looks real nice.&lt;/p&gt;  &lt;p&gt;First impressions:&lt;/p&gt;  &lt;h2&gt;Login&lt;/h2&gt;  &lt;p&gt;First of all, logging in to windows is now done using your live ID login (email and password) and it promises to keep your desktop settings synced across all your PC’s.&lt;/p&gt;  &lt;p&gt;Login screen itself reminds me of a welcome screen on a smartphone:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-ZXkMn2uYiZw/TnIreJJ48uI/AAAAAAAAANY/OH9UiEyr0Do/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-6Yblv4REqXQ/TnIrff_ZZgI/AAAAAAAAANc/XH75kXcau-Y/image_thumb.png?imgmax=800" width="244" height="184"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nice, finally some info on the boring lock screen. didn't ask for much, clock and date will defiantly suffice.&lt;/p&gt;  &lt;h2&gt;The new Start menu&lt;/h2&gt;  &lt;p&gt;Logging in with my live id, gets me to the new start menu. Yeah – you heard me.   &lt;br /&gt;It feels like they took windows 7, build a huge new start menu, and hid windows desktop behind the start menu – and it looks and feels great!&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-Rylmn_QYPt8/TnIrgf-rntI/AAAAAAAAANg/cGO6v7IOOWs/s1600-h/image%25255B5%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-_h79e9Y8hrw/TnIrg-nbGUI/AAAAAAAAANk/CSaSw1wjB8M/image_thumb%25255B1%25255D.png?imgmax=800" width="244" height="137"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Build for wide screen displays, high res, and for touch – obviously!&lt;/p&gt;  &lt;p&gt;While in this mode, you work in a table or smartphone look and feel. Every app you open takes up the whole screen, so no more confusing display of many small windows. I guess, for the average user that is pretty good, while for work that might be less useful.&lt;/p&gt;  &lt;h3&gt;Start menu apps&lt;/h3&gt;  &lt;p&gt;The new internet explorer looks pretty amazing and works very well. check out this new “tiles” instead of tabs:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-_L6gU0hyzDg/TnIriGAEqFI/AAAAAAAAANo/zayWz-SYjSU/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-IiCPtRvPGHI/TnIriQiRkmI/AAAAAAAAANs/aDklYkUPZ9A/image_thumb%25255B2%25255D.png?imgmax=800" width="244" height="154"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;overall, the new UI with large buttons made for touch.&lt;/p&gt;  &lt;p&gt;This build ships with a built-in twitter application called &lt;a rel="nofollow" target="_blank" href="mailto:tweet@rama"&gt;tweet@rama&lt;/a&gt;, which might reminds you of something else already out there (pardon the blur, for protecting my info):&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh4.ggpht.com/-2j_HcGx4kjs/TnIrj3tmPWI/AAAAAAAAANw/QplHQO_5-AE/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-07Tqw6eo2kM/TnIrkenahCI/AAAAAAAAAN0/pbvIVwiFhOs/image_thumb%25255B4%25255D.png?imgmax=800" width="244" height="155"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Start menu UX&lt;/h3&gt;  &lt;p&gt;Another change you might notice while in this new menu, is that the windows key in your keyboard is now used to switching between you current active application and back to the menu. As mentioned before, you can only have one application opened at a time, and it works in full screen only, which honestly makes more sense to me and is much better user experience especially for non-developer users.&lt;/p&gt;  &lt;p&gt;I am sure this new UX will increase adaptability to the new system by the public who is now more and more used to smart phones.&lt;/p&gt;  &lt;h2&gt;And… Windows Desktop&lt;/h2&gt;  &lt;p&gt;One of the tiles in the start menu allows you to get to the original windows desktop mode:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-w7JhfFKz3JM/TnIrmLUS8TI/AAAAAAAAAN4/q7v6oSE5sUs/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-ejxPvQvbnTI/TnIrmvGyQLI/AAAAAAAAAN8/pY0IUA--j8o/image_thumb%25255B5%25255D.png?imgmax=800" width="244" height="154"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;reminds me of windows 7 so far, but – careful! clicking the start menu will not open a start menu as you know it, but will bring you back to the new start menu with the huge tiles we got on logon.&lt;/p&gt;  &lt;p&gt;task manager had a serious face lift as well, with a minimal view:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-5rrF-T9qQzw/TnIrnklI5sI/AAAAAAAAAOA/Kf3BayEypEs/s1600-h/image%25255B20%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-WYkL3VaRvNs/TnIroF9bBXI/AAAAAAAAAOE/aIDjHfMSxvM/image_thumb%25255B6%25255D.png?imgmax=800" width="243" height="244"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and&amp;#160; advanced views:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-kgv-AK_u3As/TnIroSih1GI/AAAAAAAAAOI/XNL3g2pImCU/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-vxZev_pg6Mc/TnIro_NQcEI/AAAAAAAAAOM/nPEdF1ypB5k/image_thumb%25255B7%25255D.png?imgmax=800" width="244" height="223"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-qlzVNhtcLQw/TnIrpVJ20TI/AAAAAAAAAOQ/pAEDfc5mRsw/s1600-h/image%25255B26%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-Dd3Mb_dDHko/TnIrpiifZ8I/AAAAAAAAAOU/QYQRGzDL2Xk/image_thumb%25255B8%25255D.png?imgmax=800" width="244" height="224"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-ZaH0h4Z1SPA/TnIrqMQKK9I/AAAAAAAAAOY/wLLg3VoC5p4/s1600-h/image%25255B29%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-evDO6lacemI/TnIrqlXncxI/AAAAAAAAAOc/s79cfL2EdyI/image_thumb%25255B9%25255D.png?imgmax=800" width="244" height="223"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Overall, super excited!&lt;/h2&gt;  &lt;p&gt;As a long time advocate of touch screens, and the owner of 3(!) windows based multi touch computers (2 laptops and 1 HT TouchSmart) I can safely say I have waited a long time for this, and Microsoft did not disappoint!&lt;/p&gt;  &lt;p&gt;To me, this is a huge breakthrough that will finally windows OS to lots of people, who can easily use a smart phone or and iPad but found the mouse-keyboard interaction a bit confusing.&lt;/p&gt;  &lt;p&gt;Ok, I know this type of posts is not typical for me, a non technical product eval type of post, but I guess I am just too much excited!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-220270787178273668?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-220270787178273668</guid>
         <pubDate>Thu, 15 Sep 2011 16:45:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/-6Yblv4REqXQ/TnIrff_ZZgI/AAAAAAAAANc/XH75kXcau-Y/s72-c/image_thumb.png?imgmax=800" width="72" />
      </item>
      <item>
         <title>Error: “value cannot be null parameter name publickey”</title>
         <link>http://kwizcom.blogspot.com/2011/09/error-value-cannot-be-null-parameter.html</link>
         <description>&lt;p&gt;I just had a very strange error message in my visual studio 2010 SharePoint project…&lt;/p&gt;  &lt;p&gt;When building the project everything goes well, but when packaging it or deploying it I got this error message:&lt;/p&gt;  &lt;p&gt;“value cannot be null parameter name publickey”&lt;/p&gt;  &lt;p&gt;Also, trying to open the package editor in visual studio to take a look at the “preview of packaged manifest” showed me the same error:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-Gg5AJ8Gvv-0/TmZ83WBh15I/AAAAAAAAANQ/DhOpSferFq4/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-cI427KJohF0/TmZ83-lT46I/AAAAAAAAANU/GyMcWnaE0go/image_thumb%25255B1%25255D.png?imgmax=800" width="650" height="384"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Google did not prove to be useful as I did not find anything close to this error message.&lt;/p&gt;  &lt;p&gt;Well, in the interest of saving you time, let me just say that after some search around the project I found that the strong name signing of my project was missing the signature file (SNK), which produced an unsigned DLL, and as such – I guess caused this issue with the package building.&lt;/p&gt;  &lt;p&gt;Hope this will at least save some time to anyone else out there,&lt;/p&gt;  &lt;p&gt;Happy SharePointing!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-2117589740470770540?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-2117589740470770540</guid>
         <pubDate>Tue, 06 Sep 2011 20:04:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/-cI427KJohF0/TmZ83-lT46I/AAAAAAAAANU/GyMcWnaE0go/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" width="72" />
      </item>
      <item>
         <title>WPF: Snooping Attached Properties</title>
         <link>http://weblogs.asp.net/avnerk/archive/2011/09/01/wpf-snooping-attached-properties.aspx</link>
         <description>When developing WPF applications, &lt;a rel="nofollow" target="_blank" href="http://snoopwpf.codeplex.com/"&gt;Snoop&lt;/a&gt; is a wonderful tool that can let us see our visual tree at runtime, and find errors in data binding that are otherwise hard to track down in debugging. However, Snoop has an annoying limitation – it can’t show us data-bound Attached Properties. Let’s say we have the following XAML:   &lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Canvas&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Canvas&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Left&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;{Binding Location.X}&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;           &lt;span style="color:#ff0000;"&gt;Canvas&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Top&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;{Binding Location.Y&amp;quot;&lt;/span&gt;}&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Canvas&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Snooping this application won’t show Canvas.Left and Canvas.Top among the Button’s properties, since they’re not a part of the Button object. If we have a bug in our binding, we won’t be able to find it.&lt;/p&gt;

&lt;p&gt;So what do we do? We can set various TraceLevel attributes to save the binding errors to a log, but a quick workaround during debugging is to bind our data, in addition to the attached properties, to the element’s Tag property, a generic &lt;em&gt;object&lt;/em&gt; that can bind to anything, and allow us to Snoop the binding – and find out any problems:&lt;/p&gt;

&lt;pre style="border-bottom:#cecece 1px solid;border-left:#cecece 1px solid;padding-bottom:5px;background-color:#fbfbfb;min-height:40px;padding-left:5px;width:650px;padding-right:5px;overflow:auto;border-top:#cecece 1px solid;border-right:#cecece 1px solid;padding-top:5px;"&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Canvas&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Button&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Canvas&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Left&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;{Binding Location.X}&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;           &lt;span style="color:#ff0000;"&gt;Canvas&lt;/span&gt;.&lt;span style="color:#ff0000;"&gt;Top&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;{Binding Location.Y}&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;           &lt;span style="color:#ff0000;"&gt;Tag&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;&amp;quot;{Binding Location}&amp;quot;&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas,;font-size:12px;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Canvas&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;This allowed me to find out, quickly, that my bug was simple – I had forgotten to make my Location property public, causing the binding to fail silently.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7935420" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7935420</guid>
         <pubDate>Thu, 01 Sep 2011 11:28:20 +0000</pubDate>
      </item>
      <item>
         <title>Accessing SharePoint Silverlight 4 API from outside of SharePoint</title>
         <link>http://kwizcom.blogspot.com/2011/06/accessing-sharepoint-silverlight-4-api.html</link>
         <description>&lt;p&gt;If you are like me, building Silverlight SharePoint components, you probably noticed that debugging Silverlight running from within a SharePoint solution is almost impossible!&lt;/p&gt;  &lt;p&gt;There are many settings to take care of, and you have to install and configure your server to allow debugging, honestly I gave up in the middle.&lt;/p&gt;  &lt;p&gt;Instead, I though, why not run the Silverlight application locally, and have it connect to the SharePoint API?&lt;/p&gt;  &lt;p&gt;Well, try that and you will be in to a little surprise.&lt;/p&gt;  &lt;p&gt;Any Microsoft.SharePoint.Client.Silverlight call you make will get you a System.Security.SecurityException: Security error.&lt;/p&gt;  &lt;p&gt;Not a lot of info there, but this is easy to fix and not documented well enough anywhere in all the Silverlight SharePoint development guides I looked at.&lt;/p&gt;  &lt;p&gt;The cause for this error, is that Silverlight blocks cross domain access by default, preventing applications from one domain to invoke requests from another domain, unless the remove domain explicitly allows it.&lt;/p&gt;  &lt;p&gt;To allow that call, Silverlight makes a request to the root of the remote server to read a configuration file named &lt;strong&gt;clientaccesspolicy.xml&lt;/strong&gt;, if this file does not exist – Silverlight checks for a flash configuration policy file instead (but lets focus on pure Silverlight 4 for now.)&lt;/p&gt;  &lt;p&gt;In order to allow cross domain requests to be executed, just put this configuration file in the root of your web application (next to the web.config file):&lt;/p&gt;  &lt;p&gt;file name: clientaccesspolicy.xml&lt;/p&gt; &lt;p&gt; &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;?&amp;gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;access-policy&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt; &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;cross-domain-access&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;policy&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;allow-from &lt;/span&gt;&lt;span style="color:red;"&gt;http-request-headers&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;   &lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;domain &lt;/span&gt;&lt;span style="color:red;"&gt;uri&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;*&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;   &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;allow-from&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;   &lt;br /&gt;   &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;grant-to&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;   &lt;br /&gt;    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;resource &lt;/span&gt;&lt;span style="color:red;"&gt;path&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;include-subpaths&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;   &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;grant-to&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;   &lt;br /&gt;  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;policy&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt; &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;cross-domain-access&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;access-policy&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Once you have this file, you should be able to run and debug your Silverlight application from anywhere, making it easy to debug your SharePoint Silverlight applications on either dev, testing or production servers!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Cheers, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-1881292430141326415?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-1881292430141326415</guid>
         <pubDate>Mon, 27 Jun 2011 20:42:00 +0000</pubDate>
      </item>
      <item>
         <title>Visual Studio 2010 find and replace window too wide</title>
         <link>http://kwizcom.blogspot.com/2011/06/visual-studio-2010-find-and-replace.html</link>
         <description>&lt;p&gt;Do you have that problem too?&lt;/p&gt;  &lt;p&gt;Every once in a while when you hit Ctrl+f the find and replace dialog is way too wide, growing and growing and does not fit your screen?&lt;/p&gt;  &lt;p&gt;Well, you are not alone.&lt;/p&gt;  &lt;p&gt;It seems that every time you close and open this window, it grow just a few pixel wider… So slowly and surly it become ridiculously wide forcing you to tame it, yet once again.&lt;/p&gt;  &lt;p&gt;This has become quite a familiar game for developers – but no more!&lt;/p&gt;  &lt;p&gt;Apparently this is a know issue with a fix available:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://support.microsoft.com/kb/2268081"&gt;http://support.microsoft.com/kb/2268081&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;good luck!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-2193079291574128538?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-2193079291574128538</guid>
         <pubDate>Wed, 01 Jun 2011 16:09:00 +0000</pubDate>
      </item>
      <item>
         <title>Web part functional specifications document template</title>
         <link>http://kwizcom.blogspot.com/2011/05/web-part-functional-specifications.html</link>
         <description>&lt;div&gt;&lt;div&gt;Hi&lt;/div&gt;&lt;div&gt;Following my last session at the &lt;a rel="nofollow" target="_blank" href="http://www.meetup.com/TSPBUG/"&gt;Toronto SharePoint Business user group&lt;/a&gt;, here's a link to &lt;a rel="nofollow" target="_blank" href="http://www.kwizcom.com/objects/designDocs/SharePoint_web_part_functional_specifications_document.docx"&gt;web part functional specifications document template&lt;/a&gt; I've mentioned there.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;The purpose of this template is to help SharePoint business analysts to make sure they fully cover all functional aspects when designing a custom developed web part.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Please feel free to comment. &lt;/div&gt;&lt;div&gt;Coming soon: SharePoint site functional specifications template.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Cheers&lt;/div&gt;&lt;div&gt;Nimrod&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-1299183553622572112?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Nimrod Geva)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-1299183553622572112</guid>
         <pubDate>Tue, 31 May 2011 03:33:00 +0000</pubDate>
      </item>
      <item>
         <title>Setting default value to column in document library</title>
         <link>http://kwizcom.blogspot.com/2011/05/setting-default-value-to-column-in.html</link>
         <description>&lt;p&gt;Hi,&lt;/p&gt;  &lt;h2&gt;One question I hear a lot from developers and system designers is “How can I set a default value to a column in a document library”?&lt;/h2&gt;  &lt;p&gt;The same goes for form libraries in SharePoint, Apparently SharePoint does not support default values for document libraries.&lt;/p&gt;  &lt;p&gt;The first thing that comes to mind, as a solution for this predicament, is to build an event handler that will set a default value to the fields you need whenever a new item (document) is added to the library.&lt;/p&gt;  &lt;p&gt;An experienced developer will tell you you should use the &lt;strong&gt;ItemAdding&lt;/strong&gt; event, in order to set the default values to the field during the same update that the user initiated, and under his credentials.&lt;/p&gt;  &lt;p&gt;To do that, you will have to use the &lt;strong&gt;properties.AfterProperties[&amp;quot;FieldName&amp;quot;] = “Default Value”;&lt;/strong&gt; to set your value.&lt;/p&gt;  &lt;p&gt;But – you will be surprised that document libraries, although they do support the &lt;strong&gt;ItemAdding&lt;/strong&gt; event, do not support &lt;strong&gt;properties.AfterProperties&lt;/strong&gt; use. This collection is always empty and ignored in document libraries!&lt;/p&gt;  &lt;p&gt;So, the only solution to set a default value to a field in a document library is by using the &lt;strong&gt;ItemAdded&lt;/strong&gt; event.&lt;/p&gt;  &lt;p&gt;During this event, the &lt;strong&gt;SPListItem&lt;/strong&gt; was already created and is accessible through &lt;strong&gt;properties.ListItem&lt;/strong&gt; property (unlike &lt;strong&gt;ItemAdding&lt;/strong&gt;, that happens before the item was created).&lt;/p&gt;  &lt;p&gt;So, setting the field should be rather easy: &lt;strong&gt;properties.ListItem[“FieldName”] = “Default value”;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;But you will have to update the file manually yourself, since this happens after SharePoint has already processed the update of the item.&lt;/p&gt;  &lt;p&gt;Naturally, you will not want to update the modified date/time, modified by user, and also you will not want to create a new version or emails alerts to be sent out.&lt;/p&gt;  &lt;p&gt;So, instead of using the &lt;strong&gt;properties.ListItem.Update()&lt;/strong&gt; method, use these lines of code:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.DisableEventFiring();&lt;br /&gt;properties.ListItem.SystemUpdate(&lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.EnableEventFiring();&lt;/pre&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Or the SharePoint 2010 code equivalent:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.EventFiringEnabled = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;&lt;br /&gt;properties.ListItem.SystemUpdate(&lt;span style="color:blue;"&gt;false&lt;/span&gt;);&lt;br /&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.EventFiringEnabled = &lt;span style="color:blue;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This will allow you to use custom code and programmatically set a default value to any SharePoint library column. Note that the same code should also work for SharePoint Lists, but this is supported through the UI or during the &lt;strong&gt;ItemAdding&lt;/strong&gt; event.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;For those of you who are not developers, or would rather a 3rd party solution, you can use &lt;a rel="nofollow" target="_blank" href="http://www.kwizcom.com/sharepoint-add-ons/sharepoint-list-forms-extensions-feature/overview/"&gt;KWizCom List Forms Extension solution&lt;/a&gt; version 2.1.60 or higher, where you can find a settings page that allows you to set advanced default values using this workaround.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-7670309602186409574?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7670309602186409574</guid>
         <pubDate>Mon, 30 May 2011 21:32:00 +0000</pubDate>
      </item>
      <item>
         <title>Recruiting senior developers</title>
         <link>http://kwizcom.blogspot.com/2011/05/recruiting-senior-developers.html</link>
         <description>&lt;p&gt;Hi all,&lt;/p&gt;  &lt;p&gt;Just an FYI, KWizCom is recruiting senior SharePoint developers to it’s R&amp;amp;D product development team.&lt;/p&gt;  &lt;p&gt;We are looking for skilled and experienced developers in the greater Toronto area.&lt;/p&gt;  &lt;p&gt;Your experience:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;At least 3 years of developing on Microsoft SharePoint platforms. 2010 experience is an advantage&lt;/li&gt;    &lt;li&gt;required skills: C#, ASP.NET, Javascript, jQuery, AJAX, DHTML, Web services, TFS, XML/CAML&lt;/li&gt;    &lt;li&gt;nice to have: Silverlight, JSON, XSLT, SharePoint Designer, MS Office, workflow foundation, BDC/BCS/BizTalk, Hyper-V&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Your responsibilities:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Work within tight delivery dates&lt;/li&gt;    &lt;li&gt;Work in small, highly professional team&lt;/li&gt;    &lt;li&gt;Be a part of the product lifecycle, attend brainstorming meetings, have a real impact on the product features and UX&lt;/li&gt;    &lt;li&gt;Work in a highly creative environment&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Although there is a work from home option, you will be required to attend meetings at our office, located at Markham Ontario, so we are looking for local candidates.&lt;/p&gt;  &lt;p&gt;If you are up to it and would like to come in for an interview, please email me your CV to shai at kwizcom dot com.&lt;/p&gt;  &lt;p&gt;Thanks!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-8491298208106931501?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8491298208106931501</guid>
         <pubDate>Tue, 24 May 2011 17:11:00 +0000</pubDate>
      </item>
      <item>
         <title>Promoting user profile changes into local site user profile</title>
         <link>http://kwizcom.blogspot.com/2011/05/promoting-user-profile-changes-into.html</link>
         <description>&lt;p&gt;Here is a problem that I faced more then once, with no proper way to resolve it so far…&lt;/p&gt;  &lt;p&gt;User changes his email address or display name in his user profile using his mysite’s profile update page, but the changes are not updated in all the site collections where this user is a member of.&lt;/p&gt;  &lt;p&gt;Display name, email settings – nothing!&lt;/p&gt;  &lt;p&gt;Online doc’s and research says you can use the “STSADM –o sync” command, but it never helped me in those cases where it didn’t work in the first place.&lt;/p&gt;  &lt;p&gt;The only other solution I found was to delete the user from the site collection (which removes all his permissions) and add it again. But this is unacceptable for most users.&lt;/p&gt;  &lt;p&gt;Recently I stumbled upon this tool in codeplex by Berry Cohen:    &lt;br /&gt;&lt;a rel="nofollow" title="http://userprofilesync.codeplex.com/" target="_blank" href="http://userprofilesync.codeplex.com/"&gt;http://userprofilesync.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;while his code was for SharePoint 2007, I needed it on my 2010 machine, so I upgraded it to 2010 and shared the new build in the codeplex page.&lt;/p&gt;  &lt;p&gt;I have yet to determine if there are any side effects to using this tool, but so far it seems to be working with no problems!&lt;/p&gt;  &lt;p&gt;It actually creates the fields in the user profile list for the site collection, which in turn allows me to even edit and modify it directly there.&lt;/p&gt;  &lt;p&gt;Only note is, for production farms – use with caution! (and also, for production farms if you have that problem I would investigate it rather than using a workaround).&lt;/p&gt;  &lt;p&gt;I was sorry to hear that Berry’s experience with SharePoint was short, and hope to have you back among our lines soon!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-2216658233939126021?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-2216658233939126021</guid>
         <pubDate>Fri, 20 May 2011 13:44:00 +0000</pubDate>
      </item>
      <item>
         <title>PageComponent code example for SharePoint Ribbon</title>
         <link>http://kwizcom.blogspot.com/2011/05/pagecomponent-code-example-for.html</link>
         <description>&lt;p&gt;I get a lot of requests lately to share my example for a simple generic PageComponent JavaScript object (class) that can handle ribbon events.&lt;/p&gt;  &lt;p&gt;The was it works is simple, I will probably blog about it in more details later on but in a nutshell there are 3 client side objects that are involved with the ribbon work on the page:&lt;/p&gt;  &lt;p&gt;1. &lt;strong&gt;PageManager&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;One object that have a collection of all &lt;strong&gt;PageComponent&lt;/strong&gt; objects&lt;strong&gt;&amp;#160;&lt;/strong&gt;for the &lt;strong&gt;CommandDispatcher &lt;/strong&gt;to be able to work with them&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;2. &lt;strong&gt;CommandDispatcher&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The only object that handles ribbon events. Any action that happens on the ribbon sends the &lt;strong&gt;CommandName&lt;/strong&gt; of the associated event to the &lt;strong&gt;CommandDispatcher&lt;/strong&gt;. In turn, the &lt;strong&gt;CommandDispatcher&lt;/strong&gt; goes to all available &lt;strong&gt;PageComponent&lt;/strong&gt; objects and ask each one of them if the can handle that command, and if they do – it asks them to handle the command, thus invoking their command handlers.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;3. Collection of &lt;strong&gt;PageComponent&lt;/strong&gt; objects&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;PageComponent&lt;/strong&gt; object are client side script classes that inherit from &lt;strong&gt;CUI.Page.PageComponent&lt;/strong&gt; (yes, JavaScript class that inherits from a base class!). They declare a collection of &lt;strong&gt;CommandName&lt;/strong&gt; strings of commands they know how to handle and are sometimes associated with a control on the page (web part, field control etc), and when ever such a command is invoked the &lt;strong&gt;CommandDispatcher&lt;/strong&gt; asks them if they can currently handle that command, and if yes – it asks them to handle it. There is no limit to the number of &lt;strong&gt;PageComponent&lt;/strong&gt; objects on the page, or to the number of &lt;strong&gt;PageComponent&lt;/strong&gt; that handles a specific commands. You can also handle commands from OOB ribbon controls, and does not have to be the creator of that ribbon control.      &lt;br /&gt;Note: If a command has no &lt;strong&gt;PageComponent&lt;/strong&gt; that can handle it, the control associated with it will be disabled (button, group) except for a tab that does not have to have a command associated with it.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is an example of a page component that I start from, feel free to take it and use it, it is very similar to the example available on MSDN with a bit more explanations:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:#006400;"&gt;//See documentation in page component: http://msdn.microsoft.com/en-us/library/ff407303.aspx&lt;br /&gt;//TODO: choose namespace like you would in .NET applications. Use company name, project name and module name to avoid conflicts&lt;br /&gt;&lt;/span&gt;Type.registerNamespace(&lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent'&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006400;"&gt;//Create the object&lt;br /&gt;&lt;/span&gt;Company.Project.Ribbon.PageComponent = &lt;span style="color:blue;"&gt;function &lt;/span&gt;(PageComponentId) {&lt;br /&gt;    &lt;span style="color:blue;"&gt;this&lt;/span&gt;._pageComponentId = PageComponentId;&lt;span style="color:#006400;"&gt;//keep record of associated control (web part, field control, etc..) that is active in this current instance of page component.&lt;br /&gt;    //Initializes the base type CUI.Page.PageComponent (Base class is associated through Type.registerClass(Type, BaseType)&lt;br /&gt;    &lt;/span&gt;Company.Project.Ribbon.PageComponent.initializeBase(&lt;span style="color:blue;"&gt;this&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006400;"&gt;//Declate it's prototype&lt;br /&gt;&lt;/span&gt;Company.Project.Ribbon.PageComponent.prototype =&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//This will be initialized by caller (web part, field control etc)&lt;br /&gt;    &lt;/span&gt;_pageComponentId: &lt;span style="color:maroon;"&gt;&amp;quot;PageComponentIDHolder&amp;quot;&lt;/span&gt;,&lt;br /&gt;&lt;br /&gt;    getId: &lt;span style="color:blue;"&gt;function &lt;/span&gt;() {&lt;br /&gt;        &lt;span style="color:blue;"&gt;return this&lt;/span&gt;._pageComponentId;&lt;br /&gt;    },&lt;br /&gt;    init: &lt;span style="color:blue;"&gt;function &lt;/span&gt;() {&lt;br /&gt;        &lt;span style="color:#006400;"&gt;//Create a list of commands that your page component can handle (JSON string array).&lt;br /&gt;        //TODO: edit this collection, these are the command names you wish to handle from the ribbon controls you are listening to.&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;._myCommandList = [&lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.CMD1'&lt;/span&gt;,&lt;br /&gt;                &lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.CMD2'&lt;/span&gt;,&lt;br /&gt;                &lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.CMD3'&lt;/span&gt;];&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#006400;"&gt;//Create an array of methods used to handle commands passed to the page component.&lt;br /&gt;        //Use Function.createDelegate to keep current class instance (this) when the method is called.&lt;br /&gt;        //TODO: add handler per command in this._myCommandList. Later on - you will have to create the actual script handler method.&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;._myHandledCommands = {};&lt;br /&gt;        &lt;span style="color:blue;"&gt;this&lt;/span&gt;._myHandledCommands[&lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.CMD1'&lt;/span&gt;] = Function.createDelegate(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:blue;"&gt;this&lt;/span&gt;.CMD1_Handler);&lt;br /&gt;        &lt;span style="color:blue;"&gt;this&lt;/span&gt;._myHandledCommands[&lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.CMD2'&lt;/span&gt;] = Function.createDelegate(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:blue;"&gt;this&lt;/span&gt;.NotImplemented);&lt;br /&gt;        &lt;span style="color:blue;"&gt;this&lt;/span&gt;._myHandledCommands[&lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.CMD3'&lt;/span&gt;] = Function.createDelegate(&lt;span style="color:blue;"&gt;this&lt;/span&gt;, &lt;span style="color:blue;"&gt;this&lt;/span&gt;.NotImplemented);&lt;br /&gt;    },&lt;br /&gt;    getFocusedCommands: &lt;span style="color:blue;"&gt;function &lt;/span&gt;() {&lt;br /&gt;        &lt;span style="color:blue;"&gt;return this&lt;/span&gt;._myCommandList; &lt;span style="color:#006400;"&gt;//return supported commands collection&lt;br /&gt;    &lt;/span&gt;},&lt;br /&gt;    getGlobalCommands: &lt;span style="color:blue;"&gt;function &lt;/span&gt;() {&lt;br /&gt;        &lt;span style="color:blue;"&gt;return this&lt;/span&gt;._myCommandList; &lt;span style="color:#006400;"&gt;//return supported commands collection&lt;br /&gt;    &lt;/span&gt;},&lt;br /&gt;    canHandleCommand: &lt;span style="color:blue;"&gt;function &lt;/span&gt;(commandId) {&lt;br /&gt;        &lt;span style="color:#006400;"&gt;//TODO: In our logic, if there is a handler we can handle the command.&lt;br /&gt;        //But you might have more logic here, like: if commandId = DeleteItem - can handle only if there is 1 item selected.&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;canHandle = &lt;span style="color:blue;"&gt;this&lt;/span&gt;._myHandledCommands[commandId];&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(canHandle)&lt;br /&gt;            &lt;span style="color:blue;"&gt;return true&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color:blue;"&gt;else&lt;br /&gt;            return false&lt;/span&gt;;&lt;br /&gt;    },&lt;br /&gt;    handleCommand: &lt;span style="color:blue;"&gt;function &lt;/span&gt;(commandId, properties, sequence) {&lt;br /&gt;        &lt;span style="color:#006400;"&gt;//Handle the command - simply getting the command handler (delegate) form the hash table and invoking it.&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;return this&lt;/span&gt;._myHandledCommands[commandId](commandId, properties, sequence);&lt;br /&gt;    },&lt;br /&gt;    isFocusable: &lt;span style="color:blue;"&gt;function &lt;/span&gt;() {&lt;br /&gt;        &lt;span style="color:blue;"&gt;return true&lt;/span&gt;;&lt;br /&gt;    },&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~&lt;br /&gt;    //=~=~ CUSTOM PAGE COMPONENT LOGIC STARTS HERE ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~&lt;br /&gt;    //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~&lt;br /&gt;    //    This is where you should add your custom script hadler methods.&lt;br /&gt;    //    TODO: Implement each handler in this._myHandledCommands&lt;br /&gt;    //&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;CMD1_Handler: &lt;span style="color:blue;"&gt;function &lt;/span&gt;(commandId, properties, sequence) {&lt;br /&gt;        alert(&lt;span style="color:maroon;"&gt;&amp;quot;Handling CMD1_Handler&amp;quot;&lt;/span&gt;);&lt;br /&gt;    },&lt;br /&gt;    NotImplemented: &lt;span style="color:blue;"&gt;function &lt;/span&gt;(commandId, properties, sequence) {&lt;br /&gt;        alert(&lt;span style="color:maroon;"&gt;&amp;quot;This command was not implemented yet&amp;quot;&lt;/span&gt;);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//&lt;br /&gt;    //&lt;br /&gt;    //&lt;br /&gt;    //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~&lt;br /&gt;    //=~=~ CUSTOM PAGE COMPONENT LOGIC ENDS HERE ~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~&lt;br /&gt;    //=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006400;"&gt;//This makes our object inherit of CUI.Page.PageComponent&lt;br /&gt;&lt;/span&gt;Company.Project.Ribbon.PageComponent.registerClass(&lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent'&lt;/span&gt;, CUI.Page.PageComponent)&lt;br /&gt;&lt;span style="color:#006400;"&gt;//Execute pending operations waiting for this script to be loaded.&lt;br /&gt;&lt;/span&gt;NotifyScriptLoadedAndExecuteWaitingJobs(&lt;span style="color:maroon;"&gt;&amp;quot;Company.Project.Ribbon.PageComponent.js&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So, now that we implemented our PageComponent, all we need is to create an instance and register is with the PageManager using this code that makes sure all JS files were fully loaded:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;function &lt;/span&gt;init2() {&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//All JS files were loaded - create instance and register it.&lt;br /&gt;    &lt;/span&gt;&lt;span style="color:blue;"&gt;var &lt;/span&gt;instance = &lt;span style="color:blue;"&gt;new &lt;/span&gt;Company.Project.Ribbon.PageComponent(&lt;span style="color:maroon;"&gt;&amp;quot;ComponentID&amp;quot;&lt;/span&gt;);&lt;br /&gt;    SP.Ribbon.PageManager.get_instance().addPageComponent(instance);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;function &lt;/span&gt;init1() {&lt;br /&gt;    &lt;span style="color:#006400;"&gt;//Wait for ribbon JS to load&lt;br /&gt;    &lt;/span&gt;ExecuteOrDelayUntilScriptLoaded(init2, &lt;span style="color:maroon;"&gt;'sp.ribbon.js'&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;span style="color:#006400;"&gt;//Wait for our JS to load&lt;br /&gt;&lt;/span&gt;ExecuteOrDelayUntilScriptLoaded(init1, &lt;span style="color:maroon;"&gt;'Company.Project.Ribbon.PageComponent.js'&lt;/span&gt;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I hope this helps you when you are implementing your custom ribbon solutions, or if you need to handle an existing ribbon command in addition to its OOB logic.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Note: to replace an OOB logic of a ribbon command there are other steps you need to take, I will try blogging about it soon as well.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Thanks, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-5579169016024306734?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-5579169016024306734</guid>
         <pubDate>Fri, 06 May 2011 22:18:00 +0000</pubDate>
      </item>
      <item>
         <title>A little bit about me…</title>
         <link>http://kwizcom.blogspot.com/2011/04/little-bit-about-me.html</link>
         <description>&lt;p&gt;This is just a little update about my certifications - for those of you who are interested…&lt;/p&gt;&lt;p&gt;On April 1st I have:&lt;/p&gt;&lt;p&gt;1. Renewed my MCT (since 2007)&lt;/p&gt;&lt;p&gt;2. Renewed my MCTS SharePoint to 2010 version (was 2003 before…)&lt;/p&gt;&lt;p&gt;3. Achieved MCPD: SharePoint Developer 2010&lt;/p&gt;&lt;p&gt;4. And I was awarded the MVP: SharePoint Server award!&lt;/p&gt;&lt;p&gt;(Really excited about that last one!)&lt;/p&gt;&lt;p align="center"&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/_TWHHFUIBngE/TZ9VLFvi6II/AAAAAAAAALQ/FA4VK8mU1RI/s1600-h/MVP_FullColor_ForScreen_0.35%5B6%5D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="MVP_FullColor_ForScreen_0.35" border="0" alt="MVP_FullColor_ForScreen_0.35" src="http://lh3.ggpht.com/_TWHHFUIBngE/TZ9VLhm9UrI/AAAAAAAAALU/pqX9sL9Rpus/MVP_FullColor_ForScreen_0.35_thumb%5B4%5D.png?imgmax=800" width="128" height="202"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-8012144254308494826?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8012144254308494826</guid>
         <pubDate>Fri, 08 Apr 2011 18:34:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh3.ggpht.com/_TWHHFUIBngE/TZ9VLhm9UrI/AAAAAAAAALU/pqX9sL9Rpus/s72-c/MVP_FullColor_ForScreen_0.35_thumb%5B4%5D.png?imgmax=800" width="72" />
      </item>
      <item>
         <title>FxCop: Properties should not return arrays</title>
         <link>http://kwizcom.blogspot.com/2011/03/fxcop-properties-should-not-return.html</link>
         <description>&lt;p&gt;Did you run FxCop and it reported a “Performance” issue regarding “Properties should not return arrays”?&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" title="http://msdn.microsoft.com/en-us/library/0fss9skc(v=VS.100).aspx" target="_blank" href="http://msdn.microsoft.com/en-us/library/0fss9skc(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/0fss9skc(v=VS.100).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Well, don’t be in a hurry to fix it just yet.&lt;/p&gt;  &lt;p&gt;Microsoft claims that this may pose a performance issue, since developers “must return a copy of the array”, which will cause a performance issue when accessing this property excessively (like via an indexer, in a loop)&lt;/p&gt;  &lt;p&gt;They go on later to recommend changing this property into a method, to make it clear for the developer who is using it that he is better off calling the method once and storing it in a local member, rather then using the indexer on the property itself, Or change the property type into a collection. There is even an example at the end of the page of converting the array into a collection, which “resolves” this “performance” issue.&lt;/p&gt;  &lt;p&gt;Let me give you a few points to think about before complying to this rule:&lt;/p&gt;  &lt;p&gt;1. Properties do not serve the same purpose as methods. If you need to serialize this class, a property would be serialized while a method would not – resulting in loss of data upon serialization. This is extremely important when talking about web part properties. Even changing the property into a read only collection will not help, as XmlSerializer will throw an exception on that property.&lt;/p&gt;  &lt;p&gt;2. An array does not serve the same functionality as a collection. Especially when reflecting it, or serializing it for use later (JSON serialize / SOAP serialize in web service for example).&lt;/p&gt;  &lt;p&gt;3. If you have an existing web part that uses an array as property, DONT CHANGE IT! you cannot change it’s type, nor change it into a method! Doing so will break all your existing web parts in all pages and you will have to remove them and re-configure them, page by page. This goes to web parts, but also to any serialized content you have of existing code.&lt;/p&gt;  &lt;p&gt;4. Speaking of performance issue, the author assumes that *if* you build the array on every get_Property access this will have negative performance. But – why would you do that? In most you just return a private array member, which does not affect performance at all.&lt;/p&gt;  &lt;p&gt;5. Even more, by implementing the resolution suggested and converting into a collection, performance will have a far worst negative implication! Working with arrays is with no doubt the fastest way of working with a collection in .NET! It is faster than any other collection type, including Generic collections, in every possible way.   &lt;br /&gt;Consider a simple “for” loop, using “items[i]” &amp;lt;—an array will beat any collection any time, any place!&lt;/p&gt;  &lt;p&gt;So, by suggesting to fix a non-existent “performance” issue, you actually cause a much greater real “performance” issue on your application.&lt;/p&gt;  &lt;p&gt;What I don’t understand is, this rule has been there since 2006 with many people posting comments on its validity, Why is it still out there?&lt;/p&gt;  &lt;p&gt;The worst thing about it, with Microsoft SharePoint online hosting, they require your to fix all of these warnings on your code. How can this be a requirement if this is clearly a design consideration and not a clear-cut case of issue to be fixed?&lt;/p&gt;  &lt;p&gt;I would suggest you take any tool (FxCop or any other automated tool) as suggestion only, and use your own discretion on when or if to apply these rules.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-8674797078955347059?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-8674797078955347059</guid>
         <pubDate>Fri, 25 Mar 2011 14:56:00 +0000</pubDate>
      </item>
      <item>
         <title>Resources From My Session At SharePoint Extreme Event</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/03/23/resources-from-my-session-at-sharepoint-extreme-event.aspx</link>
         <description>&lt;div style="text-align:right;direction:rtl;"&gt;&lt;p&gt;שלום לכולם,&lt;/p&gt;    &lt;p&gt;בתאריך 22.3.11 העברתי בכנס SharePoint Extreme ‘הרצאה בנושא שיפור ביצועים באתרי SharePoint.&lt;/p&gt;    &lt;p&gt;תודה לכל מי שהשתתף, ותודה לירון ורועי מתבונה-מילניום שארגנו את המסלול.&lt;/p&gt;    &lt;p&gt;מצורפת המצגת שהעברתי. שימו לב שבחלק הערות (Notes) של כל שקופית יש קישורים רלוונטיים.&lt;/p&gt;    &lt;p&gt;&lt;a rel="nofollow" title="http://cid-3d176b702454b41b.office.live.com/view.aspx/blog/SPE%20-%20SharePoint%202010%20Performance.pptx" target="_blank" href="http://cid-3d176b702454b41b.office.live.com/view.aspx/blog/SPE%20-%20SharePoint%202010%20Performance.pptx"&gt;http://cid-3d176b702454b41b.office.live.com/view.aspx/blog/SPE%20-%20SharePoint%202010%20Performance.pptx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=813626" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9j8MTyG4VDj7op9qz__y0kt98KI/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:813626</guid>
         <pubDate>Wed, 23 Mar 2011 19:30:50 +0000</pubDate>
      </item>
      <item>
         <title>I Will Be Speaking at SharePoint Extreme Event</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/03/20/i-will-be-speaking-at-sharepoint-extreme-event.aspx</link>
         <description>&lt;div style="text-align:right;direction:rtl;"&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/israel/sharepointExtreme/Default.aspx"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;float:left;border-top:0px;border-right:0px;padding-top:0px;" title="SharePoint_Extreme" border="0" alt="SharePoint_Extreme" align="left" src="http://blogs.microsoft.co.il/blogs/itaysk/SharePoint_Extreme_12C25FC8.jpg" width="244" height="57"/&gt;   &lt;/a&gt;בתאריך 22.3.11 עד 24.3.11 יתקיים כנס SharePoint Extreme - שלושה ימים של סדנאות והרצאות שכולן על SharePoint.&lt;/p&gt;    &lt;p&gt;אני אעביר סשן ביום הראשון של הכנס, 22.3, יום שלישי, על ניתוח ושיפור ביצועים של אתרי SharePoint.      &lt;br /&gt;ההרצאה שלי תארך כ 45 דקות, ותסקור את הכלים והשיטות שמסייעים למדוד ולשפר ביצועים באתר SharePoint.&lt;/p&gt;    &lt;p&gt;ההרצאה היא חלק ממסלול “צעדים ראשונים בבניית אתר אינטרנט מבוסס SharePoint 2010” אותו מוביל ירון בן שלום מחברת תבונה-מילניום.&lt;/p&gt;    &lt;p&gt;לפרטים והרשמה:      &lt;br /&gt;&lt;a rel="nofollow" title="http://www.microsoft.com/israel/sharepointExtreme/Default.aspx" target="_blank" href="http://www.microsoft.com/israel/sharepointExtreme/Default.aspx"&gt;http://www.microsoft.com/israel/sharepointExtreme/Default.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;ההרשמה כרוכה בתשלום.&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=811089" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/C6oY0R5u9nhpZwprKwmZWlAJJx0/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:811089</guid>
         <pubDate>Sun, 20 Mar 2011 18:22:19 +0000</pubDate>
      </item>
      <item>
         <title>Parser Error – SharePoint crash after deployment</title>
         <link>http://kwizcom.blogspot.com/2011/03/parser-error-sharepoint-crash-after.html</link>
         <description>&lt;p&gt;Today I run into a strange problem.&lt;/p&gt;  &lt;p&gt;I build a new version of a product and installed it – and it crashed my entire SharePoint:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/_TWHHFUIBngE/TW1THS6YGDI/AAAAAAAAALI/0vn5UK4s-nQ/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_TWHHFUIBngE/TW1TH2SnAqI/AAAAAAAAALM/wcpp9SOCmBA/image_thumb%5B2%5D.png?imgmax=800" width="644" height="346"/&gt;&lt;/a&gt; Now, I want to say that this does not happen often, but I fear it does… :)&lt;/p&gt;  &lt;p&gt;The error reads:&lt;/p&gt;  &lt;h4&gt;&lt;i&gt;Parser Error&lt;/i&gt;&lt;/h4&gt; &lt;b&gt;Description: &lt;/b&gt;An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.   &lt;br /&gt;&lt;b&gt;Parser Error Message: &lt;/b&gt;This page has encountered a critical error. Contact your system administrator if this problem persists.  &lt;p&gt;&lt;b&gt;Source Error:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;pre&gt;Line 1:  &amp;lt;%@ Page Inherits=&amp;quot;Microsoft.SharePoint.Publishing.TemplateRedirectionPage,Microsoft.SharePoint.Publishing,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt; &amp;lt;%@ Reference VirtualPath=&amp;quot;~TemplatePageUrl&amp;quot; %&amp;gt; &amp;lt;%@ Reference VirtualPath=&amp;quot;~masterurl/custom.master&amp;quot; %&amp;gt;&lt;br /&gt;Line 2:  &amp;lt;html xmlns:mso=&amp;quot;urn:schemas-microsoft-com:office:office&amp;quot; xmlns:msdt=&amp;quot;uuid:C2F41010-65B3-11d1-A29F-00AA00C14882&amp;quot;&amp;gt;&amp;lt;head&amp;gt;&lt;br /&gt;Line 3:  &amp;lt;!--[if gte mso 9]&amp;gt;&amp;lt;xml&amp;gt;&lt;/pre&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Source File: &lt;/b&gt;/Pages/Default.aspx&lt;b&gt;&amp;#160;&amp;#160;&amp;#160; Line: &lt;/b&gt;1 &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Well, I started investigating this strange error message…&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The weird thing was, all my SharePoint sites reported this error &lt;strong&gt;except&lt;/strong&gt; for central administration – which worked just fine!&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After a short research I noticed in SharePoint Log this strange message, that my web part DLL was throwing an exception that it could not load a referenced file: Microsoft.SharePoint.ApplicationPages.Administration&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Well… this makes sense, since this file only exists in central administration app_bin folder.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Things started to come together. All I had done wrong was to use this dll in my code, since I had some code that was running in central admin (settings page)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Well, as soon as I removed it from my references everything started working again.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now I have to find another way to create a settings page, since GlobalAdminPageBase base class (for central admin settings pages) is something I cannot use.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Either that or I will have to separate my settings page into another DLL (which I prefer not to do)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Well, if you get this error message – be sure to check SharePoint logs and make sure you are not using this dll!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-3337326789257756837?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3337326789257756837</guid>
         <pubDate>Tue, 01 Mar 2011 20:12:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/_TWHHFUIBngE/TW1TH2SnAqI/AAAAAAAAALM/wcpp9SOCmBA/s72-c/image_thumb%5B2%5D.png?imgmax=800" width="72" />
      </item>
      <item>
         <title>List.DefaultView is null ?</title>
         <link>http://kwizcom.blogspot.com/2011/02/listdefaultview-is-null.html</link>
         <description>&lt;p&gt;I bet many of you fall for this one… I know I did.&lt;/p&gt;  &lt;p&gt;You got a SPList object, you want to get the default view, or the default view name, so you write:&lt;/p&gt;  &lt;p&gt;list.DefaultView.Title&lt;/p&gt;  &lt;p&gt;You never even bother to check if DefaultView is null or not, right? Because it doesnt make sense…&lt;/p&gt;  &lt;p&gt;Well, I had a customer who did something crazy.&lt;/p&gt;  &lt;p&gt;He created a redirection page inside a list forms folder, and marked it as the default view for the list using SharePoint Designer 2007.&lt;/p&gt;  &lt;p&gt;* You will be glad to hear that in SharePoint Designer 2010 this is not possible anymore :)&lt;/p&gt;  &lt;p&gt;Well, from this point on, calling the list.DefaultView object returns null, which made our code fail since we didn’t think of checking if there is a valid default view for the list.&lt;/p&gt;  &lt;p&gt;So, a lesson to be learned: never trust anyone in SharePoint!&lt;/p&gt;  &lt;p&gt;A quick fix I did for it is to see if list.DefaultView is null, and if so, to loop through all list views and get the first valid view.&lt;/p&gt;  &lt;p&gt;Here is the code I used:&lt;/p&gt; &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;internal static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SPView &lt;/span&gt;GetSafeListDefaultView(&lt;span style="color:#2b91af;"&gt;SPList &lt;/span&gt;list, &lt;span style="color:blue;"&gt;string &lt;/span&gt;hideViews)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:blue;"&gt;if &lt;/span&gt;(list.DefaultView != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;                &lt;span style="color:blue;"&gt;return &lt;/span&gt;list.DefaultView;&lt;br /&gt;            &lt;span style="color:blue;"&gt;else&lt;/span&gt;&lt;span style="color:green;"&gt;&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;SPView &lt;/span&gt;view &lt;span style="color:blue;"&gt;in &lt;/span&gt;list.Views)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color:blue;"&gt;if &lt;/span&gt;(&lt;br /&gt;                            view.Hidden ||&lt;br /&gt;                            &lt;span style="color:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(view.Title.Trim()) ||&lt;br /&gt;                        &lt;span style="color:green;"&gt;//Explorer View or subject view in discussion - allow subject views.&lt;br /&gt;                            &lt;/span&gt;(view.BaseViewID == &lt;span style="color:#a31515;"&gt;&amp;quot;3&amp;quot; &lt;/span&gt;&amp;amp;&amp;amp; view.ContentTypeId.ToString() == &lt;span style="color:#a31515;"&gt;&amp;quot;0x&amp;quot;&lt;/span&gt;) ||&lt;br /&gt;                            (hideViews.IndexOf(&lt;span style="color:#a31515;"&gt;&amp;quot;;&amp;quot; &lt;/span&gt;+ view.Title.ToLower() + &lt;span style="color:#a31515;"&gt;&amp;quot;;&amp;quot;&lt;/span&gt;) &amp;gt;= 0) ||&lt;br /&gt;                        &lt;span style="color:green;"&gt;//reply views in discussion board&lt;br /&gt;                            &lt;/span&gt;(list.BaseTemplate == &lt;span style="color:#2b91af;"&gt;SPListTemplateType&lt;/span&gt;.DiscussionBoard &amp;amp;&amp;amp; !view.ContentTypeId.ToString().StartsWith(&lt;span style="color:#a31515;"&gt;&amp;quot;0x012001&amp;quot;&lt;/span&gt;))&lt;br /&gt;                        )&lt;br /&gt;                        &lt;span style="color:blue;"&gt;continue&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;                    &lt;span style="color:blue;"&gt;return &lt;/span&gt;view;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Could not get a safe default view for this list: &amp;quot; &lt;/span&gt;+ list.Title);&lt;br /&gt;        }&lt;/pre&gt;&lt;p&gt;So from now on,&amp;#160; I will use this method to get the list default view, and never again trust the list.DefaultView property, which may be null.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;By the way, the proper way to do what the customer wanted is to change the &lt;strong&gt;list.RootFolder.WelcomePage&lt;/strong&gt; to the redirection page he created. Changing the default view is not the best idea, and I am not sure if it is supported.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Cheers, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-7795990404272944358?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-7795990404272944358</guid>
         <pubDate>Wed, 23 Feb 2011 18:40:00 +0000</pubDate>
      </item>
      <item>
         <title>Assembly redirection in OWSTimer</title>
         <link>http://kwizcom.blogspot.com/2011/02/assembly-redirection-in-owstimer.html</link>
         <description>&lt;p&gt;You may have read my &lt;a rel="nofollow" target="_blank" href="http://kwizcom.blogspot.com/2010/08/assembly-redirection-in-wsp.html"&gt;older post&lt;/a&gt; on how to add BindingRedirect for assemblies into web.config in SharePoint, which allows you to change the DLL version number of your SharePoint customizations.&lt;/p&gt;  &lt;p&gt;One thing I did not mention was, what if you need to use one of these redirected DLL’s in an SPTimerJob?&lt;/p&gt;  &lt;p&gt;You will notice that assembly BindingRedirect does not apply to OWSTimer.exe, and it will throw errors such as “Could not load file or assembly 'AssmeblyName, Version=1.2.60.0, Culture=neutral, PublicKeyToken=xxxxxxxxx' or one of its dependencies. The system cannot find the file specified”, while you alraedy have a newer version deployed.&lt;/p&gt;  &lt;p&gt;So, how do I make OWSTimer.exe aware of the new version and have my SPTimerJobs running with the latest version every time?&lt;/p&gt;  &lt;h2&gt;First, we need to understand why this doesn’t work.&lt;/h2&gt;  &lt;p&gt;Timer jobs run from OWSTimer.exe file, which is not effected by the web.config settings, so our BindingRedirect in web.config file will not help our code to find the correct assembly when running of the OWSTimer.exe file.&lt;/p&gt;  &lt;h2&gt;Now, for the solution&lt;/h2&gt;  &lt;p&gt;The bad news are that although a WSP natively allows you to add BindingRedirect to your web.config, it does not allow the same for other config files.&lt;/p&gt;  &lt;p&gt;So, we need to do this manually.&lt;/p&gt;  &lt;p&gt;Not to fear though! There is a rather simple way of doing that, still within the WSP with no need to come out of the WSP deployment.&lt;/p&gt;  &lt;p&gt;It is a little know fact, that a farm feature event handler, with the “FeatureInstalled” event will have 2 special effects:&lt;/p&gt;  &lt;p&gt;1. It will run for each web front end server, and not only on one of them&lt;/p&gt;  &lt;p&gt;2. It will allow sufficient access to add files to the SharePoint Root.&lt;/p&gt;  &lt;p&gt;Just make sure you do not edit / remove any of the out of the box files!&lt;/p&gt;  &lt;p&gt;Well, taking this into consideration makes our problem a very simple one to solve.&lt;/p&gt;  &lt;p&gt;We just need to create a config file for OWSTimer.exe and add our BindingRedirect statements there, and that’s it – the OWSTimer will know which version of our DLL to look for.&lt;/p&gt;  &lt;p&gt;Here is a code example on how to add or update 2 BindingRedirect nodes in that config file, the same method can apply to any other config file during WSP deployment stage:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public void &lt;/span&gt;UpdateOWSTimerBindingRedirect()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color:blue;"&gt;try&lt;br /&gt;    &lt;/span&gt;{&lt;br /&gt;        &lt;span style="color:blue;"&gt;string &lt;/span&gt;configFile = &lt;span style="color:#2b91af;"&gt;SPUtility&lt;/span&gt;.GetGenericSetupPath(&lt;span style="color:#a31515;"&gt;&amp;quot;TEMPLATE&amp;quot;&lt;/span&gt;).ToLower().Replace(&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;#92;&amp;#92;template&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;#92;&amp;#92;bin&amp;quot;&lt;/span&gt;) + &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;#92;&amp;#92;OWSTIMER.EXE.CONFIG&amp;quot;&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color:green;"&gt;//string XMLData = System.IO.File.ReadAllText(configFile, Encoding.UTF8);&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlDocument &lt;/span&gt;config = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlDocument&lt;/span&gt;();&lt;br /&gt;        config.Load(configFile);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:green;"&gt;//ensure assemblyBinding exists&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlNode &lt;/span&gt;assemblyBinding = config.SelectSingleNode(&lt;span style="color:#a31515;"&gt;&amp;quot;configuration/runtime/*[local-name()='assemblyBinding' and namespace-uri()='urn:schemas-microsoft-com:asm.v1']&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(assemblyBinding == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            assemblyBinding = config.CreateNode(&lt;span style="color:#2b91af;"&gt;XmlNodeType&lt;/span&gt;.Element, &lt;span style="color:#a31515;"&gt;&amp;quot;assemblyBinding&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;urn:schemas-microsoft-com:asm.v1&amp;quot;&lt;/span&gt;);&lt;br /&gt;            config.SelectSingleNode(&lt;span style="color:#a31515;"&gt;&amp;quot;configuration/runtime&amp;quot;&lt;/span&gt;).AppendChild(assemblyBinding);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:green;"&gt;//Delete old entrees if exist&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlElement &lt;/span&gt;current = assemblyBinding.FirstChild &lt;span style="color:blue;"&gt;as &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color:blue;"&gt;while &lt;/span&gt;(current != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color:#2b91af;"&gt;XmlElement &lt;/span&gt;elmToRemove = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;br /&gt;            &lt;span style="color:blue;"&gt;if &lt;/span&gt;(current.FirstChild != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color:blue;"&gt;var &lt;/span&gt;asmIdn = (current.FirstChild &lt;span style="color:blue;"&gt;as &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt;);&lt;br /&gt;                &lt;span style="color:blue;"&gt;if &lt;/span&gt;(asmIdn.GetAttribute(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;).ToLower().Equals(&lt;span style="color:#a31515;"&gt;&amp;quot;kwizcom.sharepoint.foundation&amp;quot;&lt;/span&gt;) ||&lt;br /&gt;                    asmIdn.GetAttribute(&lt;span style="color:#a31515;"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;).ToLower().Equals(&lt;span style="color:#a31515;"&gt;&amp;quot;kwizcom.foundation&amp;quot;&lt;/span&gt;))&lt;br /&gt;                    elmToRemove = current;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            current = current.NextSibling &lt;span style="color:blue;"&gt;as &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;XmlElement&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color:blue;"&gt;if &lt;/span&gt;(elmToRemove != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;br /&gt;                assemblyBinding.RemoveChild(elmToRemove);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color:#2b91af;"&gt;XmlElement &lt;/span&gt;dependentAssembly = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;span style="color:green;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(dependentAssembly == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;span style="color:green;"&gt;//create it&lt;br /&gt;        &lt;/span&gt;{&lt;br /&gt;            dependentAssembly = config.CreateElement(&lt;span style="color:#a31515;"&gt;&amp;quot;dependentAssembly&amp;quot;&lt;/span&gt;);&lt;br /&gt;            dependentAssembly.InnerXml = &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;assemblyIdentity name=&amp;#92;&amp;quot;KWizCom.SharePoint.Foundation&amp;#92;&amp;quot; publicKeyToken=&amp;#92;&amp;quot;30fb4ddbec95ff8f&amp;#92;&amp;quot; culture=&amp;#92;&amp;quot;neutral&amp;#92;&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt;+&lt;br /&gt;                                         &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;bindingRedirect oldVersion=&amp;#92;&amp;quot;1.0.0.0-20.0.0.00&amp;#92;&amp;quot; newVersion=&amp;#92;&amp;quot;13.2.62.0&amp;#92;&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            assemblyBinding.AppendChild(dependentAssembly);&lt;br /&gt;        }&lt;br /&gt;&lt;span style="color:green;"&gt;&lt;br /&gt;        &lt;/span&gt;dependentAssembly = &lt;span style="color:blue;"&gt;null&lt;/span&gt;;&lt;span style="color:green;"&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color:blue;"&gt;if &lt;/span&gt;(dependentAssembly == &lt;span style="color:blue;"&gt;null&lt;/span&gt;)&lt;span style="color:green;"&gt;//create it&lt;br /&gt;        &lt;/span&gt;{&lt;br /&gt;            dependentAssembly = config.CreateElement(&lt;span style="color:#a31515;"&gt;&amp;quot;dependentAssembly&amp;quot;&lt;/span&gt;);&lt;br /&gt;            dependentAssembly.InnerXml = &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;assemblyIdentity name=&amp;#92;&amp;quot;KWizCom.Foundation&amp;#92;&amp;quot; publicKeyToken=&amp;#92;&amp;quot;30fb4ddbec95ff8f&amp;#92;&amp;quot; culture=&amp;#92;&amp;quot;neutral&amp;#92;&amp;quot; /&amp;gt;&amp;quot; &lt;/span&gt;+&lt;br /&gt;                                         &lt;span style="color:#a31515;"&gt;&amp;quot;&amp;lt;bindingRedirect oldVersion=&amp;#92;&amp;quot;1.0.0.0-20.0.0.00&amp;#92;&amp;quot; newVersion=&amp;#92;&amp;quot;13.2.62.0&amp;#92;&amp;quot; /&amp;gt;&amp;quot;&lt;/span&gt;;&lt;br /&gt;            assemblyBinding.AppendChild(dependentAssembly);&lt;br /&gt;        }&lt;br /&gt; &lt;span style="color:green;"&gt;&lt;br /&gt;        &lt;/span&gt;config.LoadXml(config.OuterXml.Replace(&lt;span style="color:#a31515;"&gt;&amp;quot;xmlns=&amp;#92;&amp;quot;&amp;#92;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;span style="color:#a31515;"&gt;&amp;quot;&amp;quot;&lt;/span&gt;));&lt;br /&gt;        config.Save(configFile);&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color:blue;"&gt;catch &lt;/span&gt;{ }&lt;br /&gt;}&lt;/pre&gt;&lt;style type="text/css"&gt;&lt;/style&gt;&lt;p&gt;Simply call this method during the FeatureInstalled event and update the code with your DLL name and version number, and you are done. &lt;br /&gt;  &lt;br /&gt;Hope this helps you with file versioning on SharePoint, which can be a rather difficult task sometimes.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Thanks, Shai.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-2182335931960112865?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-2182335931960112865</guid>
         <pubDate>Tue, 22 Feb 2011 22:53:00 +0000</pubDate>
      </item>
      <item>
         <title>Adding print functionality to Data View Web Parts</title>
         <link>http://kwizcom.blogspot.com/2011/02/adding-print-functionality-to-data-view.html</link>
         <description>Hi,&lt;br /&gt;
A question I got from a customer today was “How can I add a print button to data view web part which will print all documents in the view?”&lt;br /&gt;
&lt;br /&gt;
Well, we have a product called iMUSH Print that allows you to print selected items/document from out of the box list views, and merge them into one PDF file for easy printing.&lt;br /&gt;
&lt;br /&gt;
But the question remains, how do one connects this print functionality to a data view web part?&lt;br /&gt;
&lt;br /&gt;
Well, lists or libraries, the answer is simple and took me about an hour to create a working POC.&lt;br /&gt;
First, lets have a look at out of the box iMUSH print feature in standard library view:&lt;br /&gt;
&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/_TWHHFUIBngE/TVq3YpeZCJI/AAAAAAAAAKg/t_7ShQ4ZfB0/s1600-h/image%5B4%5D.png"&gt;&lt;img alt="image" border="0" height="416" src="http://lh5.ggpht.com/_TWHHFUIBngE/TVq3ZBrCMJI/AAAAAAAAAKk/34VAkr29ojM/image_thumb%5B2%5D.png?imgmax=800" style="border-bottom:0px;border-left:0px;border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;margin-right:auto;" title="image" width="644"/&gt;&lt;/a&gt; &lt;br /&gt;
One thing to note, is that you can either use the checkboxes to select items for printing or click the print menu and select what you wish to print in the popup:&lt;br /&gt;
&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/_TWHHFUIBngE/TVq3ZuHZ8cI/AAAAAAAAAKo/aE3yVPVb4ho/s1600-h/image%5B8%5D.png"&gt;&lt;img alt="image" border="0" height="244" src="http://lh6.ggpht.com/_TWHHFUIBngE/TVq3Z1cQ9cI/AAAAAAAAAKs/aTTWEBjKJls/image_thumb%5B4%5D.png?imgmax=800" style="border-bottom:0px;border-left:0px;border-right:0px;border-top:0px;display:block;float:none;margin-left:auto;margin-right:auto;" title="image" width="230"/&gt;&lt;/a&gt;&lt;br /&gt;
Ok, so obviously, this popup “knows” how to get a list of items for print. We will use this parameter to send the items form the DVWP.&lt;br /&gt;
Now, to the DVWP in SharePoint Designer:&lt;br /&gt;
2 changes are needed in the DVWP,&lt;br /&gt;
&lt;br /&gt;
1. Add a print button HTML just before the &amp;lt;table&amp;gt; tag of the DVWP items:&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="background-color:#f4f4f4;border-bottom:silver 1px solid;border-left:silver 1px solid;border-right:silver 1px solid;border-top:silver 1px solid;cursor:text;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin:20px 0px 10px;max-height:200px;overflow:auto;padding-bottom:4px;padding-left:4px;padding-right:4px;padding-top:4px;text-align:left;width:97.5%;"&gt;&lt;div id="codeSnippet" style="background-color:#f4f4f4;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;img&lt;/span&gt; &lt;span style="color:red;"&gt;alt&lt;/span&gt;&lt;span style="color:blue;"&gt;="print"&lt;/span&gt; &lt;span style="color:red;"&gt;src&lt;/span&gt;&lt;span style="color:blue;"&gt;="/_layouts/KWizCom_iMushFeature/ico_imush_print_16px.png"&lt;/span&gt;&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:red;"&gt;onclick&lt;/span&gt;&lt;span style="color:blue;"&gt;="KWizCom_DoDVWPPrint('/iMUSH/_layouts/KWizCom_iMushFeature/KWizComPrintList.aspx',&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;'567836FC-F9B1-4D48-80AC-D637772703D4', '', this.nextSibling);"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;you will need to replace the url “/iMUSH/” with your real site URL, and the list id ‘5678…’ with your actual list/library GUID.&lt;br /&gt;
&lt;br /&gt;
2. Locate the &amp;lt;tr&amp;gt; tag inside your DVWP items table, and add an “itemid” attribute to it:&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="background-color:#f4f4f4;border-bottom-color:silver;border-bottom-style:solid;border-bottom-width:1px;border-left-color:silver;border-left-style:solid;border-left-width:1px;border-right-color:silver;border-right-style:solid;border-right-width:1px;border-top-color:silver;border-top-style:solid;border-top-width:1px;cursor:text;direction:ltr;margin-bottom:10px;margin-left:0px;margin-right:0px;margin-top:20px;max-height:200px;padding-bottom:4px;padding-left:4px;padding-right:4px;padding-top:4px;text-align:left;width:97.5%;"&gt;&lt;div id="codeSnippet" style="background-color:#f4f4f4;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin:0em;overflow:visible;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;tr&lt;/span&gt; &lt;span style="color:red;"&gt;itemid&lt;/span&gt;&lt;span style="color:blue;"&gt;="{@ID}"&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
That’s it for the DVWP.&lt;br /&gt;
&lt;br /&gt;
Next you will have to add some javascript code to your page, anywhere in the page.&lt;br /&gt;
My favourite way about it is just adding a content editor web part.&lt;br /&gt;
Just insert this JS code:&lt;br /&gt;
&lt;div id="codeSnippetWrapper" style="background-color:#f4f4f4;border-bottom-color:silver;border-bottom-style:solid;border-bottom-width:1px;border-left-color:silver;border-left-style:solid;border-left-width:1px;border-right-color:silver;border-right-style:solid;border-right-width:1px;border-top-color:silver;border-top-style:solid;border-top-width:1px;cursor:text;direction:ltr;margin-bottom:10px;margin-left:0px;margin-right:0px;margin-top:20px;max-height:200px;padding-bottom:4px;padding-left:4px;padding-right:4px;padding-top:4px;text-align:left;width:97.5%;"&gt;&lt;div id="codeSnippet" style="background-color:#f4f4f4;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&amp;lt;script&amp;gt;&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;function&lt;/span&gt; KWizCom_DoDVWPPrint(pageUrl, listId, viewId, dvwpTable)&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;{&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;    var&lt;/span&gt; url = pageUrl + &lt;span style="color:#006080;"&gt;"?ListId="&lt;/span&gt; + listId + &lt;span style="color:#006080;"&gt;"&amp;amp;View="&lt;/span&gt; + viewId + &lt;span style="color:#006080;"&gt;"&amp;amp;ItemId="&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span style="color:green;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;    &lt;/span&gt;//get items from dvwp&lt;/span&gt;&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;    var&lt;/span&gt; items = &lt;span style="color:#006080;"&gt;""&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span style="color:blue;"&gt;    for&lt;/span&gt;(&lt;span style="color:blue;"&gt;var&lt;/span&gt; i = 0; i &amp;lt; dvwpTable.rows.length; i++)&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;white-space:pre;"&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;(dvwpTable.rows[i].itemid != undefined)&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;    &lt;/span&gt;{&lt;/pre&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;white-space:pre;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;white-space:pre;"&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;if&lt;/span&gt;( items != &lt;span style="color:#006080;"&gt;""&lt;/span&gt; ) items += &lt;span style="color:#006080;"&gt;","&lt;/span&gt;;&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;    &lt;/span&gt;items += dvwpTable.rows[i].itemid;&lt;/pre&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;   &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color:blue;white-space:pre;"&gt;    &lt;/span&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;    &lt;/span&gt;url += items;&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span class="Apple-style-span" style="color:blue;"&gt;    &lt;/span&gt;commonShowModalDialog(url,&lt;/span&gt;&lt;/div&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:#006080;"&gt;'dialogHeight:300px;dialogWidth:180px;scroll:true;toolbar:no;status:no;resizable:yes;'&lt;/span&gt;,&lt;/span&gt;&lt;/div&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&lt;span style="color:blue;"&gt;null&lt;/span&gt;, &lt;span style="color:blue;"&gt;null&lt;/span&gt;);&lt;/span&gt;&lt;/div&gt;&lt;pre style="background-color:white;border-bottom-style:none;border-left-style:none;border-right-style:none;border-top-style:none;color:black;direction:ltr;font-family:courier, monospace;font-size:8pt;line-height:12pt;margin-bottom:0em;margin-left:0em;margin-right:0em;margin-top:0em;padding-bottom:0px;padding-left:0px;padding-right:0px;padding-top:0px;text-align:left;width:100%;"&gt;}&lt;/pre&gt;&lt;div style="color:black;"&gt;&lt;span class="Apple-style-span" style="white-space:pre;"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
and you are done!&lt;br /&gt;
&lt;br /&gt;
Now, you can click print on the DVWP to print all items that are displayed in the web part, even after filtering but the user:&lt;br /&gt;
&lt;br /&gt;
&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/_TWHHFUIBngE/TVq3aFXzMbI/AAAAAAAAAKw/3WSbF_q4Do4/s1600-h/image%5B13%5D.png"&gt;&lt;br /&gt;
&lt;img alt="image" border="0" src="http://lh3.ggpht.com/_TWHHFUIBngE/TVq3ahSaEmI/AAAAAAAAAK0/aEw4GgsOQes/image_thumb%5B7%5D.png?imgmax=800" title="image"/&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
That’s it!&lt;br /&gt;
&lt;br /&gt;
Just remember, this functionality requires a license for iMUSH Print.&lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-3119677635991703205?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-3119677635991703205</guid>
         <pubDate>Tue, 15 Feb 2011 17:27:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh5.ggpht.com/_TWHHFUIBngE/TVq3ZBrCMJI/AAAAAAAAAKk/34VAkr29ojM/s72-c/image_thumb%5B2%5D.png?imgmax=800" width="72" />
      </item>
      <item>
         <title>Joining The Mothership</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/02/15/joining-the-mothership.aspx</link>
         <description>&lt;p&gt;Short Summary for English speaking readers: I’m Joining Microsoft, no longer MVP.&lt;/p&gt;  &lt;div style="text-align:right;direction:rtl;"&gt;   &lt;p&gt;חברים וחברות יקרים, אני שמח לבשר על הצטרפותי לחברת מיקרוסופט.&lt;/p&gt;    &lt;p&gt;לאחר תקופה נהדרת שבה הקדשתי את כל כולי עבורכם – קהילת SharePoint הישראלית - הדרך מובילה אותי קדימה אל מיקרוסופט.      &lt;br /&gt;אני אשתדל להמשיך ולתרום, להשפיע ולעזור, כפי שעשיתי עד כה. עם זאת, חלק מהפעילויות אותן ביצעתי, יצטרכו לעבור לידי אחרים (עוד בנושא הזה בהמשך). אם אתם מעוניינים להשפיע על קהילת SharePoint הישראלית, &lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/itaysk/contact.aspx"&gt;צרו איתי קשר&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;איתי שקורי.&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=788694" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/48h8kC_ekDQnMVTpyp_lJVp_PY8/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:788694</guid>
         <pubDate>Tue, 15 Feb 2011 08:30:38 +0000</pubDate>
      </item>
      <item>
         <title>Map folder in SharePoint Root</title>
         <link>http://kwizcom.blogspot.com/2011/02/map-folder-in-sharepoint-root.html</link>
         <description>&lt;p&gt;I am sure many of you needed from time to time to get a local path to a file that was deployed to the SharePoint Root (AKA Hive in 2007 version, AKA “12” folder AKA “14” folder).&lt;/p&gt;&lt;p&gt;For whatever reason you needed to do so, you probably notices that the ASP.NET API (Server.MapPath) or any other ASP.NET method of discovering the local path for a file or folder did not work out as excepted.&lt;/p&gt;&lt;p&gt;Without going into a long explanation on why that did not work, There is a very little documented method that I have used a lot in the past and I have learned not many developer know it.&lt;/p&gt;&lt;p&gt;The SPUtility class contains a static method named “GetGenericSetupPath” that takes one string parameter.&lt;/p&gt;&lt;p&gt;That string parameter can be any folder under the SharePoint Root folder, and the result of the method is the local file system path of that folder.&lt;/p&gt;&lt;p&gt;For example, to get the local path for “Template” folder, use this command:   &lt;br /&gt;
SPUtility.GetGenericSetupPath(&amp;quot;Template&amp;quot;);&lt;/p&gt;&lt;p&gt;But to get the “Layouts” folder, you have to use this command:   &lt;br /&gt;
SPUtility.GetGenericSetupPath(&amp;quot;Template&amp;#92;&amp;#92;LAYOUTS&amp;quot;);&lt;/p&gt;&lt;p&gt;Now, saying that – you have to keep in mind that although you do have read permissions to these folders while inside a SharePoint APP, other permissions (like create file, or create folders) may be blocked.&lt;/p&gt;&lt;p&gt;Cheers,&lt;/p&gt;&lt;p&gt;Shai.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-133461837495079451?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-133461837495079451</guid>
         <pubDate>Thu, 03 Feb 2011 18:40:00 +0000</pubDate>
      </item>
      <item>
         <title>How to identify a Ribbon control ID</title>
         <link>http://kwizcom.blogspot.com/2011/02/how-to-identify-ribbon-control-id.html</link>
         <description>&lt;p&gt;A frequent question I get during my “How to develop for the SharePoint Ribbon” session is:&lt;/p&gt;  &lt;p&gt;How can I identify and existing ribbon control or group ID?&lt;/p&gt;  &lt;p&gt;This is useful when you wish to override, hide a control, or insert new controls into an existing group / new groups into an existing tab.&lt;/p&gt;  &lt;p&gt;So, this task is pretty simple once you know this trick:&lt;/p&gt;  &lt;p&gt;First, open a page and make your ribbon control visible:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/_TWHHFUIBngE/TUgIG2q2AeI/AAAAAAAAAKI/s3cbsUGKiLs/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_TWHHFUIBngE/TUgIHZnaeQI/AAAAAAAAAKM/LGmx-HaTpJc/image_thumb.png?imgmax=800" width="244" height="85"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Second, use IE developer tool bar to select the ribbon button you want:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/_TWHHFUIBngE/TUgIIEQJD6I/AAAAAAAAAKQ/23OJFSY6Gs4/s1600-h/image%5B5%5D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_TWHHFUIBngE/TUgIIWz_HBI/AAAAAAAAAKU/nJhUYEO-p9I/image_thumb%5B1%5D.png?imgmax=800" width="244" height="242"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Climb up the HTML to the span container, the span ID will have the ribbon control ID:&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/_TWHHFUIBngE/TUgIIzi_RBI/AAAAAAAAAKY/Ssy13OVhFSk/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_TWHHFUIBngE/TUgIJcwiAqI/AAAAAAAAAKc/mwavRSM7x1k/image_thumb%5B2%5D.png?imgmax=800" width="244" height="49"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In my case, for the wiki page “email a link” here is what we get:&lt;/p&gt;  &lt;p&gt;Ribbon.WikiPageTab.Share-LargeLarge-0-0&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;So, the control ID will be:&lt;/p&gt;  &lt;p&gt;“Ribbon.WikiPageTab.Share”&lt;/p&gt;  &lt;p&gt;And there you go!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/KwizcomSharepointBlog"&gt;RSS&lt;/a&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/691739770978360344-6815894195413058729?l=kwizcom.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Shai Petel)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-691739770978360344.post-6815894195413058729</guid>
         <pubDate>Tue, 01 Feb 2011 13:18:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/_TWHHFUIBngE/TUgIHZnaeQI/AAAAAAAAAKM/LGmx-HaTpJc/s72-c/image_thumb.png?imgmax=800" width="72" />
      </item>
      <item>
         <title>SharePoint Group–1/11</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2011/01/06/sharepoint-group-1-11.aspx</link>
         <description>&lt;div style="text-align:right;direction:rtl;"&gt;&lt;p&gt;שלום לכולם,&lt;/p&gt;    &lt;p&gt;מפגש ראשון של השנה החדשה יתקיים בתאריך ה &lt;strong&gt;23/01/2011&lt;/strong&gt;. את המפגש יעבירו יוני תורג’מן ואלכס לויטין מחברת גארדיאן.&lt;/p&gt;    &lt;p&gt;שימו לב, חובה להרשם על מנת להשתתף באירוע ולקבל חניה בבניין.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;תיאור המפגש:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;במפגש זה נעסוק בכל נושא העבודה מול ממשק ה-UI של SharePoint 2010. המפגש יתחלק לשלושה חלקים:      &lt;br /&gt;&lt;strong&gt;1&lt;/strong&gt;. &lt;strong&gt;עבודה עם ממשק ה-Ribbon:&lt;/strong&gt; בחלק זה נדבר על עבודה מול ממשק ה-Ribbon באמצעות SharePoint Designer 2010 (ללא כתיבת קוד), דרך המתאימה בעיקר למיישמים ומטמיעים, ובאמצעות Visual Studio 2010 ונראה כיצד ניתן באמצעות קוד להרחיב את יכולות הממשק.       &lt;br /&gt;&lt;strong&gt;2&lt;/strong&gt;. &lt;strong&gt;User Notifications:&lt;/strong&gt; בחלק זה נדבר על התראות למשתמש באמצעות ה-User Notifications של SharePoint 2010.       &lt;br /&gt;&lt;strong&gt;Popup Modal .3: &lt;/strong&gt;בחלק האחרון של המפגש נדבר על עבודה מול ממשק ה-Modal החדש של SharePoint 2010 ונראה איך באמצעות JavaScript ניתן להקפיץ חלונות למשתמש.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;לפרטים נוספים והרשמה:&lt;/u&gt;&lt;/strong&gt;      &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.sharepoint-israel.co.il/events/SPG/SPG11"&gt;http://www.sharepoint-israel.co.il/events/SPG/SPG11&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;נתראה במפגש,     &lt;br /&gt;איתי שקורי.&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=763593" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rU5Lf31fIKQOEcsw8hSrPh-wl5A/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:763593</guid>
         <pubDate>Thu, 06 Jan 2011 09:30:17 +0000</pubDate>
      </item>
      <item>
         <title>SharePoint Group–Meeting 10 Summary</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/28/sharepoint-group-meeting-10-summary.aspx</link>
         <description>&lt;div style="text-align:right;direction:rtl;"&gt;&lt;p&gt;שלום לכולם,&lt;/p&gt;    &lt;p&gt;בתאריך 26/12/10 התקיים מפגש בנושא ALM With SharePoint 2010.     &lt;br /&gt;את המפגש העביר אסף אבן מחברת אדוונטק.&lt;/p&gt;    &lt;p&gt;את המצגת, וחומרים נוספים מהאירוע, ניתן למצוא באתר האירוע, בכתובת הבאה:&lt;a rel="nofollow" target="_blank" href="http://www.sharepoint-israel.co.il/events/SPG/SPG10"&gt;       &lt;br /&gt;http://www.sharepoint-israel.co.il/events/SPG/SPG10&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;שאלות המשך, ניתן לשאול בפורום בכתובת      &lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.sharepoint-israel.co.il/forums"&gt;http://www.sharepoint-israel.co.il/forums&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;תודה לכל המשתתפים,     &lt;br /&gt;נתראה במפגש הבא,      &lt;br /&gt;איתי שקורי. &lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.sharepoint-israel.co.il/events/SPG/SPG10/Pictures/IMG_20101226_184945.jpg" width="180" height="240" alt=""/&gt;&lt;/p&gt; &lt;/div&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=761003" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vGjKYY8UsS5URH6VEUvNjxiU2iU/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:761003</guid>
         <pubDate>Tue, 28 Dec 2010 18:36:16 +0000</pubDate>
      </item>
      <item>
         <title>How My Latest Post Can Help You Save Time</title>
         <link>http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/19/how-my-latest-post-can-help-you-save-time.aspx</link>
         <description>&lt;p&gt;I recently wrote &lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/15/sharepoint-is-slow-on-isolated-environments.aspx"&gt;a post&lt;/a&gt; regarding a certain performance issue with SharePoint that we solved. I since got some comments and questions about when is this problem relevant.&lt;/p&gt;  &lt;p&gt;Well.. It’s practically everywhere ,in an isolated environment, and It’s very common for development machines (usually virtual) to be disconnected. The fixes suggested in &lt;a rel="nofollow" target="_blank" href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2010/12/15/sharepoint-is-slow-on-isolated-environments.aspx"&gt;that post&lt;/a&gt; can help you speed up your work in the following cases:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A desktop application (WinForm&amp;#92;Console) that uses SharePoint APIs. &lt;/li&gt;    &lt;li&gt;STSADM.exe. &lt;/li&gt;    &lt;li&gt;PowerShell work with SharePoint. &lt;/li&gt;    &lt;li&gt;First hit of your SharePoint site. &lt;/li&gt;    &lt;li&gt;IIS reset&amp;#92;Recycle app pool when deploying to SharePoint. &lt;/li&gt;    &lt;li&gt;Anything else I didn’t think of, that uses SharePoint API’s in it’s own process (app domain to be precise). &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=758801" width="1" height="1"&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rY30eKiB2CT-R4-I79PBWduEebs/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:758801</guid>
         <pubDate>Sun, 19 Dec 2010 16:01:01 +0000</pubDate>
      </item>
      <item>
         <title>Deployment Error In VS2010 On SharePoint 2010 Project Template</title>
         <link>http://blogs.microsoft.co.il/blogs/yuvalk/archive/2010/12/09/deployment-error-in-vs2010-on-sharepoint-2010-project-template.aspx</link>
         <description>&lt;p&gt;After hitting Deploy on a sharepoint 2010 project item in visual studio 2010 and getting the following error:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Error occurred in deployment step &amp;#39;Activate Features&amp;#39;: Value cannot be null.     &lt;br /&gt;Parameter name: id&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Be sure to check your feature activation dependencies.&lt;/p&gt;  &lt;p&gt;if you see a feature with the GUID - 00000000-0000-0000-0000-000000000000, something probably went wrong.. &lt;/p&gt;  &lt;p&gt;This can be caused by the following scenario:   &lt;br /&gt;You`re working on a multiple developers development environment, using TFS as your ALM tool. One developer has deleted a feature which some other feature in the solution is dependant on. After you get the latest version of the visual studio solution the feature your were dependant on doesn&amp;#39;t exist anymore and your left with an unrecognized dependency with the non existing feature. &lt;/p&gt;  &lt;p&gt;In order to be able to perform a successful Deploy, just remove the invalid dependency, smile, take a deep breath and hit Deploy.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Happy DEPLOYING,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Yuval &lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=754207" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:754207</guid>
         <pubDate>Thu, 09 Dec 2010 19:16:45 +0000</pubDate>
      </item>
      <item>
         <title>Modifying search query before rendering results in CoreResultsWebPart SharePoint 2010</title>
         <link>http://blogs.microsoft.co.il/blogs/yuvalk/archive/2010/12/02/modifying-search-query-before-rendering-results-in-coreresultswebpart-sharepoint-2010.aspx</link>
         <description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;SharePoint 2010 introduce us with new search customizations capabilities in term of inheriting and extending the OOTB webparts.&lt;/p&gt;  &lt;p&gt;The search webparts now communicates through a new object, named: QueryManager which exist under the namespace: Microsoft.Office.Server.Search.Query&lt;/p&gt;  &lt;p&gt;through the QueryManager object we can change the query before getting results at the CoreResultsWebPart control.&lt;/p&gt;  &lt;p&gt;In the following example im overriding the submitted query with the word “Global” just before getting the results.&lt;/p&gt;  &lt;div style="border-bottom:silver 1px solid;text-align:left;border-left:silver 1px solid;padding-bottom:4px;line-height:12pt;background-color:#f4f4f4;margin:20px 0px 10px;padding-left:4px;width:97.5%;padding-right:4px;direction:ltr;max-height:200px;font-size:8pt;overflow:auto;border-top:silver 1px solid;cursor:text;border-right:silver 1px solid;padding-top:4px;" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style:none;text-align:left;padding-bottom:0px;line-height:12pt;border-right-style:none;background-color:#f4f4f4;margin:0em;padding-left:0px;width:100%;padding-right:0px;direction:ltr;border-top-style:none;color:black;font-size:8pt;border-left-style:none;overflow:visible;padding-top:0px;" id="codeSnippet"&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ExtendedResults : CoreResultsWebPart&lt;br /&gt;   {&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; QueryManager queryManager;&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;void&lt;/span&gt; OnInit(EventArgs e)&lt;br /&gt;       {&lt;br /&gt;           queryManager = SharedQueryManager.GetInstance(&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;.Page).QueryManager;&lt;br /&gt;           &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.OnInit(e);&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; System.Xml.XPath.XPathNavigator GetXPathNavigator(&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; viewPath)&lt;br /&gt;       {&lt;br /&gt;           queryManager.UserQuery = &lt;span style="color:#006080;"&gt;&amp;quot;Global&amp;quot;&lt;/span&gt;;&lt;br /&gt;           &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;.GetXPathNavigator(viewPath);&lt;br /&gt;       }&lt;br /&gt;   }&lt;/pre&gt;

  &lt;br /&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Notice that other search webparts like the Refinement panel and Pager wont be affected by this modification.&lt;/p&gt;

&lt;p&gt;HTH someone.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Yuval Korin&lt;/p&gt;&lt;img src="http://blogs.microsoft.co.il/aggbug.aspx?PostID=752241" width="1" height="1"&gt;</description>
         <guid isPermaLink="false">b5c4f5bc-c09b-4439-a595-91a98c1847df:752241</guid>
         <pubDate>Thu, 02 Dec 2010 16:02:14 +0000</pubDate>
      </item>
   </channel>
</rss><!-- fe1.yql.bf1.yahoo.com compressed/chunked Mon May 28 20:50:08 UTC 2012 -->

