<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Suman Chakrabarti - SharePoint and ASP.NET blog</title><link>http://blogs.msdn.com/b/sumanc/</link><description>SharePoint, .NET, Social Computing and random bits of goodness</description><dc:language>en</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>How-to Get and Install SharePoint 2010 Language Packs</title><link>http://blogs.msdn.com/b/sumanc/archive/2012/03/06/how-to-get-and-install-sharepoint-2010-language-packs.aspx</link><pubDate>Tue, 06 Mar 2012 19:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10278623</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=10278623</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2012/03/06/how-to-get-and-install-sharepoint-2010-language-packs.aspx#comments</comments><description>&lt;p&gt;Many organizations I've worked with are trying to ensure multilingual support in their SharePoint enterprise instances. What's funny is the language packs download process doesn't entirely make sense. In most cases, downloaders go to the language pack download page and&amp;nbsp;get the English (or browser preferred language) and think that includes all the language packs.&lt;/p&gt;
&lt;p&gt;It doesn't.&lt;/p&gt;
&lt;h2&gt;How do I get the language packs?&lt;/h2&gt;
&lt;p&gt;To get the language packs, go to the respective language pack page:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=4731"&gt;SharePoint Foundation 2010 Language Pack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=3411"&gt;Language Pack for SharePoint Server 2010, Project Server 2010, Office Web Apps 2010 bundle&lt;/a&gt; (note that this includes SharePoint Foundation 2010)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After reaching this page, change the dropdown that says &lt;strong&gt;Change Language&lt;/strong&gt; from &lt;strong&gt;English &lt;/strong&gt;(or your browser default language) to the language that you want and it will navigate you to the other language page so you can download the language pack for your target language. You will simply click the download button (it will be translated into the target language).&lt;/p&gt;
&lt;p&gt;The files from all the language packs are named &lt;strong&gt;SharePointLanguagePack.exe&lt;/strong&gt; (Foundation) and &lt;strong&gt;ServerLanguagePack.exe &lt;/strong&gt;(Server), so I would suggest that you rename the file to include the language global name (e.g. ServerLanguagePack_de-de.exe).&lt;/p&gt;
&lt;h2&gt;How do I get Service Packs?&lt;/h2&gt;
&lt;p&gt;Language Packs do have service packs. Unfortunately, there is a glitch with the naming in Microsoft Download in which the title of the SharePoint Server language pack is improperly named. The process for selecting the language is the same as before, but each file is named with both the KB article identifier as well as the language that it is updating (e.g. serverlanguagepack2010sp1-kb2460056-x64-fullfile-de-de.exe).&lt;/p&gt;
&lt;p&gt;The locations for SharePoint language pack service pack 1 downloads are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26629"&gt;Service Pack 1 for SharePoint Foundation 2010 Language Pack (KB2460059)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26621"&gt;Service Pack 1 for Server Language Pack 2010 (KB2460056)&lt;/a&gt; (note that this is the SharePoint Server language pack update which includes the SharePoint Foundation 2010 Language Pack update)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have to install a lot of language packs, it is easier to download, extract and slipstream them all in advance, then run through each install and finally finish it all with a SharePoint Configuration Wizard PSConfigUI.exe (or you can use psconfig.exe -cmd upgrade -inplace v2v).&lt;/p&gt;
&lt;p&gt;To slipstream the installs you'll need to extract the core language file:&lt;/p&gt;
&lt;pre&gt;&lt;code class="cplusplus"&gt;ServerLanguagePack_de-de.exe /extract:&amp;lt;extract-location&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you'll need to extract the update to the language &lt;strong&gt;Updates&lt;/strong&gt; folder:&lt;/p&gt;
&lt;pre&gt;&lt;code class="cplusplus"&gt;serverlanguagepack2010sp1-kb2460056-x64-fullfile-de-de.exe&lt;br /&gt; /extract:&amp;lt;extract-location&amp;gt;\Updates&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you run the base install of the language pack, it will install the language with all updates in place.&lt;/p&gt;
&lt;h2&gt;What about Cumulative Updates (CUs)?&lt;/h2&gt;
&lt;p&gt;Cumulative Updates are different from service packs because they contain all the language pack updates in the entire package. Note that instead of the CUs being created with a language noted in the file name (i.e. EN, DE, FR), they have the letters GLB for GLoBal in the file name. This means that when you update your servers, your language packs will get upgraded as well.&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10278623" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/How+do+I/">How do I</category></item><item><title>Create a Setup Project for a 64-bit Windows Service in Visual Studio 2010</title><link>http://blogs.msdn.com/b/sumanc/archive/2011/11/03/create-a-setup-project-for-a-64-bit-windows-service-in-visual-studio-2010.aspx</link><pubDate>Thu, 03 Nov 2011 17:14:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10233685</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=10233685</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2011/11/03/create-a-setup-project-for-a-64-bit-windows-service-in-visual-studio-2010.aspx#comments</comments><description>&lt;p&gt;I was having a lot of trouble with this, so I'm going to share it. Visual Studio 2010 setup projects still do not fix the way you create a setup project. The problem is that Visual Studio doesn't add the x64 version of InstallUtilLib.dll to the MSI and so you will receive a BadFormatException error message and the installer will crash and burn.&lt;/p&gt;
&lt;p&gt;The workaround is explained here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx"&gt;http://blogs.msdn.com/b/heaths/archive/2006/02/01/64-bit-managed-custom-actions-with-visual-studio.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10233685" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Setup+project/">Setup project</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Windows+Service/">Windows Service</category></item><item><title>Must-read articles on string comparison performance</title><link>http://blogs.msdn.com/b/sumanc/archive/2010/05/26/interesting-article-on-string-comparison-performance.aspx</link><pubDate>Wed, 26 May 2010 14:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10015619</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=10015619</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2010/05/26/interesting-article-on-string-comparison-performance.aspx#comments</comments><description>&lt;p&gt;I've always wondered which is the fastest technique to do a string comparison? using the StringComparison enums or ToUpper and ToLower? The following entry also answers what is fastest among the StringComparison enums.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/b/noahc/archive/2007/06/29/string-equals-performance-comparison.aspx"&gt;http://blogs.msdn.com/b/noahc/archive/2007/06/29/string-equals-performance-comparison.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This article has more detail on do's and don'ts for stringcomparisons:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms973919.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms973919.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10015619" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/-NET/">.NET</category></item><item><title>Cannot use Visual Studio Unit Tests to test against a live SharePoint 2007 site if on a 64-bit machine</title><link>http://blogs.msdn.com/b/sumanc/archive/2010/04/16/cannot-use-visual-studio-unit-tests-to-test-against-a-live-sharepoint-2007-site-if-on-a-64-bit-machine.aspx</link><pubDate>Fri, 16 Apr 2010 16:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9997306</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9997306</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2010/04/16/cannot-use-visual-studio-unit-tests-to-test-against-a-live-sharepoint-2007-site-if-on-a-64-bit-machine.aspx#comments</comments><description>&lt;p&gt;I scoured Bing (and Google) to find out why my Visual Studio unit tests will not allow me to test my SharePoint code failing with the message:&lt;/p&gt;&lt;p class="code"&gt;&lt;code&gt;Initialization method Contoso.Test.BreakingNewsTest threw exception.&lt;br&gt;System.IO.FileNotFoundException: System.IO.FileNotFoundException:&lt;br&gt;The Web application at http://intranet.contoso.com/ could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.&lt;/code&gt;&lt;/p&gt;&lt;p&gt;I finally asked a colleague of mine (Jeremy Jameson) how he resolved it. Thankfully, he's already created an excellent post on it here: &lt;a mce_href="http://blogs.msdn.com/jjameson/archive/2009/10/08/web-application-at-could-not-be-found-error-on-moss-2007-x64.aspx" href="http://blogs.msdn.com/jjameson/archive/2009/10/08/web-application-at-could-not-be-found-error-on-moss-2007-x64.aspx"&gt;http://blogs.msdn.com/jjameson/archive/2009/10/08/web-application-at-could-not-be-found-error-on-moss-2007-x64.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9997306" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category></item><item><title>Needed to replace full hard drive with larger one - Backup/Restore</title><link>http://blogs.msdn.com/b/sumanc/archive/2010/04/12/needed-to-replace-full-hard-drive-with-larger-one-backup-restore.aspx</link><pubDate>Mon, 12 Apr 2010 15:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9994404</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9994404</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2010/04/12/needed-to-replace-full-hard-drive-with-larger-one-backup-restore.aspx#comments</comments><description>&lt;DIV&gt;So, I had the exact same problem as Tim Heuer (&lt;A href="http://timheuer.com/blog/archive/2010/03/30/repaving-my-machine-my-baseline-dev-workstation-tools.aspx" mce_href="http://timheuer.com/blog/archive/2010/03/30/repaving-my-machine-my-baseline-dev-workstation-tools.aspx"&gt;New hard drive means re-install everything&lt;/A&gt;). 150GB drive and bought a nice 320GB 7200RPM with shock protection. I found the easiest way to get myself up and running was to use Win7's backup/restore feature. I backed up my drive to my home server (which creates a WIM, FWIW) and restored my new drive from my home server booting with Win7 PXE boot and restore. It took a while to backup and restore all of that, but it all worked out ok.&lt;/DIV&gt;
&lt;DIV&gt;&lt;BR&gt;&lt;/DIV&gt;
&lt;DIV&gt;The gotchas...&lt;/DIV&gt;
&lt;DIV&gt;I had bitlocker enabled (per company policy) and that obviously did not help with my disk partitioning because the 300MB partition was in the middle of my disk, so I couldn't just expand the disk partition for C:\. I had to disable and remove bitlocker and delete the partition. I also had to use BCDBOOT and point it to C:\Windows so it would automatically create my new boot config on C (since I purged it on the secondary drive)--if you fail to remember this part, you can do it using the PXE boot command prompt. I created another partition&amp;nbsp;(for my boot to VHD drives) and re-enabled bitlocker. Then, reboot to validate everything went okay&lt;/DIV&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9994404" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Windows+7/">Windows 7</category></item><item><title>New years resolution...get back into writing</title><link>http://blogs.msdn.com/b/sumanc/archive/2010/01/05/new-years-resolution-get-back-into-writing.aspx</link><pubDate>Tue, 05 Jan 2010 13:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9943900</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9943900</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2010/01/05/new-years-resolution-get-back-into-writing.aspx#comments</comments><description>&lt;p&gt;With all the microblogging I do, I've found myself writing less informative blogs. I started a series for SharePoint How-tos then got very bored with that. Lately, I've been working on learning more about MVC and cloud computing; both of which perplex me. These aren't difficult technologies, but they do take experience to pick up. I feel like I'm going backwards in development when I use the Html.* helper class and write &amp;lt;% %&amp;gt; tags in the asp.net form (I left legacy ASP and never, ever want to go back!!!). Unfortunately, MVC is here to stay and so that makes it a legitimate obstacle for me to surmount.&lt;/p&gt;&lt;p&gt;Additionally, my hobby as a photographer has taken over more of my life than coding for fun. I enjoy it more than deciphering the latest Silverlight release, fiddling with SharePoint 2010 or tinkering with ASP.NET 4. I can't do it all, I guess...&lt;/p&gt;&lt;p&gt;My commitment is to begin writing again, although, I'm not committing myself to more than 12 entries this year (or one per month). With the betas of SharePoint 2010 and eventual release, I'm sure I'll have some ideas to blog more frequently.&lt;/p&gt;&lt;p&gt;Cheers and welcome 2010!&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9943900" width="1" height="1"&gt;</description></item><item><title>Problems getting Hyper-V to install the Integration Services components?</title><link>http://blogs.msdn.com/b/sumanc/archive/2009/10/08/problems-getting-hyper-v-to-install-the-integration-services-components.aspx</link><pubDate>Thu, 08 Oct 2009 09:52:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9904755</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9904755</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2009/10/08/problems-getting-hyper-v-to-install-the-integration-services-components.aspx#comments</comments><description>&lt;p&gt;I had problems getting the Hyper-V Integration components installed in my VPC this evening. After a lot of kicking and stomping, I found a fellow MSFT-ie had the same issue and resolved it. Most of the issue is the fact that Hyper-V's integration components are called Integration Services (which is the same name as the SQL Server 2005++ components).&lt;/p&gt;&lt;p&gt;Anyways, Bob Duffy figured it out here:&lt;/p&gt;&lt;p&gt;&lt;a mce_href="http://blogs.msdn.com/boduff/archive/2008/12/18/problems-with-virtual-machine-bus-in-hyper-v.aspx" href="http://blogs.msdn.com/boduff/archive/2008/12/18/problems-with-virtual-machine-bus-in-hyper-v.aspx"&gt;http://blogs.msdn.com/boduff/archive/2008/12/18/problems-with-virtual-machine-bus-in-hyper-v.aspx&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9904755" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Virtualization/">Virtualization</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Windows+2008/">Windows 2008</category></item><item><title>Boot from VHD on a Bitlocker enabled host...not happening</title><link>http://blogs.msdn.com/b/sumanc/archive/2009/10/07/boot-from-vhd-on-a-bitlocker-enabled-host-not-happening.aspx</link><pubDate>Wed, 07 Oct 2009 19:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9904429</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9904429</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2009/10/07/boot-from-vhd-on-a-bitlocker-enabled-host-not-happening.aspx#comments</comments><description>&lt;p&gt;This should have been obvious to me, and whoever you are searching for this, but apparently it's not possible to have a host OS that's bitlocker enabled and use the boot from VHD.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/dd799282(WS.10).aspx"&gt;http://technet.microsoft.com/en-us/library/dd799282(WS.10).aspx&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;Bitlocker cannot be used to encrypt the host volume containing VHD files used for native VHD boot, and bitlocker cannot be used on volumes contained inside a VHD.&lt;/blockquote&gt;
&lt;p&gt;Just thought I'd share this with you, world.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;If you're looking for insight into how you can create a quick VHD here's my process. First you'll need to download and install the following: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=696dd665-9f76-4177-a811-39c26d3b3b34"&gt;The Windows&amp;reg; Automated Installation Kit (AIK) for Windows&amp;reg; 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/wim2vhd"&gt;Windows(R) Image to Virtual Hard Disk (WIM2VHD) Converter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I've got a script that helps me create new bootable VHDs:&lt;/p&gt;
&lt;p class="code"&gt;&lt;code&gt;@Set SrcDrv=F:\&lt;br /&gt;@Set sku=SERVERSTANDARD&lt;br /&gt;&lt;/code&gt;&lt;code&gt;@Set Wim2VhdPath=C:\VHDs&lt;br /&gt;@Set vhdpath="c:\vhds\Win2008R2x64-fixed.vhd"&lt;br /&gt;@Set disktype=Fixed&lt;br /&gt;@Set size=/size:12000&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;CSCRIPT %Wim2VhdPath%\WIM2VHD.WSF /WIM:%SrcDrv%\sources\install.wim /SKU:%sku% /VHD:%vhdpath% /disktype:%disktype% %size%&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;At this point, go to disk management (right-click Computer, click &lt;strong&gt;Manage&lt;/strong&gt;) and attach the new VHD. Afterwords, you'll run the following script to create the boot entry using BCDBOOT. Open a command prompt as Administrator and run the following command:&lt;/p&gt;
&lt;p class="code"&gt;&lt;code&gt;bcdboot &lt;strong&gt;&lt;i&gt;%drive%:\&lt;/i&gt;&lt;/strong&gt;windows&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Voila! You should be able to reboot and select your new bootable drive. If you want to change the boot settings, you'll need to do so using BCDEDIT&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9904429" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Windows+7/">Windows 7</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Virtualization/">Virtualization</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Bootable+VHD/">Bootable VHD</category></item><item><title>Working on my first WPF/WCF app for a customer...</title><link>http://blogs.msdn.com/b/sumanc/archive/2009/09/24/working-on-my-first-wpf-wcf-app-for-a-customer.aspx</link><pubDate>Fri, 25 Sep 2009 04:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9899271</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9899271</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2009/09/24/working-on-my-first-wpf-wcf-app-for-a-customer.aspx#comments</comments><description>&lt;p&gt;This is the first app that I get to work on for a customer that uses WPF and WCF. I'm finding the XML to be a bit cumbersome. Although the tools do help you get things right with WPF, I think the WCF tools are complicated.&lt;/p&gt;&lt;p&gt;I believe the next steps for these tools should be some updated tools for network monitoring, client and server certificate management, and some authentication test tools. It seems like every time I build a WCF app, I get stuck trying to figure out why the connection isn't authenticating properly...eh, probably lack of experience.&lt;/p&gt;&lt;p&gt;Anyways, What I've found in addition to it is an API for DirectShow for .NET. This API enables my .NET app to get video from the computer's camera and capture an image.&lt;/p&gt;&lt;p&gt;Ahh, after quite a few months on a tough project, It's great to write a technical blog again...&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9899271" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/WPF/">WPF</category></item><item><title>'How do I' get redirected to the default Error or Success layouts pages?</title><link>http://blogs.msdn.com/b/sumanc/archive/2009/01/25/how-do-i-get-redirected-to-the-default-error-or-success-layouts-pages.aspx</link><pubDate>Sun, 25 Jan 2009 23:32:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9375251</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9375251</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2009/01/25/how-do-i-get-redirected-to-the-default-error-or-success-layouts-pages.aspx#comments</comments><description>&lt;p&gt;You just want the error message to be displayed on the default SharePoint error page. Is this an easy&lt;/p&gt; &lt;p&gt;In Microsoft.SharePoint.Utilities.SPUtility there are 2 functions:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;SPUtility.TransferToErrorPage - this transfers the user to the administrative layouts page for error messages  &lt;li&gt;SPUtility.TransferToSuccessPage - this transfers the user to the page one would see after something such as a long running transaction&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;There are a few overloads for each and they come in handy when developing custom admin pages or custom lists.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9375251" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/How+do+I/">How do I</category></item><item><title>'How do I' create a long running operation page (gears page)?</title><link>http://blogs.msdn.com/b/sumanc/archive/2009/01/25/how-do-i-create-a-long-running-operation-page-gears-page.aspx</link><pubDate>Sun, 25 Jan 2009 23:29:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9375249</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9375249</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2009/01/25/how-do-i-create-a-long-running-operation-page-gears-page.aspx#comments</comments><description>&lt;p&gt;This one is an awesome feature to add if you've got an application running a workflow asynchronously and on-the-fly (&lt;a target="_blank" href="http://blogs.msdn.com/sumanc/archive/2008/08/16/starting-canceling-a-workflow-programmatically.aspx"&gt;see post on programmatically launching a workflow&lt;/a&gt;) and you want to coordinate the results of said workflow synchronously, so.you have to wait for the workflow to complete.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/sumanc/WindowsLiveWriter/HowdoIcreatealongrunningtransactionpageg_10F10/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/sumanc/WindowsLiveWriter/HowdoIcreatealongrunningtransactionpageg_10F10/image_thumb.png" width="244" height="96"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Check out &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splongoperation.aspx"&gt;Microsoft.SharePoint.SPLongOperation&lt;/a&gt;. This object allows you to begin and complete the long operation quite easily.&lt;/p&gt; &lt;p class="code"&gt;&lt;code&gt;SPLongOperation operation = new SPLongOperation(this) {&lt;br&gt;&amp;nbsp; LeadingHTML = "This is a bold description of my operation",&lt;br&gt;&amp;nbsp; TrailingHTML = "This is a normal sub-description of my operation"&lt;br&gt;};&lt;br&gt;&lt;br&gt;operation.Begin();&lt;br&gt;Thread.Sleep(5000);&lt;br&gt;operation.End("/redirectpage.aspx");&lt;/code&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9375249" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/How+do+I/">How do I</category></item><item><title>'How do I' create a layouts page</title><link>http://blogs.msdn.com/b/sumanc/archive/2009/01/25/how-do-i-create-an-admin-layouts-page.aspx</link><pubDate>Sun, 25 Jan 2009 22:42:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9375213</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=9375213</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2009/01/25/how-do-i-create-an-admin-layouts-page.aspx#comments</comments><description>&lt;p&gt;Following the lead of &lt;a href="http://blogs.msdn.com/SaraFord/" target="_blank"&gt;Sara Ford&lt;/a&gt;, I think I want to do a 'How do I' piece for SharePoint developers. I don't know how long this will last, but this is the first post.&lt;/p&gt;  &lt;p&gt;First off, layout pages require the following directives. Try as I may, I have never been able to get around whatever permission demand is blocking layout pages from inheriting a specific class.&lt;/p&gt;  &lt;p class="code"&gt;&lt;code&gt;&amp;lt;%@ Assembly Name=&amp;quot;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;      &lt;br /&gt;&amp;lt;%@ Page language=&amp;quot;C#&amp;quot; MasterPageFile=&amp;quot;~/_layouts/application.master&amp;quot; inherits=&amp;quot;Microsoft.SharePoint.WebControls.LayoutsPageBase, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot; %&amp;gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;The files must be placed in the %12-hive%\Template\Layouts directory-I usually create a custom folder underneath based on my specific feature to separate my custom code from SharePoint code. Incidentally, I recommend putting stylesheets, JavaScripts, and generic HTTP handlers here as well (the HttpHandler does allow you to create a code behind compile and deploy to this directory, which is cool). On your layouts pages you can add any web parts and custom controls you wish, you just have to add them manually as you don't have web part zones or personalization.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Note: By putting pages in the layouts directory, you may be breaching your security for the application as layouts pages are available to any authenticated user (not in a publishing scenario, though). Ensure that your pages are secured using controls such as the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spsecuritytrimmedcontrol.aspx"&gt;SPSecurityTrimmedControl.&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9375213" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/How+do+I/">How do I</category></item><item><title>MOSS/WSS SDK 1.4 - has Federated Search web part examples</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/09/01/moss-wss-sdk-1-4-has-federated-search-web-part-examples.aspx</link><pubDate>Mon, 01 Sep 2008 18:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8916876</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8916876</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/09/01/moss-wss-sdk-1-4-has-federated-search-web-part-examples.aspx#comments</comments><description>&lt;p&gt;In case you missed hearing about the new SDK, here's a great post on what's in it.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/randalli/archive/2008/08/28/just-published-wss-and-moss-sdk-1-4-download-and-online-msdn-library-8-29-2008.aspx"&gt;http://blogs.msdn.com/randalli/archive/2008/08/28/just-published-wss-and-moss-sdk-1-4-download-and-online-msdn-library-8-29-2008.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8916876" width="1" height="1"&gt;</description></item><item><title>Starting/Canceling a SharePoint Designer workflow programmatically </title><link>http://blogs.msdn.com/b/sumanc/archive/2008/08/16/starting-canceling-a-workflow-programmatically.aspx</link><pubDate>Sun, 17 Aug 2008 00:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8872553</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8872553</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/08/16/starting-canceling-a-workflow-programmatically.aspx#comments</comments><description>&lt;p&gt;I had enough trying to find this code, so I'm putting what I've pieced together to activate a workflow programmatically (specifically a SharePoint Designer Workflow)&lt;/p&gt;  &lt;p class="code"&gt;&lt;code&gt;public static string StartWorkflow(ContractListItem contract, string workflowName) {      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItem wfListItem = contract.ListItem;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWorkflowAssociationCollection wfAssocs = wfListItem.ParentList.WorkflowAssociations;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWorkflowAssociation activeWorkflowAssoc = null;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string errorMessage = string.Empty;       &lt;br&gt;      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (SPWorkflowAssociation wfAssoc in wfAssocs) {       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (wfAssoc.Name.Equals(workflowName)) {       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activeWorkflowAssoc = wfAssoc;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // if the workflow exists, start the workflow       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWorkflow activeWorkflow = null;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (activeWorkflowAssoc != null) {       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activeWorkflow = SPContext.Current.Site.WorkflowManager.StartWorkflow(       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wfListItem,       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; activeWorkflowAssoc,       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;lt;Data&amp;gt;&amp;lt;/Data&amp;gt;");       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex) {       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorHandler.LogError(Resources.ActionBarWebPart_WorkflowNotStarted, ex);       &lt;br&gt;      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (activeWorkflow != null)       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPWorkflowManager.CancelWorkflow(activeWorkflow);       &lt;br&gt;      &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errorMessage = Resources.ActionBarWebPart_WorkflowNotStarted;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorHandler.LogError(Resources.ActionBarWebPart_WorkflowDoesNotExist);       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; errorMessage = Resources.ActionBarWebPart_WorkflowDoesNotExist;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return errorMessage;       &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }       &lt;br&gt;&amp;nbsp; }&lt;/code&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8872553" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Win+WF/">Win WF</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint+Designer/">SharePoint Designer</category></item><item><title>Get PublicKeyToken using external tools</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/07/16/get-publickeytoken-using-external-tools.aspx</link><pubDate>Wed, 16 Jul 2008 18:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8739127</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8739127</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/07/16/get-publickeytoken-using-external-tools.aspx#comments</comments><description>&lt;P&gt;I hate fishing around to get the publickeytoken for my strong named assemblies, so I fished around for a way to do it in Visual Studio. Here's what I did:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a new External Tool - I called mine &lt;STRONG&gt;Get PublicKeyToken&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Map to the sn.exe file in the Windows SDK &amp;lt;DRIVE:\&amp;gt;Program Files\Microsoft SDKs\Windows\v6.0A\Bin\sn.exe&lt;/LI&gt;
&lt;LI&gt;Add the command you want to execute, in this case, it's &lt;STRONG&gt;-T $(TargetPath)&lt;/STRONG&gt; - you can get the TargetPath monniker from the flyout.&lt;/LI&gt;
&lt;LI&gt;Check the &lt;STRONG&gt;Use Output window&lt;/STRONG&gt; checkbox.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;IMG title="Get PublicKeyToken" style="WIDTH: 471px; HEIGHT: 458px" height=458 alt="Get PublicKeyToken" src="http://blogs.msdn.com/photos/sumanc/images/8738959/original.aspx" width=471 mce_src="http://blogs.msdn.com/photos/sumanc/images/8738959/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Now, to execute it, select a &lt;STRONG&gt;*.dll&lt;/STRONG&gt; file. You can select the file in the bin directory of your dev project, go to &lt;STRONG&gt;Tools-&amp;gt;Get PublicKeyToken&lt;/STRONG&gt; and the output will be rendered to the Output window.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8739127" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Visual+Studio/">Visual Studio</category></item><item><title>SharePoint ReadOnly Field can be written to by workflows</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/06/24/sharepoint-readonly-field-can-be-written-to-by-workflows.aspx</link><pubDate>Tue, 24 Jun 2008 18:16:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8647561</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8647561</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/06/24/sharepoint-readonly-field-can-be-written-to-by-workflows.aspx#comments</comments><description>&lt;p&gt;So, I scoured the internet (all of it, I swear) to find some information on readonly fields in SharePoint. Apparently, SharePoint workflows &lt;em&gt;can &lt;/em&gt;write to readonly columns. The only problem I'm having now is getting the column to show up in a columns list.&lt;/p&gt;  &lt;p class='code'&gt;&lt;code&gt; private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e) {&lt;br/&gt; &amp;nbsp;&amp;nbsp;SPList list = workflowProperties.List;&lt;br/&gt; &lt;br/&gt; &amp;nbsp;&amp;nbsp;if (!list.Fields.ContainsField(FIELD_NAME))&lt;br/&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list.Fields.Add(FIELD_NAME, SPFieldType.User, false);&lt;br/&gt; &lt;br/&gt; &amp;nbsp;&amp;nbsp;SPFieldUser field = (SPFieldUser)list.Fields[FIELD_NAME];&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.Title = FIELD_NAME;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.AllowDisplay = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ReadOnlyField = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInDisplayForm = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInEditForm = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInDisplayForm = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInEditForm = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInListSettings = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInNewForm = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInVersionHistory = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.ShowInViewForms = true;&lt;br/&gt; &amp;nbsp;&amp;nbsp;field.Update();&lt;br/&gt; }&lt;br/&gt; &lt;br/&gt; private void codeActivity1_ExecuteCode(object sender, EventArgs e) {&lt;br/&gt; &amp;nbsp;&amp;nbsp;workflowProperties.Item["restricted"] = "test: " + DateTime.Now.ToShortTimeString();&lt;br/&gt; &amp;nbsp;&amp;nbsp;workflowProperties.Item.Update();&lt;br/&gt; } &lt;/code&gt;&lt;/p&gt;  &lt;p&gt;Woo- hoo! It works!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8647561" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Win+WF/">Win WF</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category></item><item><title>Windows Live Cashback program ROCKS!</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/05/29/windows-live-cashback-program-rocks.aspx</link><pubDate>Thu, 29 May 2008 23:21:13 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8559982</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8559982</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/05/29/windows-live-cashback-program-rocks.aspx#comments</comments><description>&lt;p&gt;I just bought a video camera online, so I figured I'd check out the Live Cashback program and see if it would work out well. It totally rocked. I found the camera I wanted at a better price than I could find on other online shopping search sites, then I found I would get 4% back on the camera price and 4% back on the warranty to accompany it.&lt;/p&gt;  &lt;p&gt;This deal totally rocks!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8559982" width="1" height="1"&gt;</description></item><item><title>Navigon - a Windows Mobile 6 GPS</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/05/18/navigon-a-windows-mobile-6-gps.aspx</link><pubDate>Mon, 19 May 2008 06:57:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8518650</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8518650</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/05/18/navigon-a-windows-mobile-6-gps.aspx#comments</comments><description>&lt;p&gt;I just got my Navigon 7100 GPS and I have to say I'm impressed. I really like the navigation quality of the GPS, especially compared to my TomTom ONE. I like the TomTom's ease of use--in fact, I like it better than my friends Garmin nuvi, but the TomTom ONE doesn't have some really important features that I need for my weekly trek's about the east coast.&lt;/p&gt;  &lt;p&gt;Anyway, the Navigon has icons that match the chain restaurants and hotels, Zagat ratings (including the reviews), a built-in traffic receiver, and more POIs than my TomTom.&lt;/p&gt;  &lt;p&gt;So, here's the bad:&lt;/p&gt;  &lt;p&gt;If you've never had a GPS before, the UI is a little cumbersome. It comes with a stylus because some of the icons/buttons are too small to hit with your finger--almost frustrating enough to send back.&lt;/p&gt;  &lt;p&gt;In the end, I think I love it because of its actual navigation quality. It takes the same routes I would take (which neither Garmin nor TomTom would do). I also love the RealityView when you're on a major highway with a lot of lane decisions, it shows signs on a highway and an arrow for which lane you should be in. Finally, I love the fact that it allows me to extremely easily choose a POI or interim stop without making me rebuild my navigation course.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8518650" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Gadgetry/">Gadgetry</category></item><item><title>Presentation at CodeCamp Pittsburgh</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/04/14/presentation-at-codecamp-pittsburgh.aspx</link><pubDate>Mon, 14 Apr 2008 18:47:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8393189</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8393189</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/04/14/presentation-at-codecamp-pittsburgh.aspx#comments</comments><description>&lt;p&gt;I presented a Silverlight 1.0/2.0 demonstration yesterday at CodeCamp and it went quite well. Most importantly, it compiled; hey, that's half the battle.&lt;/p&gt;  &lt;p&gt;The talk started out about how POX is not truly a ReST service because POX services are not usually provided as post-able services that control and manage information processing. With POX services, the idea is really to share the information with the user interface. So, I put together a service that provided customer order information from the AdventureWorks catalog. The information was provided in JSON format to the front end Silverlight 1.0 and 2.0 interface.&lt;/p&gt;  &lt;p&gt;The Silverlight 1.0 portion of the demo went really fast, mainly because I kept the JavaScript in code snippets so I wouldn't end up debugging any of it. The Silverlight 2.0 piece took some time because I had to write all the code from scratch because I forgot to save the code in snippets. It did look like I knew what I was doing, though.&lt;/p&gt;  &lt;p&gt;Anyways, thanks to Mike Snell, Craig Oaks, and Dave Hoerster for hosting CodeCamp! It was a fun time and I got to eat burritos.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8393189" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Silverlight/">Silverlight</category></item><item><title>Addition to Steve Peschka's PartCheck code</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/03/26/addition-to-steve-peschka-s-partcheck-code.aspx</link><pubDate>Wed, 26 Mar 2008 16:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8337765</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8337765</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/03/26/addition-to-steve-peschka-s-partcheck-code.aspx#comments</comments><description>&lt;P&gt;I ran into a problem when trying to use Peschka's PartCheck code for&amp;nbsp;My Site autoconfiguration&amp;nbsp;to modify some boolean fields on the Colleague Tracker web part and found some modifications you'll need to make in order to set boolean fields on controls with this code:&lt;/P&gt;
&lt;P class=code&gt;&lt;CODE&gt;private object GetPropertySetterValue(string Value) {&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;&amp;nbsp; switch {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;bool result;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (bool.TryParse(Value, out result))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return result;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;&amp;nbsp; ...&lt;BR&gt;}&lt;/CODE&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;This will allow the boolean value to be passed correctly to the control.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8337765" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Branding/">Branding</category></item><item><title>Presenting at Pittsburgh Code Camp - WCF POX/ReST Services with Silverlight 1.0 and 2.0</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/03/26/presenting-at-pittsburgh-code-camp-wcf-pox-rest-services-with-silverlight-1-0-and-2-0.aspx</link><pubDate>Wed, 26 Mar 2008 16:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8337731</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8337731</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/03/26/presenting-at-pittsburgh-code-camp-wcf-pox-rest-services-with-silverlight-1-0-and-2-0.aspx#comments</comments><description>I'm&amp;nbsp;speaking at &lt;A class="" title="Code Camp (Pittsburgh)" href="http://www.pghdotnet.org/CodeCamp/" mce_href="http://www.pghdotnet.org/CodeCamp/"&gt;Pittsburgh's Code Camp&lt;/A&gt; on April 12th located at University of Pittsburgh's Sennott Square. I'll be presenting POX services using WCF and ReST (although many will agree that POX is not truly ReST) to supply data to a Silverlight 1.0 application and I will use the same services with a Silverlight 2.0 application.&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8337731" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Silverlight/">Silverlight</category></item><item><title>IIS app pool limits to keep in mind for SharePoint</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/03/25/iis-app-pool-limits-to-keep-in-mind-for-sharepoint.aspx</link><pubDate>Wed, 26 Mar 2008 00:18:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8336549</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8336549</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/03/25/iis-app-pool-limits-to-keep-in-mind-for-sharepoint.aspx#comments</comments><description>&lt;p&gt;Depending on your hardware configuration IIS 6.0 does have a potential limit to the number of application pools. The TechNet FAQ for IIS stated &lt;a href="http://www.microsoft.com/technet/community/en-us/iis/iis6_faq.mspx#EFBAE"&gt;here&lt;/a&gt; says:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The answer varies depending on the hardware and software configurations of your server as well as the types of content it hosts. If you are setting up your application pools with unique identities, depending on the applications and memory resources of your server, you will reach a limit of about 60 application pools. There are finite limits to some system resources that are allocated with each new logon session. This means that 60 processes can run concurrently as distinct accounts. IIS 6.0 supports running these processes in a single shared desktop, at a cost of sharing a single encapsulation of a user session among all parties.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There is a way to scale far beyond 60 worker processes, but why would anyone want to do that?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8336549" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/IIS/">IIS</category></item><item><title>SharePoint Star Wars lines</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/03/20/sharepoint-star-wars-lines.aspx</link><pubDate>Fri, 21 Mar 2008 06:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8328436</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8328436</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/03/20/sharepoint-star-wars-lines.aspx#comments</comments><description>&lt;P&gt;I posted these to &lt;A class="" href="http://blogs.msdn.com/joelo" mce_href="http://blogs.msdn.com/joelo"&gt;Joel Oleson's MSDN blog&lt;/A&gt;, but since he's moving the blog, I didn't want to lose them.&lt;/P&gt;
&lt;P&gt;Uber-nerd SharePoint versions of Star Wars lines:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;These aren't the content databases you are looking for. (compliments &lt;A class="" href="http://blogs.msdn.com/echarran" mce_href="http://blogs.msdn.com/echarran"&gt;Eric Charran&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;If you only knew the power of the stsadm -o installfeature -force.&lt;/LI&gt;
&lt;LI&gt;There will be a substantial reward to the Site Collection Admin that finds the deleted document, but I want it restored, no disintegration's!&lt;/LI&gt;
&lt;LI&gt;What is thy bidding, my Master page?&lt;/LI&gt;
&lt;LI&gt;Search your index, you know it to be true.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8328436" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category></item><item><title>Migrating Web Part Pages to Publishing Pages</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/03/16/migrating-web-part-pages-to-publishing-pages.aspx</link><pubDate>Mon, 17 Mar 2008 04:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8277106</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=8277106</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/03/16/migrating-web-part-pages-to-publishing-pages.aspx#comments</comments><description>&lt;P&gt;Unfortunately, you cannot natively migrate web part pages to WCM publishing pages. The benefit of publishing pages manifests itself in the centralized page layouts. Web part pages cannot be modified universally, but publishing page layouts can be thusly modified.&lt;/P&gt;
&lt;P&gt;So, to build a utility for migrating web part pages, it's a messy recipe. The result is only publishing pages with web parts intact, but not in the proper location nor is the page layout maintained; however, it is a better deal than to have to migrate web parts individually.&lt;/P&gt;
&lt;P&gt;Start by making sure the web is a &lt;A href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.publishing.publishingweb.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.publishing.publishingweb.aspx"&gt;PublishingWeb&lt;/A&gt;:&lt;/P&gt;
&lt;P class=code&gt;&lt;CODE&gt;if (PublishingSite.IsPublishingWeb)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return PublishingWeb.GetPublishingWeb(web);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Get all web part pages by looping through all document libraries and getting web part pages:&lt;/P&gt;
&lt;P class=code&gt;&lt;CODE&gt;foreach (SPListItem item in doclib.Items) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (item.File.Url.EndsWith(".aspx")) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WL("Adding web part page: {0}", item.File.Url);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; webPartPages.Add(item.File.Url, item);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; count++;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Next, create a new publishing page from a selected page layout (BlankWebPartPage.aspx is a good one): 
&lt;P class=code&gt;&lt;CODE&gt;// get the blank web part page layout&lt;BR&gt;List&amp;lt;PageLayout&amp;gt; layouts = new List&amp;lt;PageLayout&amp;gt;(pubWeb.GetAvailablePageLayouts());&lt;BR&gt;PageLayout layout = layouts.Find(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(PageLayout l) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return l.Name.Equals(pageLayoutName, StringComparison.CurrentCultureIgnoreCase);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;BR&gt;&lt;BR&gt;// get the pages collection and add the new publishing page&lt;BR&gt;PublishingPageCollection pages = pubWeb.GetPublishingPages();&lt;BR&gt;&lt;BR&gt;// change the name of the new page if it already exists&lt;BR&gt;SPQuery query = new SPQuery();&lt;BR&gt;query.Query = "&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='FileLeafRef'/&amp;gt;&amp;lt;Value Type='Text'&amp;gt;" + item.File.Name + "&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;";&lt;BR&gt;SPListItemCollection items = pubWeb.PagesList.GetItems(query);&lt;BR&gt;string pageName = item.File.Name;&lt;BR&gt;if (items.Count &amp;gt; 0) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string fileExtension = DateTime.Now.ToString("_MMddyy_hhmmss");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pageName = pageName.Replace(".aspx", fileExtension+".aspx");&lt;BR&gt;}&lt;BR&gt;&lt;BR&gt;// create the new page&lt;BR&gt;PublishingPage publishingPage = pages.Add(pageName, layout);&lt;BR&gt;publishingPage.Title = item.Title;&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Get a few &lt;A href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.splimitedwebpartmanager.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.splimitedwebpartmanager.aspx"&gt;SPLimitedWebPartManagers&lt;/A&gt; to read the old web parts and store them and to create new web parts on the publishing page:&lt;/P&gt;
&lt;P class=code&gt;&lt;CODE&gt;SPLimitedWebPartManager wppWpm = ((SPWeb)site).GetLimitedWebPartManager(item.File.Url, PersonalizationScope.Shared);&lt;BR&gt;SPLimitedWebPartManager publishingWpm = ((SPWeb)site).GetLimitedWebPartManager(item.File.Url, PersonalizationScope.Shared);&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Now you've got to copy the web parts and save the publishing page:&lt;/P&gt;
&lt;P class=code&gt;&lt;CODE&gt;foreach (WebPart oldWP in oldPageWpm.WebParts) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // don't move the Title bar, it's already built into the page&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (oldWP.ToString().Equals("Microsoft.SharePoint.WebPartPages.TitleBarWebPart")) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TitleBarWebPart titleBar = (TitleBarWebPart)oldWP;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // do steal the title bar property data, though&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; publishingPage.Title = titleBar.HeaderTitle;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; publishingPage.Description = titleBar.HeaderDescription;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;StringBuilder sb = new StringBuilder();&lt;BR&gt;try {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // export the web part to a stream&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oldWP.ExportMode = WebPartExportMode.All;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlWriter xwriter = XmlTextWriter.Create(sb);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; wppWpm.ExportWebPart(oldWP, xwriter);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xwriter.Close(); &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // import the web part from the stream&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string output = sb.ToString();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlReader xreader = XmlTextReader.Create(new StringReader(output));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string errorMessage;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WebPart newWP = publishingWpm.ImportWebPart(xreader, out errorMessage);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xreader.Close();&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // check for import errors&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!string.IsNullOrEmpty(errorMessage)) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpgradeLog(errorMessage, EventLogEntryType.Error);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // add the web part to the page&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; publishingWpm.AddWebPart(newWP, "Header", oldWP.ZoneIndex);&lt;BR&gt;}&lt;BR&gt;catch (Exception ex) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debug.WriteLine(ex.ToString());&lt;BR&gt;}&lt;BR&gt;}&lt;BR&gt;publishingPage.Update();&lt;/CODE&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8277106" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/Migration/">Migration</category></item><item><title>Joined the Community Kit for SharePoint team</title><link>http://blogs.msdn.com/b/sumanc/archive/2008/02/25/joined-the-community-kit-for-sharepoint-team.aspx</link><pubDate>Mon, 25 Feb 2008 17:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7893219</guid><dc:creator>Suman Chakrabarti [MSFT]</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/sumanc/rsscomments.aspx?WeblogPostID=7893219</wfw:commentRss><comments>http://blogs.msdn.com/b/sumanc/archive/2008/02/25/joined-the-community-kit-for-sharepoint-team.aspx#comments</comments><description>&lt;p&gt;I recently joined the Community Kit for SharePoint team. I'm hoping to enhance the Discussion Board features of SharePoint beyond the very basic forums we get out-of-box.&lt;/p&gt;  &lt;p&gt;Check it out: &lt;a title="http://codeplex.com/cks" href="http://codeplex.com/cks"&gt;http://codeplex.com/cks&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7893219" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/sumanc/archive/tags/SharePoint/">SharePoint</category></item></channel></rss>