<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Gunnar Peipman's ASP.NET blog</title><link>http://weblogs.asp.net/gunnarpeipman/default.aspx</link><description>ASP.NET, C#, SharePoint, SQL Server and general software development topics.</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/gunnarpeipman" type="application/rss+xml" /><item><title>Windows Workflow Foundation 4.0: Hello, workflow!</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/m6NELerAn9k/windows-workflow-foundation-4-0-hello-workflow.aspx</link><pubDate>Wed, 08 Jul 2009 09:11:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7143520</guid><dc:creator>DigiMortal</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7143520</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/07/08/windows-workflow-foundation-4-0-hello-workflow.aspx#comments</comments><description>&lt;p&gt;With Visual Studio 2010 we can also try out Windows Workflow Foundation 4.0. This posting introduces simple workflow with one new activity and provides you with some tips how to get Training Kit example running. Also I prepared some screenshots for you to show how new workflow designer looks like. I have also a little gift for you – Visual Studio 2010 solution with example shown here.&lt;/p&gt;  &lt;h3&gt;WriteLine activity&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 0px 0px 0px 10px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/wf4writeline_11CDD40E.png" width="306" height="256" /&gt;When creating new sequential workflow the new project contains workflow Sequence1 by default. We will use this workflow in this example. When new project with workflow is created open workflow and add new WriteLine activity to workflow. &lt;/p&gt;  &lt;p&gt;WriteLine activity is new activity that prints given line to output stream. &lt;/p&gt;  &lt;p&gt;You can see new look of workflow designer when you look at image on right. I like current design more but I think I’m also happy with new one. &lt;/p&gt;  &lt;p&gt;Now let’s assign some text to WriteLine activity. Just select the activity and press F4 to open properties window. There are two properties – Text and TextWriter. We assign value only to Text. Take a look at the following screenshot. &lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/wf4writelineproperties_679E2625.png" width="349" height="225" /&gt;&lt;/p&gt;  &lt;p&gt;Now here is the tricky part. By its type Text property is expression. In our case this expression is string constant and we &lt;strong&gt;must quote the string&lt;/strong&gt;. Otherwise we get workflow compilation errors at runtime.&lt;/p&gt;  &lt;h3&gt;Source files &lt;/h3&gt;  &lt;p&gt;Now let’s take a look at source files. Although we have only few of them, they may be interesting to programmers who have used workflows before. As a first thing let’s look at Sequence1.xaml. This file defines our only activity. &lt;/p&gt;  &lt;hr size="1" /&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p:Activity&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;mc:Ignorable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;x:Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Workflow1.Sequence1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;&lt;br /&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/netfx/2009/xaml/activities/design&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;xmlns:__Sequence1&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;clr-namespace:Workflow1;&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;xmlns:mc&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.openxmlformats.org/markup-compatibility/2006&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;xmlns:p&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/netfx/2009/xaml/activities&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;xmlns:sad&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;clr-namespace:System.Activities.Debugger;assembly=System.Activities&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;xmlns:x&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://schemas.microsoft.com/winfx/2006/xaml&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p:Sequence&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;    sad:XamlDebuggerXmlReader.FileName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;C:\Path To\Sequence1.xaml&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;p:WriteLine&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;[&amp;quot;Hello,workflow&amp;quot;]&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p:WriteLine&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p:Sequence&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;p:Activity&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;

&lt;p&gt;This is the code generated by Visual Studio. I added here last two lines that are made bold. Without these lines you cannot see WriteLine activity output because console window is closed immediately. &lt;/p&gt;

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Activities.Statements;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; Workflow1&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;AutoResetEvent&lt;/span&gt; syncEvent = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;AutoResetEvent&lt;/span&gt;(&lt;span style="color: blue"&gt;false&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WorkflowInstance myInstance = &lt;span style="color: blue"&gt;new&lt;/span&gt; WorkflowInstance(&lt;span style="color: blue"&gt;new&lt;/span&gt; Sequence1());&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myInstance.OnCompleted = &lt;span style="color: blue"&gt;delegate&lt;/span&gt;(WorkflowCompletedEventArgs e) { syncEvent.Set(); };&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myInstance.OnUnhandledException = &lt;span style="color: blue"&gt;delegate&lt;/span&gt;(WorkflowUnhandledExceptionEventArgs e)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(e.UnhandledException.ToString());&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; UnhandledExceptionAction.Terminate;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myInstance.OnAborted = &lt;span style="color: blue"&gt;delegate&lt;/span&gt;(WorkflowAbortedEventArgs e)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(e.Reason);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; syncEvent.Set();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; };&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myInstance.Run();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; syncEvent.WaitOne();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Press any key to continue...&amp;quot;&lt;/span&gt;);&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;strong&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/strong&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;

&lt;p&gt;This example was very easy and primitive and you saw here some basic things. In some of my near future postings I will introduce more new stuff that WF 4.0 brings us.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/downloads/Workflow1.zip"&gt;Download example solution&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f07%2f08%2fwindows-workflow-foundation-4-0-hello-workflow.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f07%2f08%2fwindows-workflow-foundation-4-0-hello-workflow.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Windows-Workflow-Foundation-40-Hello-workflow-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F07%2F08%2Fwindows-workflow-foundation-4-0-hello-workflow.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Windows-Workflow-Foundation-40-Hello-workflow-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F07%2F08%2Fwindows-workflow-foundation-4-0-hello-workflow.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Windows-Workflow-Foundation-40-Hello-workflow-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F07%2F08%2Fwindows-workflow-foundation-4-0-hello-workflow.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7143520" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dz7e1Uvzr6_bRufuSpurpkCPGFQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dz7e1Uvzr6_bRufuSpurpkCPGFQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dz7e1Uvzr6_bRufuSpurpkCPGFQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dz7e1Uvzr6_bRufuSpurpkCPGFQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/m6NELerAn9k" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/WF/default.aspx">WF</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/WWF/default.aspx">WWF</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Workflow/default.aspx">Workflow</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/07/08/windows-workflow-foundation-4-0-hello-workflow.aspx</feedburner:origLink></item><item><title>ASP.NET MVC: How to combine scripts and other resources</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/ZWoR8zBzElM/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx</link><pubDate>Sat, 04 Jul 2009 19:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7140023</guid><dc:creator>DigiMortal</dc:creator><slash:comments>10</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7140023</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/07/04/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx#comments</comments><description>&lt;p&gt;ASP.NET pages that use AJAX components make usually many requests to server per one page to load all required JavaScript and CSS files. Connections, like all other real time resources, are most expensive to create and keep. If we can somehow decrease the number of requests per page load then we need less server resources for same amount of users. For ASP.NET forms we can use script combining, for ASP.NET MVC applications we can use &lt;a href="http://aspmvccombine.codeplex.com/" target="_blank"&gt;ASP.NET MVC Client-side Resource Combine&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;MVC Resource Combine is open-source project you can find in &lt;a href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;. ASP.NET official &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.scriptmanager.aspx" target="_blank"&gt;ScriptManager&lt;/a&gt; needs server-side form as a container. This means that all scripts are loaded in the body of page. I have found no way how to make ScriptManager to create script and other references to page header. MVC Resource Combine is free of this problem. &lt;/p&gt;  &lt;p&gt;MVC Resource Combine is easy to use. Just follow these steps.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download the latest release and add references to DLL-s of MVC Resource Combine. &lt;/li&gt;    &lt;li&gt;Add the following line to web.config file, under &amp;lt;configSections&amp;gt; element:      &lt;br /&gt;      &lt;hr size="1" /&gt;      &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;       &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;section&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;resourceCombine&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Mvc.ResourceCombine.ConfigSectionSetting, &lt;br /&gt;Mvc.ResourceCombine&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;hr size="1" /&gt;&lt;span style="color: blue"&gt;
        &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Add the following line to web.config file, under &amp;lt;configuration&amp;gt; section: 
    &lt;br /&gt;

    &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
      &lt;hr size="1" /&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resourceCombine&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;definitionUrl&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/App_Data/combine.xml&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;hr size="1" /&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;  &lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Now open Global.asax and add the following line before all the other route definitions: 
    &lt;hr size="1" /&gt;

    &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
      &lt;pre style="margin: 0px"&gt;routes.AddResourceCombineRoute(&lt;span style="color: #a31515"&gt;&amp;quot;Resource Combine&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

      &lt;hr size="1" /&gt;&amp;#160; &lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;To App_Data folder add new XML-file combine.xml. By example, for jqGrid you may have JavaScript resource set like this: 
    &lt;br /&gt;

    &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
      &lt;hr size="1" /&gt;

      &lt;pre style="margin: 0px"&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: blue"&gt; &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: blue"&gt; &lt;/span&gt;&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;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resourceCombine&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;url&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/combine.axd&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;defaultDuration&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;15&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;  defaultVersion&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resourceSet&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;jqGrid&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;duration&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;30&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;  &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;a&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/jquery-1.3.2.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/jquery.jqGrid.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/js/jqModal.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/js/jqDnR.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/jquery.ajaxQueue.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/jquery.bgiframe.min.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/thickbox-compressed.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource&lt;/span&gt;&lt;span style="color: blue"&gt; &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;~/Scripts/jquery.autocomplete.js&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;      &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;LocalStatic&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;resourceSet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;resourceCombine&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;hr size="1" /&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;  &lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Now open Site.Master and add call for MVC Resource Combine and specify resource set by its name (jqGrid):&amp;#160;&amp;#160; &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
      &lt;hr size="1" /&gt;

      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;%&lt;span style="color: blue"&gt;= &lt;/span&gt;&lt;span style="color: red"&gt;Html.CombinerLink&lt;/span&gt;(&amp;quot;&lt;span style="color: blue"&gt;jqGrid&lt;/span&gt;&amp;quot;)%&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

      &lt;hr size="1" /&gt;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Now run your application and view page source. You should see something like this: 
    &lt;hr size="1" /&gt;

    &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
      &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;text/javascript&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/combine.axd/jqGrid/a&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;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
    &lt;/div&gt;

    &lt;hr size="1" /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;NB! &lt;/strong&gt;Don’t forget to add reference to Mvc.ResourceCombine namespace in your Global.asax and Site.Master files. Well, if you have &lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;Resharper&lt;/a&gt;, then it is almost possible to forget these references. :)&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s see results. It’s Saturday and I’m watching Estonian biggest song contest, so I’m too lazy to add Firebug screenshots here. I have a little bit different configuration but numbers in the following table should give you some idea about wins in performance.&lt;/p&gt;

&lt;table border="1" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&amp;#160;&lt;/td&gt;

      &lt;td align="center"&gt;
        &lt;strong&gt;Before 
            &lt;br /&gt;combine&lt;/strong&gt;
      &lt;/td&gt;

      &lt;td align="center"&gt;
        &lt;strong&gt;After 
            &lt;br /&gt;combine&lt;/strong&gt;
      &lt;/td&gt;

      &lt;td align="center"&gt;
        &lt;strong&gt;Difference
            &lt;br /&gt;(before/after)&lt;/strong&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;Requests&lt;/td&gt;

      &lt;td align="right"&gt;
        21
      &lt;/td&gt;

      &lt;td align="right"&gt;
        4
      &lt;/td&gt;

      &lt;td align="right"&gt;
        5.25
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;Size (kb)&lt;/td&gt;

      &lt;td align="right"&gt;
        259
      &lt;/td&gt;

      &lt;td align="right"&gt;
        19
      &lt;/td&gt;

      &lt;td align="right"&gt;
        13.63
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;Time (s)&lt;/td&gt;

      &lt;td align="right"&gt;
        7.69
      &lt;/td&gt;

      &lt;td align="right"&gt;
        4.84
      &lt;/td&gt;

      &lt;td align="right"&gt;
        1.59
      &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;As you can see, using MVC Resource Combining it is possible to achieve better performance with pretty simple and time consuming efforts. Also you don’t have to mix ScriptManager and other ASP.NET forms elements to your ASP.NET MVC views. By the way, you can combine also all the other resources that can be downloaded as one file – by example, style sheets.&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f07%2f04%2fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f07%2f04%2fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f07%2f04%2fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f07%2f04%2fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/ASPNET-MVC-How-to-combine-scripts-and-other-resources-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F07%2F04%2Fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/ASPNET-MVC-How-to-combine-scripts-and-other-resources-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F07%2F04%2Fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/ASPNET-MVC-How-to-combine-scripts-and-other-resources-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F07%2F04%2Fasp-net-mvc-how-to-combine-scripts-and-other-resources.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7140023" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WqkolvgJsRoVzJnUatFPQyzz_ak/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WqkolvgJsRoVzJnUatFPQyzz_ak/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WqkolvgJsRoVzJnUatFPQyzz_ak/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WqkolvgJsRoVzJnUatFPQyzz_ak/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/ZWoR8zBzElM" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/SEO/default.aspx">SEO</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Performance/default.aspx">Performance</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/07/04/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx</feedburner:origLink></item><item><title>Microsoft forums – where they are?</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/idspWffRvV0/microsoft-forums.aspx</link><pubDate>Tue, 23 Jun 2009 17:00:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7111408</guid><dc:creator>DigiMortal</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7111408</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/23/microsoft-forums.aspx#comments</comments><description>&lt;p&gt;Microsoft has a lot forums in different (community) sites with a lot of topics. In this posting I listed up Microsoft forums, their locations and forum groups (categories under which forums belong). The purpose of this posting is to provide you with important information – where you get help when you have technical problems. &lt;/p&gt;  &lt;h3&gt;MSDN Forums&lt;/h3&gt;  &lt;p&gt;Location: &lt;a href="http://social.msdn.microsoft.com/forums/en-US/categories/"&gt;http://social.msdn.microsoft.com/forums/en-US/categories/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;MSDN forums site is Microsoft’s biggest forum site I think. It’s a huge pile of information about almost every topic you can imagine. For many technologies you can consider MSDN forums as main source of support and information. &lt;/p&gt;  &lt;p&gt;Forum groups:&lt;/p&gt;  &lt;table border="0" width="100%"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;ul&gt;           &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/netdevelopment" target="_blank"&gt;.Net Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualstudio" target="_blank"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/vsexpress" target="_blank"&gt;Visual Studio Express Editions&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/vsts" target="_blank"&gt;Visual Studio Team System&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualbasic" target="_blank"&gt;Visual Basic&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualcsharp" target="_blank"&gt;Visual C#&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualc" target="_blank"&gt;Visual C++&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualjsharp" target="_blank"&gt;Visual J#&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/visualfoxpro" target="_blank"&gt;Visual FoxPro&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/vs2010ctp" target="_blank"&gt;Visual Studio 2010 and the .NET Framework 4.0 CTP Feedback&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/accessibility" target="_blank"&gt;Accessibility&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/architecture" target="_blank"&gt;Architcture&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/audiovideodev" target="_blank"&gt;Audio and Video Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/azure" target="_blank"&gt;Azure&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/biztalkserver" target="_blank"&gt;BizTalk Server&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/commserver" target="_blank"&gt;Commerce Server&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/csf" target="_blank"&gt;Connected Services Framework&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/customercareframework" target="_blank"&gt;Customer Care Framework&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/dataplatformdev" target="_blank"&gt;Data Platform Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/devlabs" target="_blank"&gt;DevLabs&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/espdevelopment" target="_blank"&gt;ESP Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/gadgets" target="_blank"&gt;Gadgets&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/healthvault" target="_blank"&gt;HealthVault&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/industrysolutionsgroup" target="_blank"&gt;Industry Solutions Group&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/iedevelopment" target="_blank"&gt;Internet Explorer Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/jscript" target="_blank"&gt;JScript&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/learning" target="_blank"&gt;Learning&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/translation" target="_blank"&gt;Machine Translation and Language Tools&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/mdm" target="_blank"&gt;Master Data Management&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/isvcommunitycenter" target="_blank"&gt;Microsoft ISV Community Center&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/microsoftlivelabs" target="_blank"&gt;Microsoft Live Labs&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/msrefsource" target="_blank"&gt;Microsoft Reference Source&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/msresearchtools" target="_blank"&gt;Microsoft Research Commercial Tools&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/robotics" target="_blank"&gt;Microsoft Robotics&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/searchserver" target="_blank"&gt;Microsoft Search Server 2008 and Search Server 2008 Express&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;ul&gt;           &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sync" target="_blank"&gt;Microsoft Sync Framework&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/officedev" target="_blank"&gt;Office Development&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/oldevelopment" target="_blank"&gt;Office Live Development&lt;/a&gt;, &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/officelivesmallbusiness" target="_blank"&gt;Office Live Small Business&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/openspecifications" target="_blank"&gt;Open Specifications&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/parallelcomputing" target="_blank"&gt;Parallel Computing&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/performance" target="_blank"&gt;Performance&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/popfly" target="_blank"&gt;Popfly&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/security" target="_blank"&gt;Security&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/securitydevcycle" target="_blank"&gt;Security Development Lifecycle (SDL)&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sharepoint" target="_blank"&gt;SharePoint Products and Technologies&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sbappdev" target="_blank"&gt;Small Business Application Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/smartdevicedevelopment" target="_blank"&gt;Smart Device Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/windev" target="_blank"&gt;Software Development for Windows Client&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sediscussion" target="_blank"&gt;Software Engineering Discussion&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/slps" target="_blank"&gt;Software Licensing and Protection Services&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sqlserverdataservices" target="_blank"&gt;SQL Data Services&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sqlserver" target="_blank"&gt;SQL Server&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/storagecore" target="_blank"&gt;Storage Platform – Core&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/tellmestudio" target="_blank"&gt;Tellme Studio&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/uc" target="_blank"&gt;Unified Communications&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/windiagnostics" target="_blank"&gt;Windows Diagnostics&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/embeddedwindows" target="_blank"&gt;Windows Embedded Standard&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/windowsforms" target="_blank"&gt;Windows Forms&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/wldev" target="_blank"&gt;Windows Live Developer Forums&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/winnetdev" target="_blank"&gt;Windows Networking Development&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/windowssearch" target="_blank"&gt;Windows Search Technologies&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/windowsserver" target="_blank"&gt;Windows Server&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/chatter" target="_blank"&gt;Community Chatter&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/feedbackanddiscussions" target="_blank"&gt;Feedback and Discussions&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/sandboxforums" target="_blank"&gt;Sandbox Forums&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/multipoint" target="_blank"&gt;MultiPoint&lt;/a&gt; &lt;/li&gt;            &lt;li&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/category/dynamics" target="_blank"&gt;Dynamics&lt;/a&gt; &lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;h3&gt;ASP.NET Forums&lt;/h3&gt;  &lt;p&gt;Location: &lt;a href="http://forums.asp.net/"&gt;http://forums.asp.net/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;ASP.NET forums are focused on ASP.NET and data management technologies. This is the main source of ASP.NET related information and if you have problems with ASP.NET you should start with this forum. If you state your questions correctly then you get answers pretty quickly.&lt;/p&gt;  &lt;p&gt;Forum groups:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=7" target="_blank"&gt;General ASP.NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=34" target="_blank"&gt;ASP.NET AJAX&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=35" target="_blank"&gt;Visual Studio&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=16" target="_blank"&gt;Data Access&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=10" target="_blank"&gt;Advanced ASP.NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=12" target="_blank"&gt;Migration to ASP.NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=2" target="_blank"&gt;Starter Kits and Source Projects&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=31" target="_blank"&gt;Microsoft Downloads&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=5" target="_blank"&gt;Development Tools&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=29" target="_blank"&gt;Windows Hosting&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=36" target="_blank"&gt;Community&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.asp.net/default.aspx?GroupID=1" target="_blank"&gt;.Net Languages&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Silverlight Forums&lt;/h3&gt;  &lt;p&gt;Location: &lt;a href="http://silverlight.net/forums/"&gt;http://silverlight.net/forums/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Silverlight forums are for you if you are serious Silverlight hacker. You can find information almost about every Silverlight topic. Although I am not Silverlight pro and don’t visit this forum often I can see that this forum is pretty active. If you have questions then feel free to ask there. You can see only few forum groups in the following list, but don’t throw this forum away – all these groups have good bunch of forums.&lt;/p&gt;  &lt;p&gt;Forum groups:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://silverlight.net/forums/default.aspx?GroupID=6" target="_blank"&gt;General Silverlight&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/forums/default.aspx?GroupID=7" target="_blank"&gt;Silverlight Programming&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/forums/default.aspx?GroupID=8" target="_blank"&gt;Silverlight Design&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Windows Forms / WPF Forums&lt;/h3&gt;  &lt;p&gt;Location: &lt;a href="http://windowsclient.net/Forums/"&gt;http://windowsclient.net/Forums/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Forums about building client environment on Windows platform. Windows Forms forums are moved away for today and they are part of MSDN forums. WPF forums are still there and don’t be afraid trying them out. &lt;/p&gt;  &lt;p&gt;Forum groups:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Presentation Foundation&lt;/li&gt;    &lt;li&gt;Windows Forms &lt;/li&gt;    &lt;li&gt;Acropolis &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;IIS Forums&lt;/h3&gt;  &lt;p&gt;Location: &lt;a href="http://forums.iis.net/"&gt;http://forums.iis.net/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If you are IIS admin or developer or you are just interested in IIS and its features then check out IIS forums. Similarly to Silverlight forums you can see not very much forum groups here but almost all these groups contain a lot of forums. Just check out if these forums may help you. &lt;/p&gt;  &lt;p&gt;Forum groups:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=40" target="_blank"&gt;IIS 5.x &amp;amp; 6.0&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=41" target="_blank"&gt;IIS 7.0&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=47" target="_blank"&gt;64-bit Editions of IIS&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=39" target="_blank"&gt;General&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=49" target="_blank"&gt;Partner and Community Forums&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=51" target="_blank"&gt;Logparser Forums&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://forums.iis.net/default.aspx?GroupID=52" target="_blank"&gt;Web Platform&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If I missed some Microsoft forums site here then please let me know.&lt;/p&gt;

&lt;hr size="1"&gt;

&lt;table border="0" cellspacing="2" cellpadding="0" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f23%2fmicrosoft-forums.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f23%2fmicrosoft-forums.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f23%2fmicrosoft-forums.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f23%2fmicrosoft-forums.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Microsoft-forums-where-they-are-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F23%2Fmicrosoft-forums.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Microsoft-forums-where-they-are-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F23%2Fmicrosoft-forums.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Microsoft-forums-where-they-are-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F23%2Fmicrosoft-forums.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7111408" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vW1duDAtjqOBpkABAFwWLMMIo70/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vW1duDAtjqOBpkABAFwWLMMIo70/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vW1duDAtjqOBpkABAFwWLMMIo70/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vW1duDAtjqOBpkABAFwWLMMIo70/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/idspWffRvV0" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/IIS/default.aspx">IIS</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/23/microsoft-forums.aspx</feedburner:origLink></item><item><title>Vacation 2009/1 (23.06-01.07)</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/YhksX9ePXWk/vacation-2009.aspx</link><pubDate>Tue, 23 Jun 2009 12:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7111437</guid><dc:creator>DigiMortal</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7111437</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/23/vacation-2009.aspx#comments</comments><description>&lt;p&gt;I am at vacation from 23.06-01.07. This time I am Italy again and besides hanging around in different nice places I visit also their yearly heavy-metal pearl: Gods of Metal festival!&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/godsofmetal2009_4DA624CB.jpg" width="524" height="131" /&gt; &lt;/p&gt;  &lt;p&gt;Meanwhile this blog – like a mystery – publishes new writing everyday to keep you happy and thumbs up. Like always, feel free to leave me comments here but don’t expect any answers before 01.07. I am not really sure if I have time (or will) to be in internet during vacation. :)&lt;/p&gt;  &lt;p&gt;P.S.If somebody can suggest me cool places in Monza then I am more than happy :)&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7111437" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nJJsZnrQ5N8h7Usz5B5WwVTMvz8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nJJsZnrQ5N8h7Usz5B5WwVTMvz8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nJJsZnrQ5N8h7Usz5B5WwVTMvz8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nJJsZnrQ5N8h7Usz5B5WwVTMvz8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/YhksX9ePXWk" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Varia/default.aspx">Varia</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/23/vacation-2009.aspx</feedburner:origLink></item><item><title>.Net Framework 4.0: Using memory mapped files</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/L5RYO5jjXTA/net-framework-4-0-using-memory-mapped-files.aspx</link><pubDate>Sun, 21 Jun 2009 09:56:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7131490</guid><dc:creator>DigiMortal</dc:creator><slash:comments>8</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7131490</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/21/net-framework-4-0-using-memory-mapped-files.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/gunnarpeipman/pages/visual-studio-2010-and-net-framework-4-0.aspx" target="_blank"&gt;.Net Framework 4.0&lt;/a&gt; introduces memory mapped files. Memory mapped files are useful when you need to do in-memory data manipulation and your data structures are large. For large in-memory data the performance of memory mapped file is the best. It is much faster than &lt;a href="http://msdn.microsoft.com/en-us/library/system.io.memorystream.aspx" target="_blank"&gt;MemoryStream&lt;/a&gt;. And like files on hard disc, memory mapped files can be shared between different programs. &lt;a href="http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile(VS.100).aspx" target="_blank"&gt;MemoryMappedFile&lt;/a&gt; and other classes for memory mapped files can be found from &lt;a href="http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles(VS.100).aspx" target="_blank"&gt;System.IO.MemoryMappedFiles&lt;/a&gt; namespace.&lt;/p&gt;  &lt;p&gt;Now let’s see the example that contains two applications: one of them is primitive server that creates and holds memory mapped file and the other is simple client that reads that file. In the end of the posting you can find download link for example &lt;a href="http://weblogs.asp.net/gunnarpeipman/pages/visual-studio-2010-and-net-framework-4-0.aspx" target="_blank"&gt;Visual Studio 2010&lt;/a&gt; solution.&lt;/p&gt;  &lt;h3&gt;MemoryMappedFile server&lt;/h3&gt;  &lt;p&gt;Our server, as I said before, is primitive. It creates memory mapped file and writes some bytes to our file. Then it starts waiting key press from user to release resources and exit. The code of server is here.&lt;/p&gt; &lt;strong&gt;C#&lt;/strong&gt;   &lt;hr size="1" /&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Memory mapped file server started&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; file = &lt;span style="color: #2b91af"&gt;MemoryMappedFile&lt;/span&gt;.CreateNew(&lt;span style="color: #a31515"&gt;&amp;quot;myFile&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;int&lt;/span&gt;.MaxValue))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; bytes = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: blue"&gt;byte&lt;/span&gt;[24];&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &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; bytes.Length; i++)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bytes[i] = (&lt;span style="color: blue"&gt;byte&lt;/span&gt;)(65 + i);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; writer = file.CreateViewAccessor(0, bytes.Length))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; writer.WriteArray&amp;lt;&lt;span style="color: blue"&gt;byte&lt;/span&gt;&amp;gt;(0, bytes, 0, bytes.Length);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Run memory mapped file reader before exit&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Press any key to exit ...&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;
&lt;strong&gt;VB.NET&lt;/strong&gt; 

&lt;hr size="1" /&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 10pt &amp;#39;Times New Roman&amp;#39;; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 12px; font-family: &amp;#39;Courier New&amp;#39;; white-space: nowrap; color: rgb(0,0,187); font-size: 10pt" class="Apple-style-span"&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Private&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Shared&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Sub&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Main&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;ByVal&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;args&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Memory mapped file server started&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Using&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;a style="color: rgb(0,0,102)" href="http://www.google.com/search?q=FILE+site:msdn.microsoft.com"&gt;&lt;span style="color: rgb(0,128,0)" class="kw3"&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;MemoryMappedFile.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;CreateNew&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;myFile&amp;quot;&lt;/span&gt;,&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Integer&lt;/span&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;MaxValue&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;bytes&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Byte&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;23&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;}&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;For&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;i&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;0&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;To&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;bytes.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;-&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;1 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bytes&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;i&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw7"&gt;CByte&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;65&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;+&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;i&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Next&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using writer&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;a style="color: rgb(0,0,102)" href="http://www.google.com/search?q=FILE+site:msdn.microsoft.com"&gt;&lt;span style="color: rgb(0,128,0)" class="kw3"&gt;file&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;CreateViewAccessor&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;0, bytes.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; writer.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteArray&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;Of&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Byte&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;0, bytes, 0, bytes.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Before exiting run memory mapped file reader&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Press any key to exit ...&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;ReadLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 

&lt;hr size="1" /&gt;

&lt;h3&gt;MemoryMappedFile reader&lt;/h3&gt;

&lt;p&gt;The client project opens memory mapped file and reads bytes that server wrote there. I hope you notice that I hard coded the count of bytes that reader reads from memory mapped file. The point is simple – we are accessing memory mapped file directly without any contracts for file structure. In reality there will be some API that you use to manager memory mapped file in your application.&lt;/p&gt;
&lt;strong&gt;C#&lt;/strong&gt; 

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Memory mapped file reader started&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; file = &lt;span style="color: #2b91af"&gt;MemoryMappedFile&lt;/span&gt;.OpenExisting(&lt;span style="color: #a31515"&gt;&amp;quot;myFile&amp;quot;&lt;/span&gt;))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; reader = file.CreateViewAccessor(0, 24))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; bytes = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: blue"&gt;byte&lt;/span&gt;[24];&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; reader.ReadArray&amp;lt;&lt;span style="color: blue"&gt;byte&lt;/span&gt;&amp;gt;(0, bytes, 0, bytes.Length);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Reading bytes&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &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; bytes.Length; i++)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.Write((&lt;span style="color: blue"&gt;char&lt;/span&gt;)bytes[i] + &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;&amp;quot;Press any key to exit ...&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.ReadLine();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;
&lt;strong&gt;VB.NET&lt;/strong&gt;

&lt;hr size="1" /&gt; &lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 10pt &amp;#39;Times New Roman&amp;#39;; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 12px; font-family: &amp;#39;Courier New&amp;#39;; white-space: nowrap; color: rgb(0,0,187); font-size: 10pt" class="Apple-style-span"&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Private&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Shared&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Sub&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Main&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;ByVal&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;args&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Memory mapped file reader started&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Using&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;a style="color: rgb(0,0,102)" href="http://www.google.com/search?q=FILE+site:msdn.microsoft.com"&gt;&lt;span style="color: rgb(0,128,0)" class="kw3"&gt;file&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;MemoryMappedFile.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;OpenExisting&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;myFile&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using reader&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;a style="color: rgb(0,0,102)" href="http://www.google.com/search?q=FILE+site:msdn.microsoft.com"&gt;&lt;span style="color: rgb(0,128,0)" class="kw3"&gt;file&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;CreateViewAccessor&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;0, 24&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;bytes&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Byte&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;23&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;{&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;}&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; reader.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;ReadArray&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;Of&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Byte&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="nu0"&gt;0&lt;/span&gt;, bytes,&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="nu0"&gt;0&lt;/span&gt;, bytes.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Reading bytes&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;For&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;i&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;0&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;To&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;bytes.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;-&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;1 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Write&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw7"&gt;CChar&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;bytes&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;i&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;&amp;amp;&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot; &amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Next&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Empty&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Press any key to exit ...&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Console.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;ReadLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 

&lt;hr size="1" /&gt; 

&lt;p&gt;Now run server (MemoryMappedFileCreate) and after that the client (MemoryMappedFileRead). Server creates new memory mapped file and writes there 24 bytes of characters. Client then reads these bytes and writes them to console.&lt;/p&gt;

&lt;p&gt;
To find out more about memory mapped files feel free to read &lt;a href="http://blogs.msdn.com/salvapatuel/default.aspx"&gt;MSDN Utopia&lt;/a&gt; blog entry &lt;a href="http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx"&gt;Working with memory mapped files in .NET 4&lt;/a&gt;.
&lt;/p&gt;

&lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;
    &lt;tr&gt;
      &lt;td valign="top"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/zip_0BBD79A8.png" width="45" height="45" /&gt; &lt;/td&gt;

      &lt;td valign="top"&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/downloads/MemoryMappedFiles.zip" target="_blank"&gt;&lt;strong&gt;MemoryMappedFiles.zip&lt;/strong&gt;&lt;/a&gt; 

        &lt;br /&gt;Visual Studio 2010 Solution 

        &lt;br /&gt;Size: 25 KB&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;&lt;/table&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f21%2fnet-framework-4-0-using-memory-mapped-files.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f21%2fnet-framework-4-0-using-memory-mapped-files.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Net-Framework-40-Using-memory-mapped-files-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F21%2Fnet-framework-4-0-using-memory-mapped-files.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Net-Framework-40-Using-memory-mapped-files-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F21%2Fnet-framework-4-0-using-memory-mapped-files.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Net-Framework-40-Using-memory-mapped-files-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F21%2Fnet-framework-4-0-using-memory-mapped-files.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7131490" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/63k8VLXBncxKMLnBu6QDS83L32s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/63k8VLXBncxKMLnBu6QDS83L32s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/63k8VLXBncxKMLnBu6QDS83L32s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/63k8VLXBncxKMLnBu6QDS83L32s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/L5RYO5jjXTA" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/21/net-framework-4-0-using-memory-mapped-files.aspx</feedburner:origLink></item><item><title>Visual Studio 2010: Brief view at debug history</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/hg3iZSfnYWk/visual-studio-2010-brief-view-at-debug-history.aspx</link><pubDate>Fri, 19 Jun 2009 16:41:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7130290</guid><dc:creator>DigiMortal</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7130290</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/19/visual-studio-2010-brief-view-at-debug-history.aspx#comments</comments><description>&lt;p&gt;Visual Studio 2010 introduces also some new debugging features. One of them is debug history. Debug history enables you to track all the points on track of control flow and it also monitors activities that you cannot see otherwise. It makes debugging of hard to find problems much easier, I think. Of course, there are many other new and cool debugging features available.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/debughistory_57853701.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 0px 0px 5px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/debughistory_thumb_22688204.png" width="304" height="386" /&gt;&lt;/a&gt;Image on right shows how debug history windows looks like. You can click on image to see it at original size. As there are usually many steps of code execution shown it is very convenient if we are able to filter messages somehow. &lt;/p&gt;  &lt;p&gt;You can filter debug history by step category and thread. The last filtering option is specially useful when building multithreaded applications. You can also switch some filters off when you are looking for debugger messages located at specific categories.&lt;/p&gt;  &lt;p&gt;Screenshot on right shows one cool thing more – debug history contains also information about registry and file system access. I think it makes hunting of hard to find bugs more easier than before (why is SharePoint first thing that I remember when somebody mentions hard to find bugs…:) ).&lt;/p&gt;  &lt;p&gt;When you click on debug history entry then history entry will be expanded. On the following screenshot fragment you can see what information is given when debugger hits breakpoint. &lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/debughistoryexpanded_2D8922A9.png" width="532" height="207" /&gt; &lt;/p&gt;  &lt;p&gt;As you can see, debug history is very powerful feature. It makes it much easier to track you code flow and control steps that your code has executed. Debug history window is also able to show data hierarchically. You have to modify some settings to turn hierarchical debug data on. I will blog about it in near future. So, stay tuned!&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f19%2fvisual-studio-2010-brief-view-at-debug-history.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f19%2fvisual-studio-2010-brief-view-at-debug-history.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Visual-Studio-2010-Brief-view-at-debug-history-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F19%2Fvisual-studio-2010-brief-view-at-debug-history.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Visual-Studio-2010-Brief-view-at-debug-history-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F19%2Fvisual-studio-2010-brief-view-at-debug-history.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Visual-Studio-2010-Brief-view-at-debug-history-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F19%2Fvisual-studio-2010-brief-view-at-debug-history.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7130290" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bBOnvW7Gemw7Yv568k1GpHRlVck/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bBOnvW7Gemw7Yv568k1GpHRlVck/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bBOnvW7Gemw7Yv568k1GpHRlVck/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bBOnvW7Gemw7Yv568k1GpHRlVck/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/hg3iZSfnYWk" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/19/visual-studio-2010-brief-view-at-debug-history.aspx</feedburner:origLink></item><item><title>The Data Model Resource Book – Universal Data Models</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/8utVlbvqTP8/the-data-model-resource-book-universal-data-models.aspx</link><pubDate>Thu, 18 Jun 2009 03:01:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7128483</guid><dc:creator>DigiMortal</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7128483</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/18/the-data-model-resource-book-universal-data-models.aspx#comments</comments><description>&lt;table border="0" align="left"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td align="center"&gt;&lt;a href="http://www.amazon.com/gp/product/0471380237?ie=UTF8&amp;amp;tag=gupesasnebl-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0471380237"&gt;&lt;img style="border-right-width: 0px; margin: 5px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="data-model-resource-book-vol-1" border="0" alt="The Data Model Resource Book, Vol. 1: A Library of Universal Data Models for All Enterprises" src="http://weblogs.asp.net/blogs/gunnarpeipman/datamodelresourcebookvol1_thumb_573769AA.png" width="184" height="227" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://www.amazon.com/gp/product/0471380237?ie=UTF8&amp;amp;tag=gupesasnebl-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0471380237"&gt;&lt;img border="0" alt="The Data Model Resource Book, Vol. 1: A Library of Universal Data Models for All Enterprises" vspace="3" src="http://weblogs.asp.net/blogs/gunnarpeipman/bookshelf/buy-from-amazon.png" /&gt;&lt;/a&gt; &lt;img style="border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-top-style: none !important; border-left-style: none !important" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=gupesasnebl-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0471380237" width="1" height="1" /&gt;           &lt;br /&gt;&amp;#160;&amp;#160; &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td align="center"&gt;&lt;a title="&amp;gt;The Data Model Resource Book, Vol. 2: A Library of Data Models for Specific Industries" href="http://www.amazon.com/gp/product/0471353485?ie=UTF8&amp;amp;tag=gupesasnebl-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0471353485" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px 10px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="The Data Model Resource Book, Vol. 2: A Library of Data Models for Specific Industries" border="0" alt="The Data Model Resource Book, Vol. 2: A Library of Data Models for Specific Industries" src="http://weblogs.asp.net/blogs/gunnarpeipman/datamodelresourcebookvol2_252FA353.png" width="184" height="226" /&gt;&lt;/a&gt;           &lt;br /&gt;&lt;a href="http://www.amazon.com/gp/product/0471353485?ie=UTF8&amp;amp;tag=gupesasnebl-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0471353485"&gt;&lt;img border="0" alt="The Data Model Resource Book, Vol. 2: A Library of Data Models for Specific Industries" vspace="3" src="http://weblogs.asp.net/blogs/gunnarpeipman/bookshelf/buy-from-amazon.png" /&gt;&lt;/a&gt;&lt;img style="border-bottom-style: none !important; border-right-style: none !important; margin: 0px; border-top-style: none !important; border-left-style: none !important" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=gupesasnebl-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0471353485" width="1" height="1" /&gt; &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Couple of years ago I brought two books for my company. Today I can say that I made a small investment that still works pretty well. These books are titled as &lt;strong&gt;The Data Model Reosurce Book&lt;/strong&gt; and author of these books is Len Silverston.&lt;/p&gt;  &lt;p&gt;First volume of Data Model Resource Book introduces common models that are used by almost all industries. Second volume offers us industry specific models. &lt;/p&gt;  &lt;p&gt;These models are not something final and also they are not absolute truth. You can use these models to build your own models that fit best to your applications. &lt;/p&gt;  &lt;p&gt;For me these models are very important. When I start modeling new object model I will check these books for sure. Most interesting parts of models represented in these books are abstractions. You can build many parts of your system on abstractions based on models of this book. You don’t need to change these abstractions significantly later. Also these abstractions keep you moving on right direction.&lt;/p&gt;  &lt;p&gt;Both books can be used as manuals you keep on your desk. But you can also read these books from cover to cover&amp;#160; – you will learn a lot of new stuff and you will look at your models not like before. &lt;/p&gt;  &lt;p&gt;My company uses these books and this far we have had no disappointments – all the models and abstractions from these books have helped us a lot. I strongly recommend Data Model Resource Books for everybody how wants to build strong, extensible and flexible data models.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Review from Amazon&lt;/h3&gt;  &lt;p&gt;&lt;em&gt;&amp;quot;Len Silverston has produced an enormously useful two-volume compendium of generic (but not too generic) data models for an extensive set of typical enterprise subject areas, and for various industries that any data modeler will likely encounter at some point in his or her career. The material is clearly written, well organized, and goes below the obvious to some of the more perverse and difficult information requirements in an enterprise. This is an invaluable resource for doing one's homework before diving into any modeling session; if you can't find it here, there is certainly a very similar template that you can use for just about any situation with which you might be faced.&amp;quot;&lt;/em&gt;    &lt;br /&gt;--William G. Smith, President, William G. Smith &amp;amp; Associates&lt;/p&gt;  &lt;h3&gt;Table of Contents&lt;/h3&gt;  &lt;table border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th bgcolor="lightgrey"&gt;Volume 1&lt;/th&gt;&lt;th bgcolor="lightgrey"&gt;Volume 2&lt;/th&gt;&lt;/tr&gt;     &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;Foreword.            &lt;br /&gt;Acknowledgments.             &lt;br /&gt;About the Author. &lt;/p&gt;          &lt;p&gt;Introduction.            &lt;br /&gt;People and Organizations.             &lt;br /&gt;Products.             &lt;br /&gt;Ordering Products.             &lt;br /&gt;Shipments.             &lt;br /&gt;Work Effort.             &lt;br /&gt;Invoicing.             &lt;br /&gt;Accounting and Budgeting.             &lt;br /&gt;Human Resources. &lt;/p&gt;          &lt;p&gt;Creating the Data Warehouse Data Model from the Enterprise Data Model.            &lt;br /&gt;A Sample Data Warehouse Data Model.             &lt;br /&gt;Star Schema Designs for Sales Analysis.             &lt;br /&gt;Star Schema Designs for Human Resources.             &lt;br /&gt;Additional Star Schema Designs.             &lt;br /&gt;Implementing the Universal Data Models. &lt;/p&gt;          &lt;p&gt;Appendix A: Logical Data Model Entities and Attributes.            &lt;br /&gt;Appendix B: Data Warehouse Data Model Tables and Columns.             &lt;br /&gt;Appendix C: Star Schema Design Tables and Columns. &lt;/p&gt;          &lt;p&gt;How to Use the CD-ROM Product.            &lt;br /&gt;Other Reusable Data Model and Data Warehouse Design Resources. &lt;/p&gt;          &lt;p&gt;Index.&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;          &lt;br /&gt;          &lt;p&gt;Foreword.            &lt;br /&gt;Acknowledgments.             &lt;br /&gt;About the Author. &lt;/p&gt;          &lt;p&gt;Introduction.            &lt;br /&gt;Manufacturing.             &lt;br /&gt;Telecommunications.             &lt;br /&gt;Health Care.             &lt;br /&gt;Insurance.             &lt;br /&gt;Financial Services.             &lt;br /&gt;Professional Services.             &lt;br /&gt;Travel.             &lt;br /&gt;E-Commerce Models. &lt;/p&gt;          &lt;p&gt;Using the Industry Models in the Real World. &lt;/p&gt;          &lt;p&gt;Appendix A: Entities and Attributes for Manufacturing Models.            &lt;br /&gt;Appendix B: Entities and Attributes for Telecommunications Models.             &lt;br /&gt;Appendix C: Entities and Attributes for Health Care Models.             &lt;br /&gt;Appendix D: Entities and Attributes for Insurance Models.             &lt;br /&gt;Appendix E: Entities and Attributes for Financial Services Models.             &lt;br /&gt;Appendix F: Entities and Attributes for Professional Services Models.             &lt;br /&gt;Appendix G: Entities and Attributes for Travel Models.             &lt;br /&gt;Appendix H: Entities and Attributes for E-Commerce Models.             &lt;br /&gt;Appendix I: List of Entities and Their Associated Figures. &lt;/p&gt;          &lt;p&gt;How to Use the Volume 2 Industry Electronic Products. &lt;/p&gt;          &lt;p&gt;Index.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f18%2fthe-data-model-resource-book-universal-data-models.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f18%2fthe-data-model-resource-book-universal-data-models.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/The-Data-Model-Resource-Book-Universal-Data-Models-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F18%2Fthe-data-model-resource-book-universal-data-models.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/The-Data-Model-Resource-Book-Universal-Data-Models-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F18%2Fthe-data-model-resource-book-universal-data-models.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/The-Data-Model-Resource-Book-Universal-Data-Models-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F18%2Fthe-data-model-resource-book-universal-data-models.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7128483" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WTDTXRbymzZmyWnodrAyj7jJc14/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WTDTXRbymzZmyWnodrAyj7jJc14/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WTDTXRbymzZmyWnodrAyj7jJc14/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WTDTXRbymzZmyWnodrAyj7jJc14/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/8utVlbvqTP8" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Books/default.aspx">Books</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Architecture+_2600_amp_3B00_+Design/default.aspx">Architecture &amp;amp; Design</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Databases/default.aspx">Databases</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/18/the-data-model-resource-book-universal-data-models.aspx</feedburner:origLink></item><item><title>Visual Studio 2010: Web application packaging and publishing</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/M6L9QXgpJFs/visual-studio-2010-web-application-packaging-and-publishing.aspx</link><pubDate>Thu, 18 Jun 2009 00:05:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7128308</guid><dc:creator>DigiMortal</dc:creator><slash:comments>11</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7128308</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/18/visual-studio-2010-web-application-packaging-and-publishing.aspx#comments</comments><description>&lt;p&gt;Visual Studio 2010 has very powerful web application packaging and deployment system. When deploying your web application you create the deployment package and then publish it to web server. After configuring it is one-click action to get current version of application up to target server. Let’s see how it works.&lt;/p&gt;  &lt;h3&gt;Packaging and publishing settings&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/packagepublish_54580752.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 0px 0px 5px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/packagepublish_thumb_05D34F1B.png" width="242" height="192" /&gt;&lt;/a&gt; As a first thing you may take a look at project properties. There is new tab called Package/Publish where you can find all packaging and publishing defaults. You don’t have to change these settings unless you really-really need it. For me default settings are working very well.&lt;/p&gt;  &lt;p&gt;You can click on the image on right if you want to see those settings. It is also possible to deploy your database to target server but I will blog about this some other time. Let’s focus on application deployment in this posting.&lt;/p&gt;  &lt;h3&gt;Creating package&lt;/h3&gt;  &lt;p&gt;To create package you just have to right click on your project and select Package –&amp;gt; Create Package. Check out the following fragment of screenshot.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/createpackage_7C2AE0E4.png" width="535" height="225" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/packagecontents_53CB88C3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 0px 0px 5px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/packagecontents_thumb_0339F790.png" width="116" height="240" /&gt;&lt;/a&gt; You can find package under obj folder of application. Screenshot (or windowshot?) on right shows you obj and Package folders and Package folder contents. Just click on it to see it at original size.&lt;/p&gt;  &lt;p&gt;Package folder has same structure that is published to target server. You can see here all files and folders of your application that are to be published. These files and folders are under PackageTmp folder. &lt;/p&gt;  &lt;p&gt;Package folder contains files that are used to deploy you web application. You can see there also zip-file. This is the package that is sent to target server to save you some bandwidth. Of course, it depends on packaging settings if zip file is used for deployment or not. I suggest you to use zip-file because in this case only one file will be uploaded and probability of network problems during upload is smaller.&lt;/p&gt;  &lt;h3&gt;Publishing&lt;/h3&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;To publish your project right click on the project and select Publish. Because you may have more than one target environment where you may want your application to be deployed then publishing profile will be asked. In this window you can also manage publishing profiles.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/publishmsdeploy_40E6DF4C.png" width="450" height="657" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here you can set all options needed for application publishing. As test servers may use homemade certificates then it is also possible to accept them. The other settings here should be pretty obvious. To publish your web application immediately you can use Publish toolbar as show on the following image. Just click on the highlighted icon and publishing starts without any additional dialogs.&lt;/p&gt;  &lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/publishtoolbar_59D289C4.png" width="381" height="43" /&gt;&lt;/p&gt;  &lt;p&gt;One-click publishing is one of the most powerful deployment features of Visual Studio 2010. Other testers have told and written that this is most stable and bullet-proof web application deployment system they have seen under Visual Studio. &lt;/p&gt;  &lt;h3&gt;Try it!&lt;/h3&gt;  &lt;p&gt;If you feel like trying out Visual Studio 2010 and new web features then feel free to read my blog entries &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2009/06/15/visual-studio-2010-and-net-framework-4-0-downloads.aspx" target="_blank"&gt;Visual Studio 2010 and .Net Framework 4.0 downloads&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/gunnarpeipman/pages/visual-studio-2010-and-net-framework-4-0.aspx" target="_blank"&gt;Visual Studio 2010 and .Net Framework 4.0&lt;/a&gt; to get started. To get free beta hosting for your ASP.NET 4.0 web application check out my blog entry &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2009/06/01/free-asp-net-4-0-beta-hosting-available.aspx" target="_blank"&gt;Free ASP.NET 4.0 beta hosting available&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I am experimenting right now on ORCS Web beta hosting where I publish my ASP.NET 4.0 MVC application – picture gallery for my photos of my bunny. To get ASP.NET MVC applications running on ORCS Web beta hosting you must make ASP.NET MVC 1.1 reference as local reference in your web application project.&lt;/p&gt;  &lt;p&gt;And last suggestion - try it out by yourself. :)&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f18%2fvisual-studio-2010-web-application-packaging-and-publishing.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f18%2fvisual-studio-2010-web-application-packaging-and-publishing.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f18%2fvisual-studio-2010-web-application-packaging-and-publishing.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f18%2fvisual-studio-2010-web-application-packaging-and-publishing.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Visual-Studio-2010-Web-application-packaging-and-publishing-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F18%2Fvisual-studio-2010-web-application-packaging-and-publishing.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Visual-Studio-2010-Web-application-packaging-and-publishing"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F18%2Fvisual-studio-2010-web-application-packaging-and-publishing.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Visual-Studio-2010-Web-application-packaging-and-publishing-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F18%2Fvisual-studio-2010-web-application-packaging-and-publishing.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7128308" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YHZeKsaWqg3d2Ud2SnpMTQHTmmA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YHZeKsaWqg3d2Ud2SnpMTQHTmmA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YHZeKsaWqg3d2Ud2SnpMTQHTmmA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YHZeKsaWqg3d2Ud2SnpMTQHTmmA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/M6L9QXgpJFs" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx">MVC</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/18/visual-studio-2010-web-application-packaging-and-publishing.aspx</feedburner:origLink></item><item><title>SharePoint: Using classes for workflow association data</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/GvsDUp49a5w/sharepoint-using-classes-for-workflow-association-data.aspx</link><pubDate>Tue, 16 Jun 2009 22:14:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7127011</guid><dc:creator>DigiMortal</dc:creator><slash:comments>6</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7127011</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/17/sharepoint-using-classes-for-workflow-association-data.aspx#comments</comments><description>&lt;p&gt;I am using workflow with association form in one of my current SharePoint projects. When workflow is added to list there are some parameters that user must insert. Workflow instances are able to persist association data and to be more flexible the association data is saved as XML string. But in the code it is more convenient to use object instead of XML strings. I will show you how I solved the situation. &lt;/p&gt;  &lt;p&gt;This is the class I want to use to keep association data.&lt;/p&gt; &lt;strong&gt;C#&lt;/strong&gt;  &lt;hr size="1" /&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; UserFields = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; DateField = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; NotifyBefore;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;
&lt;strong&gt;VB.NET&lt;/strong&gt;

&lt;hr size="1" /&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 10pt &amp;#39;Times New Roman&amp;#39;; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 12px; font-family: &amp;#39;Courier New&amp;#39;; white-space: nowrap; color: rgb(0,0,187); font-size: 10pt" class="Apple-style-span"&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Class&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;WorkflowConfig 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;UserFields&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;List&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;Of&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;DateField&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Empty&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;NotifyBefore&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Integer&lt;/span&gt; 

    &lt;br /&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 

&lt;hr size="1" /&gt;

&lt;p&gt;Now I need something to convert objects based on this class to XML. I need also something to restore objects from XML. Luckily .Net Framework has &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx" target="_blank"&gt;XmlSerializer&lt;/a&gt; class in &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.serialization.aspx" target="_blank"&gt;System.Xml.Serialization&lt;/a&gt; namespace. Lazy as I am I really don’t want to write factory classes and other fancy infrastructure that will be overkill when thinking about our requirements.&lt;/p&gt;

&lt;p&gt;We need to write two methods – one that serializes the object and the other that takes XML and returns object of type WorkflowConfig. I add these two methods to my workflow configuration class as static methods. &lt;/p&gt;
&lt;strong&gt;C#&lt;/strong&gt;

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;XmlArray&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Fields&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;XmlArrayItem&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Field&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; UserFields = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; DateField = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; NotifyBefore;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Serialize(&lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt; conf)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; confString = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; stream = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MemoryStream&lt;/span&gt;())&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; serializer = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; serializer.Serialize(stream, conf);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.Seek(0, &lt;span style="color: #2b91af"&gt;SeekOrigin&lt;/span&gt;.Begin);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; reader = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StreamReader&lt;/span&gt;(stream))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; confString = reader.ReadToEnd();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; confString;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt; Deserialize(&lt;span style="color: blue"&gt;string&lt;/span&gt; xml)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; serializer = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;XmlSerializer&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;));&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt; conf = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (&lt;span style="color: blue"&gt;var&lt;/span&gt; stream = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;MemoryStream&lt;/span&gt;(xml.Length))&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; bytes = &lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.UTF8.GetBytes(xml);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.Write(bytes, 0, bytes.Length);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.Seek(0, &lt;span style="color: #2b91af"&gt;SeekOrigin&lt;/span&gt;.Begin);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; conf = (&lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;)serializer.Deserialize(stream);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; conf;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;
&lt;strong&gt;VB.NET&lt;/strong&gt; 

&lt;hr size="1" /&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 10pt &amp;#39;Times New Roman&amp;#39;; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 12px; font-family: &amp;#39;Courier New&amp;#39;; white-space: nowrap; color: rgb(0,0,187); font-size: 10pt" class="Apple-style-span"&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Class&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;WorkflowConfig 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XmlArray&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Fields&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&amp;gt; _ 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;XmlArrayItem&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Field&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&amp;gt; _ 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;UserFields&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;List&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;Of&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;DateField&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Empty&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;NotifyBefore&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,0,0)" class="kw4"&gt;Integer&lt;/span&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Shared&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Function&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Serialize&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;ByVal&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;conf&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;WorkflowConfig&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;confString&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;.&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Empty&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using stream&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;MemoryStream&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;serializer&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;XmlSerializer&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,64,64)" class="kw5"&gt;GetType&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;WorkflowConfig&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; serializer.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Serialize&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;stream, conf&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Seek&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;0, SeekOrigin.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Begin&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using reader&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;StreamReader&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;stream&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; confString&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;reader.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;ReadToEnd&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Return&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;confString 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Function&lt;/span&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Public&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Shared&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Function&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Deserialize&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;ByVal&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;xml&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;WorkflowConfig 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;serializer&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;XmlSerializer&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,64,64)" class="kw5"&gt;GetType&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;WorkflowConfig&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;conf&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;WorkflowConfig&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Nothing&lt;/span&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Using stream&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;MemoryStream&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;xml.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;bytes&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Encoding.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;UTF8&lt;/span&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;GetBytes&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;xml&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Write&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;bytes, 0, bytes.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stream.&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Seek&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;0, SeekOrigin.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Begin&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; conf&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;DirectCast&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;serializer.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Deserialize&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;stream&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;, WorkflowConfig&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Using 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Return&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;conf 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Function&lt;/span&gt; 

    &lt;br /&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 

&lt;hr size="1" /&gt;

&lt;p&gt;Now let’s try out this code using simple test program. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C#&lt;/strong&gt;&lt;/p&gt;

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;{&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; cfg = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;();&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.UserFields.Add(&lt;span style="color: #a31515"&gt;&amp;quot;Author&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.UserFields.Add(&lt;span style="color: #a31515"&gt;&amp;quot;Invited&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.DateField = &lt;span style="color: #a31515"&gt;&amp;quot;MeetingDate&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.NotifyBefore = 2;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Debug.WriteLine(&lt;span style="color: #2b91af"&gt;WorkflowConfig&lt;/span&gt;.Serialize(cfg));&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;}&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;
&lt;strong&gt;VB.NET&lt;/strong&gt; 

&lt;hr size="1" /&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: 10pt &amp;#39;Times New Roman&amp;#39;; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="line-height: 12px; font-family: &amp;#39;Courier New&amp;#39;; white-space: nowrap; color: rgb(0,0,187); font-size: 10pt" class="Apple-style-span"&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Class&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Program 

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Private&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;Shared&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Sub&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;Main&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;ByVal&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;args&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;As&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;String&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Dim&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;cfg&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(255,128,0)" class="kw2"&gt;New&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;WorkflowConfig&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;UserFields&lt;/span&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Author&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;UserFields&lt;/span&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Add&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;Invited&amp;quot;&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;DateField&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(128,128,128)" class="st0"&gt;&amp;quot;MeetingDate&amp;quot;&lt;/span&gt; 

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cfg.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;NotifyBefore&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(0,128,0)" class="sy0"&gt;=&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;2 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;a style="color: rgb(0,0,102)" href="http://www.google.com/search?q=DEBUG+site:msdn.microsoft.com"&gt;&lt;span style="color: rgb(0,128,0)" class="kw3"&gt;Debug&lt;/span&gt;&lt;/a&gt;.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;WorkflowConfig.&lt;span style="color: rgb(0,0,255)" class="me1"&gt;Serialize&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;(&lt;/span&gt;cfg&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0,0,0)" class="br0"&gt;)&lt;/span&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&amp;#160;&amp;#160; &lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Sub&lt;/span&gt; 

    &lt;br /&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;End&lt;/span&gt;&lt;span class="Apple-converted-space"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: rgb(6,0,255)" class="kw6"&gt;Class&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 

&lt;hr size="1" /&gt;

&lt;p&gt;Our little test program produces XML output shown below. We can save this XML to workflow association data. Later we can use WorkflowConfig.Deserialize() method to get our object back from XML.&lt;/p&gt;

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt;

  &lt;pre style="margin: 0px"&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: blue"&gt; &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: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;WorkflowConfig&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Fields&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Field&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Author&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Field&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Field&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Invited&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Field&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Fields&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;DateField&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;MeetingDate&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;DateField&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;NotifyBefore&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;2&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;NotifyBefore&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;WorkflowConfig&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;hr size="1" /&gt;&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;That’s it. Simple and clear. If you plan to use this code then make the modifications you need and don’t forget adding your error handling code to static methods. &lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt; 
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f17%2fsharepoint-using-classes-for-workflow-association-data.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f17%2fsharepoint-using-classes-for-workflow-association-data.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f17%2fsharepoint-using-classes-for-workflow-association-data.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f17%2fsharepoint-using-classes-for-workflow-association-data.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/SharePoint-Using-classes-for-workflow-association-data-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F17%2Fsharepoint-using-classes-for-workflow-association-data.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://progg.ru/SharePoint-Using-classes-for-workflow-association-data"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F17%2Fsharepoint-using-classes-for-workflow-association-data.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Using-classes-for-workflow-association-data-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F17%2Fsharepoint-using-classes-for-workflow-association-data.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7127011" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xcl-iblEN-Rgyn2CdjLo8jrwGE0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xcl-iblEN-Rgyn2CdjLo8jrwGE0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xcl-iblEN-Rgyn2CdjLo8jrwGE0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xcl-iblEN-Rgyn2CdjLo8jrwGE0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/GvsDUp49a5w" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Workflow/default.aspx">Workflow</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/17/sharepoint-using-classes-for-workflow-association-data.aspx</feedburner:origLink></item><item><title>Visual Studio 2010: Web.config transforms</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/iP9yXgapqVU/visual-studio-2010-web-config-transforms.aspx</link><pubDate>Mon, 15 Jun 2009 23:34:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7124299</guid><dc:creator>DigiMortal</dc:creator><slash:comments>14</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7124299</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/16/visual-studio-2010-web-config-transforms.aspx#comments</comments><description>&lt;p&gt;Recently I wrote about Visual Studio 2010 and multiple web.config files support. Let’s see now how to play with web.config transformation so we can use one configuration on development environment and the other for production environment. &lt;/p&gt;  &lt;h3&gt;Adding config transformations&lt;/h3&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; margin: 5px 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/addconfigtransformation_2DC5CF5F.png" width="269" height="343" /&gt; When we create web application project the web.config file is created automatically. web.config contains some section definitions and assembly, caching, pages, handlers and other configuration settings.&lt;/p&gt;  &lt;p&gt;Besides them we can add our own settings to appSettings block and connection strings to connectionStrings block. These two blocks are the main sources of differences between development, test and production environments. appSettings may include settings for paths that are different in different environments. I think there is no need to mention connectionStrings.&lt;/p&gt;  &lt;p&gt;Web.config versions are bound to solution configurations. By default, solutions have two configurations: Debug and Release. If you want you can define more configurations. By example you may want to add special configuration for test environment.&lt;/p&gt;  &lt;p&gt;Adding config transforms is simple. Just right click on Web.config file and select Add Config Transforms. Visual Studio 2010 will add transforms automatically. You can read in this point my blog entry &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2009/06/03/visual-studio-2010-multiple-web-config-versions.aspx" target="_blank"&gt;Visual Studio 2010: Multiple web.config versions&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Understanding transformations&lt;/h3&gt;  &lt;p&gt;Web.config transforms are not separate versions of main Web.config file. Web.config file that was created by default contains all configuration options. Transform files contain only transforms – that is, modifications that one or another configuration needs in Web.config file to be made.&lt;/p&gt;  &lt;p&gt;You can find more information about transforms from &lt;a href="http://blogs.msdn.com/webdevtools/default.aspx" target="_blank"&gt;Visual Web Developer Team Blog&lt;/a&gt; posting &lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx" target="_blank"&gt;Web Deployment: Web.Config Transformation&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Changing connection string for release configuration&lt;/h3&gt;  &lt;p&gt;By default, new transform for release configuration looks like this.&lt;/p&gt;  &lt;hr size="1" /&gt;  &lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;   &lt;pre style="margin: 0px"&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: blue"&gt; &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: blue"&gt;?&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: green"&gt; For more information on using web.config transformation &lt;br /&gt;     visit http://go.microsoft.com/fwlink/?LinkId=125889 &lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;br /&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns:xdt&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&lt;span style="color: blue"&gt;&lt;a href="http://schemas.microsoft.com/XML-Document-Transform"&gt;http://schemas.microsoft.com/XML-Document-Transform&lt;/a&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;compilation&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xdt:Transform&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;RemoveAttributes(debug)&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;hr size="1" /&gt; &lt;/div&gt;

&lt;p&gt;As we can see there is only one transformation rule defined – remove debug attribute. We can also change values of attributes. Let’s add new connection string to Web.Config file.&lt;/p&gt;

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt; 

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;MyGallery&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: red"&gt;connectionString&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Default connection string&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;    providerName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Data.SqlClient&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;hr size="1" /&gt; &lt;/div&gt;

&lt;p&gt;This is default connection string that is used by all configurations that has no transform for this connection string. We wanted to use different connection string for product system where we use release configuration. Let’s add the following block to Web.Release.Config file.&lt;/p&gt;

&lt;div style="font-family: courier new; background: white; color: black; font-size: 10pt"&gt;
  &lt;hr size="1" /&gt; 

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;MyGallery&lt;/span&gt;&amp;quot;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;connectionString&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Production connection string&lt;/span&gt;&amp;quot;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;providerName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Data.SqlClient&lt;/span&gt;&amp;quot;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;xdt:Transform&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Replace&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xdt:Locator&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Match(name)&lt;/span&gt;&amp;quot;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;connectionStrings&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;hr size="1" /&gt; &lt;/div&gt;

&lt;p&gt;Basically the connection string is like usual connection string in Web.config file. But there are two new attributes: Transform and Locator. These attributes tell to Visual Studio 2010 packaging system how to modify Web.config so it works with current solution configuration. &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Transform.&lt;/strong&gt; Tells to Visual Studio that we want to replace original connection string.&lt;/li&gt;

  &lt;li&gt;&lt;strong&gt;Locator.&lt;/strong&gt; Tells to Visual Studio how to find the configuration option that needs transformation. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are many other transforms you can use to make modifications to Web.config. You can find more information about transforms from &lt;a href="http://blogs.msdn.com/webdevtools/default.aspx" target="_blank"&gt;Visual Web Developer Team Blog&lt;/a&gt; posting &lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx" target="_blank"&gt;Web Deployment: Web.Config Transformation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To get transformed Web.config file you have to create package of you application.&lt;/p&gt;

&lt;p align="center"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/createpackage_2E8E0F7C.png" width="535" height="225" /&gt; &lt;/p&gt;

&lt;p&gt;Deployment packages is one of the new and cool features of Visual Studio 2010. I will write about them a little bit later this week.&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f16%2fvisual-studio-2010-web-config-transforms.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f16%2fvisual-studio-2010-web-config-transforms.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f16%2fvisual-studio-2010-web-config-transforms.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f16%2fvisual-studio-2010-web-config-transforms.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Visual-Studio-2010-Webconfig-transforms-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F16%2Fvisual-studio-2010-web-config-transforms.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Visual-Studio-2010-Webconfig-transforms-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F16%2Fvisual-studio-2010-web-config-transforms.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Visual-Studio-2010-Webconfig-transforms-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F16%2Fvisual-studio-2010-web-config-transforms.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7124299" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Nw-9R5y2MMarVc9CiUy1n5P3hn4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nw-9R5y2MMarVc9CiUy1n5P3hn4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Nw-9R5y2MMarVc9CiUy1n5P3hn4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Nw-9R5y2MMarVc9CiUy1n5P3hn4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/iP9yXgapqVU" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/16/visual-studio-2010-web-config-transforms.aspx</feedburner:origLink></item><item><title>Visual Studio 2010 and .Net Framework 4.0 downloads</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/nEGaMnxZYpw/visual-studio-2010-and-net-framework-4-0-downloads.aspx</link><pubDate>Sun, 14 Jun 2009 21:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7122527</guid><dc:creator>DigiMortal</dc:creator><slash:comments>12</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7122527</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/15/visual-studio-2010-and-net-framework-4-0-downloads.aspx#comments</comments><description>&lt;h3&gt;Visual Studio 2010, .Net Framework 4.0 and Team Foundation Server 2010&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=255FC5F1-15AF-4FE7-BE4D-263A2621144B&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio Team System 2010 Team Suite Beta 1 – ISO&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=85520793-68FC-4361-A8B6-DC2CFF49C8D2&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio Team System 2010 Team Suite Beta 1 – Web Installer&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=EE2118CC-51CD-46AD-AB17-AF6FFF7538C9&amp;amp;displaylang=en" target="_blank"&gt;Microsoft .NET Framework 4 Beta 1&lt;/a&gt; (if you don’t want Visual Studio 2010)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=58665c27-7023-4a50-b31d-c39cd86a415f&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio Team System 2010 Team Foundation Server Beta 1&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Additional software&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d197feb6-ced5-40d4-949d-a51f02309ee8&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio 2010 SDK Beta 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=390fbb56-4e2c-4585-8f0c-ef51cf4cc93e&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Visual Studio 2010 DSL SDK Beta1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28527" target="_blank"&gt;ASP.NET MVC For Visual Studio 2010 Beta 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=11B451C4-7A7B-4537-A769-E1D157BAD8C6&amp;amp;displaylang=en" target="_blank"&gt;Windows Azure Tools for Microsoft Visual Studio May 2009 CTP&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Learning&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;Visual Studio 2010 and .NET Framework 4 Training Kit - May Preview&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5ACA0622-D87D-4CC9-A22C-0D58205A56B4&amp;amp;displaylang=en" target="_blank"&gt;Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4.0 Beta 1&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Try out at live&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://labs.discountasp.net/" target="_blank"&gt;Free .Net 4.0 hosting - DiscountASP.NET Labs&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.orcsweb.com/hosting/vs2010beta.aspx" target="_blank"&gt;VS2010 and Web Deployment Tool Beta Program&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;

&lt;h3&gt;Last thing...&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://weblogs.asp.net/gunnarpeipman/pages/visual-studio-2010-and-net-framework-4-0.aspx"&gt;List of writings on Visual Studio 2010 and .Net Framework 4.0&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt; 
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f15%2fvisual-studio-2010-and-net-framework-4-0-downloads.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f15%2fvisual-studio-2010-and-net-framework-4-0-downloads.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f15%2fvisual-studio-2010-and-net-framework-4-0-downloads.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f15%2fvisual-studio-2010-and-net-framework-4-0-downloads.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/Visual-Studio-2010-and-Net-Framework-40-downloads-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F15%2Fvisual-studio-2010-and-net-framework-4-0-downloads.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://progg.ru/Visual-Studio-2010-and-Net-Framework-40-downloads"&gt;&lt;img alt="Progg it" src="http://progg.ru/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F15%2Fvisual-studio-2010-and-net-framework-4-0-downloads.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Visual-Studio-2010-and-Net-Framework-40-downloads-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F15%2Fvisual-studio-2010-and-net-framework-4-0-downloads.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7122527" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/P1_S6oDPiCjo4blu5q8RrmG7PcA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P1_S6oDPiCjo4blu5q8RrmG7PcA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/P1_S6oDPiCjo4blu5q8RrmG7PcA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P1_S6oDPiCjo4blu5q8RrmG7PcA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/nEGaMnxZYpw" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/WF/default.aspx">WF</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx">MVC</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Azure/default.aspx">Azure</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Workflow/default.aspx">Workflow</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/15/visual-studio-2010-and-net-framework-4-0-downloads.aspx</feedburner:origLink></item><item><title>ASP.NET MVC installer for Visual Studio 2010 Beta 1</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/vdGNQlB9uMc/asp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx</link><pubDate>Sat, 13 Jun 2009 12:51:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7120389</guid><dc:creator>DigiMortal</dc:creator><slash:comments>10</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7120389</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/13/asp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://haacked.com/" target="_blank"&gt;Phil Haack&lt;/a&gt; announced Tuesday availability of &lt;a href="http://haacked.com/archive/2009/06/09/aspnetmvc-vs10beta1-roadmap.aspx" target="_blank"&gt;ASP.NET MVC installer for Visual Studio 2010 Beta 1&lt;/a&gt;. Referenced blog entry contains also some bits of information about ASP.NET MVC roadmap that is also interesting reading. Installer is available in &lt;a href="http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28527" target="_blank"&gt;CodePlex ASP.NET project&lt;/a&gt;. In the case of troubles you can find some help from &lt;a href="http://weblogs.asp.net/jacqueseloff/default.aspx" target="_blank"&gt;Jacques Eloff’s blog&lt;/a&gt; posting &lt;a href="http://weblogs.asp.net/jacqueseloff/archive/2009/06/09/troubleshooting-the-mvc-installer-for-visual-studio-2010-beta-1.aspx" target="_blank"&gt;Troubleshooting the MVC installer for Visual Studio 2010 Beta 1&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I installed ASP.NET MVC support for Visual Studio 2010 and now i’m trying to write simple gallery web application to test new features of ASP.NET and &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2009/06/01/free-asp-net-4-0-beta-hosting-available.aspx" target="_blank"&gt;web site publishing offered for free by ORCS Web&lt;/a&gt;.&lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f13%2fasp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f13%2fasp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f13%2fasp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f13%2fasp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx" border="0" alt="vote it on WebDevVote.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/ASPNET-MVC-installer-for-Visual-Studio-2010-Beta-1-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F13%2Fasp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/ASPNET-MVC-installer-for-Visual-Studio-2010-Beta-1-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F13%2Fasp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7120389" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5JEW0_SOGU4fiKlaslE75Yg6v1U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5JEW0_SOGU4fiKlaslE75Yg6v1U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5JEW0_SOGU4fiKlaslE75Yg6v1U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5JEW0_SOGU4fiKlaslE75Yg6v1U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/vdGNQlB9uMc" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx">MVC</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/13/asp-net-mvc-installer-for-visual-studio-2010-beta-1.aspx</feedburner:origLink></item><item><title>Links 2009-06-13</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/w8et_LRNb68/links-2009-06-13.aspx</link><pubDate>Fri, 12 Jun 2009 23:33:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7120081</guid><dc:creator>DigiMortal</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7120081</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/13/links-2009-06-13.aspx#comments</comments><description>&lt;h3&gt;SharePoint&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd902097.aspx" target="_blank"&gt;Uploading Files to SharePoint Server 2007 from ASP.NET Web Applications by Using the HTTP PUT Method&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/ecm/archive/2007/02/10/moss-navigation-deep-dive-part-1.aspx" target="_blank"&gt;MOSS Navigation Deep Dive - Part 1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/ecm/archive/2007/02/16/moss-navigation-deep-dive-part-2.aspx" target="_blank"&gt;MOSS Navigation Deep Dive - Part 2&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.endusersharepoint.com/?p=1714" target="_blank"&gt;Multiple Pie Charts in a WSS Dashboard&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/joelo/archive/2007/07/09/capacity-planning-key-links-and-info.aspx" target="_blank"&gt;SharePoint Capacity Planning Key Info&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/joelo/archive/2007/01/16/good-list-of-performance-counters.aspx" target="_blank"&gt;Good List of Performance Counters&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/jan/archive/2009/05/25/quot-the-security-validation-for-this-page-is-invalid-quot-when-calling-the-sharepoint-web-services.aspx" target="_blank"&gt;&amp;quot;The security validation for this page is invalid&amp;quot; when calling the SharePoint Web Services&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/ianpal/archive/2009/05/21/microsoft-sharepoint-site-now-on-sharepoint.aspx" target="_blank"&gt;Microsoft SharePoint Site now on SharePoint&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Development&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_-in-C_2300_-.NET.aspx" target="_blank"&gt;SerialPort (RS-232 Serial COM Port) in C# .NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/albertpascual/archive/2009/05/18/creating-a-folder-inside-the-zip-file-with-system-io-packaging.aspx" target="_blank"&gt;Creating a folder inside the ZIP file with System.IO.Packaging&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/jmstall/archive/2009/05/21/virtual-code-execution-via-il-interpretation.aspx" target="_blank"&gt;Virtual code execution via IL interpretation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeproject.com/KB/system/everythingInAD.aspx" target="_blank"&gt;Howto: (Almost) Everything In Active Directory via C#&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.developersnippets.com/2009/04/25/floating-slidein-menu-with-anchor-link-using-jquery/" target="_blank"&gt;Floating SlideIn Menu with Anchor Link using jQuery&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://stephenwalther.com/blog/archive/2009/05/18/unit-testing-javascript-with-fireunit.aspx" target="_blank"&gt;Unit Testing JavaScript with FireUnit&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2009/05/15/axum-ping-pong-with-dataflow-networks.aspx" target="_blank"&gt;Axum – Ping Pong with Dataflow Networks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codethinked.com/post/2009/04/17/Ditching-the-Micro-Optimization-Fetish.aspx" target="_blank"&gt;Ditching the Micro-Optimization Fetish&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/asiatech/archive/2009/04/10/memory-leak-for-getelementsbytagname-operations-in-xml-document.aspx" target="_blank"&gt;Web Application Memory leakage caused by XML operations - GetElementsByTagName()&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Other stuff&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/qingsongyao/archive/2009/04/10/sql-server-and-utf-8-encoding-1-true-or-false.aspx" target="_blank"&gt;Collation, DateTime, SParse Column and XML&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://on10.net/blogs/sarahintampa/Windows-Live-Writer-for-Windows-Mobile/" target="_blank"&gt;Windows Live Writer for Windows Mobile&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://devrexster.googlepages.com/mmk" target="_blank"&gt;Portable Movie Maker&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;

&lt;div style="display:none"&gt;
&lt;a href="http://technorati.com/claim/ud7x53ma7e" rel="me"&gt;Technorati Profile&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7120081" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yXLyf7uLt4dwbqnJd2J_XjW2Yew/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yXLyf7uLt4dwbqnJd2J_XjW2Yew/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yXLyf7uLt4dwbqnJd2J_XjW2Yew/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yXLyf7uLt4dwbqnJd2J_XjW2Yew/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/w8et_LRNb68" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/Links/default.aspx">Links</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/13/links-2009-06-13.aspx</feedburner:origLink></item><item><title>SharePoint: Internal developer portal – first thoughts</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/E5UMOutatcA/sharepoint-internal-developer-portal-first-thoughts.aspx</link><pubDate>Thu, 11 Jun 2009 15:22:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7111738</guid><dc:creator>DigiMortal</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7111738</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/11/sharepoint-internal-developer-portal-first-thoughts.aspx#comments</comments><description>&lt;p&gt;My file system has one bad tumor – it is called over 6 months old My Documents. I have there a lot of stuff, it is somehow organized but it is still more like chaos. Most of these files are materials about different technologies and so on and also some business papers. Another chaos is my bookmarks collection… I thought about these files and links and suddenly I made conclusion – why not build separate SharePoint site to my company’s SharePoint server and publish all useful stuff there? I am sure that other guys have also stuff that may be interesting to others. So, here’s my first thoughts about developer info site on SharePoint server.&lt;/p&gt;  &lt;h3&gt;Information&lt;/h3&gt;  &lt;p&gt;At first let’s see what kind of information I have. Here is the list of information types I have in my different chaotic places:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;whitepapers about languages and technologies,&lt;/li&gt;    &lt;li&gt;training kits,&lt;/li&gt;    &lt;li&gt;example projects,&lt;/li&gt;    &lt;li&gt;presentations,&lt;/li&gt;    &lt;li&gt;videos,&lt;/li&gt;    &lt;li&gt;downloads (programs, utilities, etc),&lt;/li&gt;    &lt;li&gt;online content (code examples, guides etc),&lt;/li&gt;    &lt;li&gt;books,&lt;/li&gt;    &lt;li&gt;links.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also we may have some chaotic information about solving different problems we have faced and it would be nice if we can fit also this information somewhere.&lt;/p&gt;  &lt;h3&gt;First ideas about features&lt;/h3&gt;  &lt;p&gt;Now I want to organize this information somehow so it is easy to find and manage. I put here everything that goes through my brain when I started thinking. So, don’t consider this as any accurate analysis and don’t take this list as official requirements document. These are only notes and nothing more.&lt;/p&gt;  &lt;p&gt;Here are my first ideas.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Content types.&lt;/strong&gt; I need some content types for different pieces of information. My first idea is to create content types for media types – whitepaper, specification, training kit, video, etc. I thing whitepaper and specification may be also same content type, let’s say document.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Topics list.&lt;/strong&gt; I need some list of topics so I can assign topics to every content item I have. It makes it easier to find information we need. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Document conversions.&lt;/strong&gt; If we base on MOSS 2007 we can also consider automatic document conversion so Word, Excel, PDF and other documents are automatically converted to HTML documents. I’m not sure about it but may be it makes sense.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Internal blog.&lt;/strong&gt; Blog is simplest tool to publish information fast. Every developer should be able to use Windows Live Writer to post new content about solving different technical problems.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Authors list.&lt;/strong&gt; We should keep the list of authors so we can search content also by author. Also it is good if we keep some background information about authors. If there is some author I don’t know then I can click on his or her name and read more.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Comments.&lt;/strong&gt; We need commenting features for all content we have. It is specially good if there are some very valuable pieces of information buried deep to some documents or if there is something important mentioned in some videos. Also we need comments to warn others about mistakes that materials may contain.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ranking.&lt;/strong&gt; We should be able to rank the content we have. It is good if newer guys can find high quality content faster.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Content expiration.&lt;/strong&gt; Each content item may have expiration date. After some time most of documents and other materials expire. New technologies and new software versions replace older ones and we don’t want to keep a large archive of relics. When something expires it will be deleted automatically.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;First ideas about user interface &lt;/h3&gt;  &lt;p&gt;Usually I try to create also first picture of system I am planning. It is not exact vision of how the interface will be in the future, but it helps me find my direction and analyze the solution at common level better. Okay, here are my first thoughts about UI.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Main page.&lt;/strong&gt; Main page will be like dashboard. There will be short greeting text and some notes about content and then different listings: top rated content, new content, last comments, last blog entries, expiring content.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Videos.&lt;/strong&gt; It would be nice if it is possible to stream videos and watch them directly from site. We need also possibility to download videos if we need.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Authors.&lt;/strong&gt; Authors pages should contain author name, company, short bio and links to author homepage and blog.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Commenting and ranking.&lt;/strong&gt; There should be comments list and comment inserting box on all detail views for content items. Also we need ranking box at same places.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Aggregated feeds.&lt;/strong&gt; We need something that brings in popular feeds we list and this something should create aggregated feed we can show in site.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Search results.&lt;/strong&gt; When we search something then results should be formatted based on content type. I mean that authors and videos are shown differently.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For now, this is it. As a next thing I have to go more specific with my requirements and model the first data structures so we can think about site columns and content types.&lt;/p&gt;
&lt;div style="display:none"&gt;

ud7x53ma7e


&lt;a href="http://technorati.com/claim/ud7x53ma7e" rel="me"&gt;Technorati Profile&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7111738" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vtkTlArzSkawLT4ldqGMGfeXPa4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vtkTlArzSkawLT4ldqGMGfeXPa4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vtkTlArzSkawLT4ldqGMGfeXPa4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vtkTlArzSkawLT4ldqGMGfeXPa4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/E5UMOutatcA" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/SharePoint/default.aspx">SharePoint</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/11/sharepoint-internal-developer-portal-first-thoughts.aspx</feedburner:origLink></item><item><title>IIS SEO Toolkit: Sitemaps overview (illustrated)</title><link>http://feedproxy.google.com/~r/gunnarpeipman/~3/P1mo1WgSZ8A/iis-seo-toolkit-sitemaps-overview.aspx</link><pubDate>Wed, 10 Jun 2009 17:20:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:7111314</guid><dc:creator>DigiMortal</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://weblogs.asp.net/gunnarpeipman/rsscomments.aspx?PostID=7111314</wfw:commentRss><comments>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/10/iis-seo-toolkit-sitemaps-overview.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.iis.net/extensions/SEOToolkit" target="_blank"&gt;IIS SEO Toolkit&lt;/a&gt; provides us besides &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2009/06/06/iis-seo-toolkit-site-analysis-overview.aspx" target="_blank"&gt;site analysis&lt;/a&gt; also with sitemaps management. We can create sitemaps, sitemaps indexes, add URLs to sitemaps and sitemaps to sitemap indexes. Sitemap indexes are useful when you have more complex sitemaps structure (by example, you may have multiple sitemap files for different modules in you system). &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 3px 0px 0px 5px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/iisseoicons_6477BB6B.png" width="252" height="110" /&gt; Sitemaps management is also located on site features view under Search Engine Optimization section. Just click on the icon to open sitemaps management interface. &lt;/p&gt;  &lt;p&gt;Sitemaps management is pretty easy. Sitemaps management interface lists sitemaps and sitemap indexes and lets you modify them through graphical user interface. &lt;/p&gt;  &lt;h3&gt;Creating sitemaps&lt;/h3&gt;  &lt;p&gt;If you are starting with unmapped site then first thing is to create sitemap. If you have only one sitemap then you don’t need sitemap index and you can name your sitemap as sitemap.xml. If you have multiple sitemaps then use informative names like products.xml and users.xml. After creating new sitemap the sitemap contents view is opened. Now you can add all URLs you need.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/iisseotoolkitsitemapaddurls_0058CA97.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/iisseotoolkitsitemapaddurls_thumb_28C786DE.png" width="530" height="521" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you can see I am adding sitemap for site microblog. There are some interesting options for URL structure source.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Physical location&lt;/strong&gt; – you can browse you site’s physical file structure and add physical files to sitemap.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Existing site analysis&lt;/strong&gt; – URLs based on site analysis. These URLs include also dynamically created URLs (by example user profile URLs generated by &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/tags/MVC/default.aspx" target="_blank"&gt;ASP.NET MVC&lt;/a&gt; framework).&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Run new Site Analysis&lt;/strong&gt; – same as previous one but instead of using the result of some existing analysis you start process with creating a new site analysis report.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you need more dynamics to generate URLs list for sitemap you can read my blog entry &lt;a href="http://weblogs.asp.net/gunnarpeipman/archive/2008/05/13/asp-net-search-sitemaps-something-for-seo.aspx" target="_blank"&gt;ASP.NET Search Sitemaps - something for SEO&lt;/a&gt; to find out how you can extend your sitemaps system with dynamically generated sitemaps.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 0px 0px 10px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/sitemapie_0E576DFA.png" width="324" height="284" /&gt;Now let’s see the result of our work this far. I added three files to my sitemap: default.aspx (physical location) and then /about and /login URLs (locations from existing site analysis). &lt;/p&gt;  &lt;p&gt;Open your browser and type in the URL of your new sitemap. Hit Enter and see what is inside your sitemap. My result you can see here on the image. &lt;/p&gt;  &lt;p&gt;You can change last modified date, priority and change frequency for all items in sitemap. Just double click on URL in sitemap contents windows and make the modifications you need.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Sitemap indexes&lt;/h3&gt;  &lt;p&gt;For more complex sites you may need sitemap indexes. You may have different modules that output their own sitemap. Also you may need multiple sitemaps if your site has subsites and you want your site hierarchy to be handled as one by search engines.&lt;/p&gt;  &lt;p&gt;To create new sitemap index go to sitemaps and sitemaps indexes feature view (this is the same one that opens from site features view). Create some sitemaps and move back to this view. Now click “Add Sitemap Index…” and insert sitemap.xml as the name of index. Sitemaps adding window like the one on the following is opened.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://weblogs.asp.net/blogs/gunnarpeipman/iisseotoolkitaddsitemap_7F601912.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" src="http://weblogs.asp.net/blogs/gunnarpeipman/iisseotoolkitaddsitemap_thumb_6C7B6F9B.png" width="530" height="521" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select all sitemap files you want to include to index and click OK button. &lt;/p&gt;  &lt;p&gt;Sitemap index has name sitemap.xml because search engine spiders look for file with this name to find out if there is index created for site or not. &lt;/p&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px 0px 0px 5px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="right" src="http://weblogs.asp.net/blogs/gunnarpeipman/sitemapindexie_15C291CD.png" width="337" height="149" /&gt; Let’s see the results again. We can see that sitemap index has only entries for sitemap files. In my case there are two sitemaps – pages.xml for custom pages and products.xml for products.&lt;/p&gt;  &lt;p&gt;Last modified dates of sitemaps can be changes when clicking on sitemap entry in sitemap index contents view. &lt;/p&gt;  &lt;p&gt;That’s the end for this time. Also read the blog entry &lt;a href="http://weblogs.asp.net/scottgu/archive/2009/06/03/iis-search-engine-optimization-toolkit.aspx" target="_blank"&gt;IIS Search Engine Optimization Toolkit&lt;/a&gt; to find out more about IIS SEO Toolkit. If you get confused or if you have questions, suggestions or comments then feel free to drop me a line. &lt;/p&gt;

&lt;hr size="1" /&gt;

&lt;table border="0" cellpadding="0" cellspacing="2" width="100%"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f10%2fiis-seo-toolkit-sitemaps-overview.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f10%2fiis-seo-toolkit-sitemaps-overview.aspx" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a href="http://webdevvote.com:80/vote/?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f10%2fiis-seo-toolkit-sitemaps-overview.aspx"&gt;&lt;img src="http://webdevvote.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fweblogs.asp.net%2fgunnarpeipman%2farchive%2f2009%2f06%2f10%2fiis-seo-toolkit-sitemaps-overview.aspx" border="0" alt="vote it on Web Development Community" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="center"&gt;
&lt;a rev="vote-for" href="http://pimpthisblog.com/IIS-SEO-Toolkit-Sitemaps-overview-illustrated-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="pimp it" src="http://pimpthisblog.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F10%2Fiis-seo-toolkit-sitemaps-overview.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;td align="right"&gt;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/IIS-SEO-Toolkit-Sitemaps-overview-illustrated-Gunnar-Peipmans-ASPNET-blog"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fweblogs.asp.net%2Fgunnarpeipman%2Farchive%2F2009%2F06%2F10%2Fiis-seo-toolkit-sitemaps-overview.aspx" style="border:0px"/&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=7111314" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kF9DOaVJg_tIvdiGwnF2tmh1ALw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kF9DOaVJg_tIvdiGwnF2tmh1ALw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kF9DOaVJg_tIvdiGwnF2tmh1ALw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kF9DOaVJg_tIvdiGwnF2tmh1ALw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/gunnarpeipman/~4/P1mo1WgSZ8A" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/SEO/default.aspx">SEO</category><category domain="http://weblogs.asp.net/gunnarpeipman/archive/tags/IIS/default.aspx">IIS</category><feedburner:origLink>http://weblogs.asp.net/gunnarpeipman/archive/2009/06/10/iis-seo-toolkit-sitemaps-overview.aspx</feedburner:origLink></item></channel></rss>
