<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-10318299</atom:id><lastBuildDate>Fri, 01 Nov 2024 06:48:44 +0000</lastBuildDate><category>ASP.NET</category><category>.NET Framework</category><category>.NET 3.5</category><category>.NET 4.0</category><category>VS 2010</category><category>WCF Service</category><category>C#</category><category>Cloud Computing</category><category>Extension methods</category><category>SQL Server</category><category>.NET 2.0</category><category>ASP.NET AJAX</category><category>Agile</category><category>Architecture</category><category>Cloud</category><category>Data Services</category><category>Google</category><category>Microsoft</category><category>Scrum</category><category>Sitefinity</category><category>TechiesUAE</category><category>VS2008</category><category>VS2010</category><category>WCF</category><category>WPF</category><category>jquery</category><category>ADO.NET</category><category>ASP.NET Charts</category><category>ASP.NET Profiling</category><category>BlackBerry</category><category>Cache</category><category>CodeSmith Studio</category><category>CustomValidator</category><category>DB Compare</category><category>DTN</category><category>DataTable</category><category>Database</category><category>Domain Driven Design</category><category>Dubai</category><category>ELMAH</category><category>Entity Framework</category><category>Exceptions</category><category>Extensibility</category><category>Facebook</category><category>InfoPath</category><category>Intellisense</category><category>LINQ to SQL</category><category>ListView</category><category>MEF</category><category>MSDN Magazine</category><category>MSDN Reader</category><category>Music</category><category>Northwind</category><category>Oredev</category><category>PLINQO</category><category>Programming</category><category>REST</category><category>SEO</category><category>SQL Management Studio</category><category>Service Reference</category><category>Sharepoint 2010</category><category>Silverlight</category><category>Software Architecture</category><category>StackOverFlow</category><category>T-SQL</category><category>Training</category><category>UI Testing</category><category>Url Rewriting</category><category>User stories</category><category>Validation</category><category>Visio 2010</category><category>Visual Studio</category><category>WCF Data Service</category><category>Web Matrix</category><category>Web.Config</category><category>Workflow</category><category>XHTML</category><category>XP</category><category>asp.NETPro</category><category>automation</category><category>batches</category><category>dotTrace</category><category>podcasts</category><category>sql data compare</category><category>subversion</category><category>svn</category><category>tools</category><title>Zubair.NET!</title><description>This blog has moved to its new home &lt;a href=&quot;http://zubairahmed.net&quot;&gt;zubairahmed.net&lt;/a&gt;</description><link>http://zubairdotnet.blogspot.com/</link><managingEditor>noreply@blogger.com (Zubair.NET!)</managingEditor><generator>Blogger</generator><openSearch:totalResults>138</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-2662029286079979905</guid><pubDate>Wed, 20 Apr 2011 17:24:00 +0000</pubDate><atom:updated>2011-04-21T06:15:54.557+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET 4.0</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">Entity Framework</category><category domain="http://www.blogger.com/atom/ns#">VS 2010</category><category domain="http://www.blogger.com/atom/ns#">WCF Data Service</category><category domain="http://www.blogger.com/atom/ns#">Web Matrix</category><title>Microsoft Web Camp: My demo of MS Web Stack of Love</title><description>&lt;p&gt;Last week I co-presented a session titled “&lt;strong&gt;Creating Cutting Edge Websites for Phones, Slates and Beyond&lt;/strong&gt;” at Microsoft Web Camp in Dubai with &lt;a href=&quot;http://www.ronaldwidha.net/&quot;&gt;Ronald Widha&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img src=&quot;http://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-35-09/1460.webcamp.jpg&quot; /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Opening Address, Michael Mansour&lt;/em&gt; &lt;br /&gt;&lt;li&gt;&lt;em&gt;Development on Internet Explorer 9, &lt;/em&gt;&lt;a href=&quot;http://ahamshay.com/&quot;&gt;&lt;em&gt;Shaymaa Al-Terkait&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;&lt;li&gt;&lt;em&gt;Building an eCommerce Site in 13 Minutes with Web Matrix, &lt;/em&gt;&lt;a href=&quot;http://blog.slingalibi.com/&quot;&gt;&lt;em&gt;Asli Bilgin&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;&lt;li&gt;&lt;em&gt;Creating Cutting Edge Websites for Phones, Slates and Beyond with WebMatrix and VS2010, &lt;/em&gt;&lt;a href=&quot;http://www.ronaldwidha.net/&quot;&gt;&lt;em&gt;Ronald Widha&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and &lt;/em&gt;&lt;a href=&quot;http://www.zubairahmed.net/&quot;&gt;&lt;em&gt;Zubair Ahmed&lt;/em&gt;&lt;/a&gt; &lt;br /&gt;&lt;li&gt;&lt;em&gt;Q&amp;amp;A with Pizza Dinner and drawing for a free Windows Phone 7! &lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;From &lt;a href=&quot;http://blogs.msdn.com/b/msgulfcommunity/archive/2011/04/11/microsoft-web-camp-in-dubai.aspx&quot; target=&quot;_blank&quot;&gt;Microsoft Web Camp in Dubai&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Ronald Widha talked about the challenge facing today’s designer and developers to build User interfaces that fit on desktop and phones alike, he discussed the Responsive UI design pattern and showed how Html5, CSS Media Queries and Fluid Images and can help solve this issue to some extent. Get Ronald’s &lt;a href=&quot;http://prezi.com/apotyq18u09t/creating-cutting-edge-websites-for-phones-slates-and-beyond/&quot; target=&quot;_blank&quot;&gt;slides&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;I then showed some goodness from &lt;a href=&quot;http://channel9.msdn.com/Events/MIX/MIX11/FRM02&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Microsoft Web Stack of Love&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;and took Ron’s user interface markup to the new CSHTML page type in Web Matrix and changed it to get the content from a SQL Compact Edition database using the Razor view syntax and launched the same solution in Visual Studio from Web Matrix then added Entity Framework and WCF Data Services to the mix.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You can download all the tools using &lt;a href=&quot;http://www.microsoft.com/web/downloads/platform.aspx&quot; target=&quot;_blank&quot;&gt;Web PI&lt;/a&gt; and &lt;a href=&quot;http://dl.dropbox.com/u/23484650/WebCampStep0.zip&quot; target=&quot;_blank&quot;&gt;get my code.&lt;/a&gt;&lt;/p&gt;</description><link>http://zubairdotnet.blogspot.com/2011/04/microsoft-web-camp-my-demo-of-ms-web.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-6801550022529426538</guid><pubDate>Sun, 06 Feb 2011 17:23:00 +0000</pubDate><atom:updated>2011-02-06T21:28:50.560+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Oredev</category><category domain="http://www.blogger.com/atom/ns#">tools</category><title>Tools and tips for a developer</title><description>&lt;p&gt;I watched &lt;a href=&quot;http://twitter.com/royosherove&quot; target=&quot;_blank&quot;&gt;Roy Osherove&lt;/a&gt;’s “&lt;a href=&quot;http://oredev.org/2010/sessions/top-20-tools-and-tips-that-make-me-a-better-developer&quot; target=&quot;_blank&quot;&gt;Top 20 tools and tips that make me a better developer&lt;/a&gt;” talk that he gave at &lt;a href=&quot;http://oredev.org/2010&quot; target=&quot;_blank&quot;&gt;Oredev conference&lt;/a&gt; last year where he shared some tools that he uses on a daily basis at &lt;a href=&quot;http://www.typemock.com/&quot; target=&quot;_blank&quot;&gt;TypeMock&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;What follows is a list of tools and tips that I noted, I do use some on a daily basis too and will look into others.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;For Team Room&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;ul&gt; &lt;li&gt;Remove tools and use Task Board  &lt;li&gt;Two screens  &lt;li&gt;Daily standups &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Personal Development machine&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.voidtools.com/&quot; target=&quot;_blank&quot;&gt;Everything Search Engine&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.ghisler.com/&quot; target=&quot;_blank&quot;&gt;Total Commander&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.red-gate.com/products/dotnet-development/reflector/&quot; target=&quot;_blank&quot;&gt;Reflector&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.jetbrains.com/resharper/&quot; target=&quot;_blank&quot;&gt;Resharper&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.testdriven.net/&quot; target=&quot;_blank&quot;&gt;TestDriven.net&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;How to use Amazon EC2 cloud in production?&lt;/strong&gt; &lt;br&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.jetbrains.com/teamcity/&quot; target=&quot;_blank&quot;&gt;Team City&lt;/a&gt; Continuous Integration server  &lt;li&gt;&lt;a href=&quot;http://www.finalbuilder.com/&quot;&gt;&lt;em&gt;FinalBuilder&lt;/em&gt; - Visual Build Automation for Windows Software Developers&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://mercurial.selenic.com/&quot; target=&quot;_blank&quot;&gt;Mercurial distributed source control management tool&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.sharpcrafters.com/&quot; target=&quot;_blank&quot;&gt;PostSharp&lt;/a&gt; &lt;a href=&quot;http://en.wikipedia.org/wiki/Aspect-oriented_programming&quot; target=&quot;_blank&quot;&gt;AOP&lt;/a&gt; Framework for global logging and exception management at assembly level  &lt;li&gt;&lt;a href=&quot;http://www.ssware.com/cryptoobfuscator/obfuscator-net.htm&quot; target=&quot;_blank&quot;&gt;CryptoObfuscator&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://www.ec-software.com/&quot; target=&quot;_blank&quot;&gt;Help and Manual&lt;/a&gt; for Code documentation  &lt;li&gt;&lt;a href=&quot;http://x-tensive.com/Products/HS/&quot; target=&quot;_blank&quot;&gt;Help Server&lt;/a&gt; to view code documentation from a Web browser &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Deployment Insight&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.fogcreek.com/fogbugz/&quot; target=&quot;_blank&quot;&gt;FogBugz&lt;/a&gt; bug tracking system  &lt;li&gt;&lt;a href=&quot;http://www.gibraltarsoftware.com/&quot; target=&quot;_blank&quot;&gt;Gibraltar&lt;/a&gt; for reporting application behaviors  &lt;li&gt;&lt;a href=&quot;http://www.eqatec.com/Home.aspx&quot; target=&quot;_blank&quot;&gt;Eqatec Usage statistics&lt;/a&gt; – for analyzing how your users are using your software applications  &lt;li&gt;&lt;a href=&quot;http://www.ssware.com/cryptolicensing/cryptolicensing_net.htm&quot; target=&quot;_blank&quot;&gt;Crypto licensing&lt;/a&gt; for licensing your software  &lt;li&gt;&lt;a href=&quot;http://aws.amazon.com/sns/&quot; target=&quot;_blank&quot;&gt;Amazon simple notification service&lt;/a&gt; for enabling customer collaboration, via email or json etc &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Bonus&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;/em&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.flos-freeware.ch/notepad2.html&quot; target=&quot;_blank&quot;&gt;Notepad2&lt;/a&gt;  &lt;li&gt;&lt;a href=&quot;http://prezi.com/&quot; target=&quot;_blank&quot;&gt;Prezi&lt;/a&gt; for making presentations &lt;/li&gt;&lt;/ul&gt;  </description><link>http://zubairdotnet.blogspot.com/2011/02/tools-and-tips-for-developer.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-5736595369744699788</guid><pubDate>Tue, 28 Sep 2010 08:54:00 +0000</pubDate><atom:updated>2010-09-28T12:56:08.448+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">Sitefinity</category><title>Binding a Custom Meta field to a Template in Sitefinity with a ASP.NET Usercontrol</title><description>&lt;p&gt;To get the background about this issue please read &lt;a href=&quot;http://www.sitefinity.com/help/developer-manual/how-to-gc-based-add-custom-meta-fields.html&quot; target=&quot;_blank&quot;&gt;this article in Sitefinity knowledge base&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The last section of the article suggests that you can use the following syntax to set the &lt;em&gt;NavigateUrl&lt;/em&gt; property of the ASP.NET Hyperlink control with its &lt;em&gt;Text&lt;/em&gt; property&lt;/p&gt; &lt;div id=&quot;codeSnippetWrapper&quot;&gt; &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;asp:HyperLink&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;PDFAttachment&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;runat&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;server&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;NavigateUrl&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&#39;&amp;lt;%=this.Text %&amp;gt;&#39;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;asp:HyperLink&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;  &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;However the above doesn’t work and &lt;em&gt;&lt;font style=&quot;background-color: #ffff00&quot;&gt;&amp;lt;%= %&amp;gt;&lt;/font&gt;&lt;/em&gt; is rendered as plain text&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After trying to figure this out for a while I found the following way to do this, the trick is to create a custom user control that implements &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.web.ui.itextcontrol_members.aspx&quot; target=&quot;_blank&quot;&gt;ITextControl&lt;/a&gt; interface, like this&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;partial&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;class&lt;/span&gt; UserControls_PDFAttachmentDownload : System.Web.UI.UserControl, ITextControl&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;{&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; Page_Load(&lt;span style=&quot;color: #0000ff&quot;&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; text;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Text&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;        get&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;            &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;this&lt;/span&gt;.text;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;        set&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;        {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;            &lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt; (!&lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt;.IsNullOrEmpty(&lt;span style=&quot;color: #0000ff&quot;&gt;value&lt;/span&gt;))&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;            {&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;                &lt;strong&gt;&lt;font style=&quot;background-color: #ffff00&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;this&lt;/span&gt;.showdownload.NavigateUrl = ResolveUrl(&lt;span style=&quot;color: #0000ff&quot;&gt;value&lt;/span&gt;);&lt;/font&gt;&lt;/strong&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;            }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;        }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    }&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The highlighted line above sets the NavigateUrl property from the &lt;em&gt;Text&lt;/em&gt; value that is bound to the control.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The ASCX part of the user control simply has a ASP.NET Hyperlink control in it&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;asp:HyperLink&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;showdownload&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;runat&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;server&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;Text&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;Download&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;To use this control just add a reference in the Template usercontrol that Sitefinity uses and your on your way.&lt;/p&gt;&lt;br /&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;background-color: #ffff00&quot;&gt;&amp;lt;%@ Register TagName=&quot;Attachment&quot; TagPrefix=&quot;PDF&quot; Src=&quot;~/UserControls/PDFAttachmentDownload.ascx&quot; %&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;div&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;sf_singleNews&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;....&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;       &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;PDF:Attachment&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;PDFAttachment&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;runat&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;server&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: white; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;....&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Hope this little trick helped you, let me know.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2010/09/binding-custom-meta-field-to-template.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-6824321579945222112</guid><pubDate>Mon, 20 Sep 2010 18:50:00 +0000</pubDate><atom:updated>2010-09-20T23:06:40.385+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Agile</category><category domain="http://www.blogger.com/atom/ns#">Scrum</category><category domain="http://www.blogger.com/atom/ns#">User stories</category><category domain="http://www.blogger.com/atom/ns#">XP</category><title>Notes: How to gather Agile Requirements with User Stories? Why Use them? How to write them?</title><description>&lt;p&gt;&lt;em&gt;Following are just some rough notes taken while watching &lt;/em&gt;&lt;a href=&quot;http://twitter.com/mikewcohn&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Mike Cohn&lt;/em&gt;&lt;/a&gt;&lt;em&gt;’s ‘User Stories for Agile Requirements’ talk at &lt;/em&gt;&lt;a href=&quot;http://www.ndc2010.no/agenda.aspx?cat=1071&amp;amp;id=-1&amp;amp;day=3728&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;NDC2010&lt;/em&gt;&lt;/a&gt;&lt;em&gt; conference, I am posting them here hoping that it will help you, for a more in-depth look at user stories I recommend watching &lt;/em&gt;&lt;a href=&quot;http://streaming.ndc2010.no/tcs/?id=9DE90613-B2A2-4C0C-ADCC-DFC72E45D087&quot; target=&quot;_blank&quot;&gt;&lt;em&gt;Mike’s presentation&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; &lt;hr&gt;  &lt;h3&gt;What is a User story?&lt;/h3&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;Short simple statement told from the perspective of the user.  &lt;h3&gt;Why use them? &lt;/h3&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;User stories are a way to capture user requirement  &lt;h3&gt;How does it look like? &lt;/h3&gt; &lt;p&gt;&lt;u&gt;User Story Template&lt;/u&gt;  &lt;p&gt;As-a (some user)  &lt;p&gt;I want/I need (something)  &lt;p&gt;So that (some reason)  &lt;p&gt;&lt;u&gt;Samples&lt;/u&gt;  &lt;p&gt;&lt;u&gt;As a&lt;/u&gt; user, &lt;u&gt;I want to&lt;/u&gt; reserve a hotel room  &lt;p&gt;&lt;u&gt;As a&lt;/u&gt; user, &lt;u&gt;I want to&lt;/u&gt; cancel a reservation  &lt;p&gt;&lt;u&gt;As a&lt;/u&gt; vacation traveler, &lt;u&gt;I want to&lt;/u&gt; see photos of the hotels  &lt;p&gt;&lt;u&gt;As a&lt;/u&gt; frequent flyer, &lt;u&gt;I want to&lt;/u&gt;&amp;nbsp; rebook a past trip &lt;u&gt;so that&lt;/u&gt; I save time booking trips I take often  &lt;p&gt;Balance between developer division and business is important  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoZrO9BMNxWqF71fToeAspsD7-Li9zovG0KP9Li5kWQzKJXuOUxd8qxX_fj41m61EcDp5GD406Scq8UqaC3Z8q0GViV3uGjUAFlGsCEVtOLdsS0pZUczd2SKmnDNsJYIS_8Qdbpg/s1600-h/45855326-fbc1-4316-9bd7-81e241b8efc8%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;45855326-fbc1-4316-9bd7-81e241b8efc8&quot; border=&quot;0&quot; alt=&quot;45855326-fbc1-4316-9bd7-81e241b8efc8&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkfTjBuvDjUUMY37Ml8321vFAGW_TkfF1iSfytFIecujCLuu3qQREUJrHIaaKmUeyspAgcZj0onYXMxPpOs_rxqfOP6dcPStO1Im0IZ9_EjFpfVxXOxbHYr7PefpIjoBWHXXCO0A/?imgmax=800&quot; width=&quot;244&quot; height=&quot;163&quot;&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjk0iDWmMD8LkJTzSTlg53yMMivhsA4X4eWJ4z2PbSUy4gyDxO9XasYpgyfXZcKIDvjoEGBNMzWLaXXJDt87UqLVjHEuBrrHnoSEI2ItIKy__PYV_OBMvzKaZKSxZfmUIGpvWdvQw/s1600-h/4a0e2634-78da-4297-9eaf-343adcf666a1%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;4a0e2634-78da-4297-9eaf-343adcf666a1&quot; border=&quot;0&quot; alt=&quot;4a0e2634-78da-4297-9eaf-343adcf666a1&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmSmGrP7WkrhxhCTX8JfnzBODqYV-9zO1LHfy8QzyY3mLk9vUV-7H91kOhu3qnimLrd1du15tP_W3pFHi_eXzWW3wl89TJI6A25v6J6HtKNk5yO_d7Ab38uCbstBUFYkbhmMrnyA/?imgmax=800&quot; width=&quot;244&quot; height=&quot;188&quot;&gt;&lt;/a&gt;  &lt;hr&gt;  &lt;h3&gt;Two ways to write User stories &lt;/h3&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTHkwxKGQ8R3Bg2Clzi5roaYQw3cwVR1M0vgf_ZPh2SsotpYy2gBoOpMKY_sETaq-TtCvgnvKB3oYuH-nW6fnVdr5Qj7U-HPIBFGJn4ldrgAdiCpDcuIff3HwRUELcF5cCuXoT1Q/s1600-h/fd91be25-c978-4460-af62-d4d21de974db%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;fd91be25-c978-4460-af62-d4d21de974db&quot; border=&quot;0&quot; alt=&quot;fd91be25-c978-4460-af62-d4d21de974db&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfdF27MnBlKJumG8DKJ9nRKuE2bvyl4q1T66gNGnveM6Yeoeg7c1QsSVD_pNskqQEN0LRYDUNS1h0lMKC7XRQ6hNiSH4rqM4EFBKcuhgThcXuFwTJ0Q5PwsPQx0yEkzoR-1-4Idg/?imgmax=800&quot; width=&quot;244&quot; height=&quot;169&quot;&gt;&lt;/a&gt;  &lt;p&gt;&lt;u&gt;Right user stories on a card, right story details behind the card&lt;/u&gt;  &lt;p&gt;these become tests, high level tests (don&#39;t use &#39;tests&#39; with product owner)  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgkcf7I6eJpFb-2T6_A5PqejlcRQhEKfGLjpgwIXlZp_lVw5QJuWV4lk0dETizR9YINqeanPQW2IB67XYH_ZZ-AGvbNfd7G4YLK7TF-23hLN2k74fMB2zQ60bHay1OvSK-C3VAoA/s1600-h/58722be5-9391-486a-bc7e-134f57b1d37c%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;58722be5-9391-486a-bc7e-134f57b1d37c&quot; border=&quot;0&quot; alt=&quot;58722be5-9391-486a-bc7e-134f57b1d37c&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRQPWbhkXRjTsqMnfVbNUNN5mCp7FujMchYZ1-LNk-o8x1DT5Lh9skR0eItqZB6OL9laBL4VPtBK9yzV1DDpc2k6I9uxW_4yDrf5v3vn74qlee-5ZVwo0NUdHXumWxemyMMdM5rg/?imgmax=800&quot; width=&quot;244&quot; height=&quot;175&quot;&gt;&lt;/a&gt;  &lt;p&gt;Or  &lt;p&gt;&lt;u&gt;Take a user story and break it down&lt;/u&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1M94BRi12fwTdiL_JE-oAGE3f0uE_3eoNxymLxfK8-1Tfq04ftSS-PfAYHEEqSztrE_4t64hxaHI4MjiM51VYOrj6Hj1QBFJp42eyARoi4XXVbYzhhVNvbNPrOoPDvOc4pTyTpg/s1600-h/faa5d4c5-ed39-40b1-b292-c182e5c71ce3%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;faa5d4c5-ed39-40b1-b292-c182e5c71ce3&quot; border=&quot;0&quot; alt=&quot;faa5d4c5-ed39-40b1-b292-c182e5c71ce3&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9aMLH4ZB7vRZNhClqKtxhpdkOaZPpC5kXysezNlMJI3CAU2Ok6uNXMMeYjzFYaVW01sYv1iXWgSV-_783WAdgFnnH7c03N2z6iEJSxrRWEt0QvN6muewy2zVTmwbxY1IkZ8mqng/?imgmax=800&quot; width=&quot;244&quot; height=&quot;174&quot;&gt;&lt;/a&gt;  &lt;p&gt;Or use both&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;p&gt;Rip up the big story and write some smaller stories &lt;/p&gt; &lt;li&gt; &lt;p&gt;Write condition of satisfaction on the back of the index card &lt;/p&gt; &lt;li&gt; &lt;p&gt;Those user stories go to the product backlog, it should look like an Iceberg &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nOm-cB2Y9ir6dGbyj36N-aoTAtraeFSW7Rag420lQjBbWpZhc7EAYCh3xBv60G1PbMmLk9tMLMDlr_Cg50YXU-BhJXpqW8EWyWBdVCCdDnlqpl-XLnFgDEHLHX-Gl9MnPPlX7Q/s1600-h/5966666f-f1d4-4249-8582-36a92c8581b6%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;5966666f-f1d4-4249-8582-36a92c8581b6&quot; border=&quot;0&quot; alt=&quot;5966666f-f1d4-4249-8582-36a92c8581b6&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinfHLTVhZxh3TE7BkTyW_iLC7Mgctlx7BuY2Ng41Zp43qfRn5P3yVkzVpDIQuaAKknsaGW_N1_8KwI_2__LomI0URPznQzDIl5yAviyA_i8b9tH6j3PExm0pVtOp3s3oOIVR8YUg/?imgmax=800&quot; width=&quot;244&quot; height=&quot;189&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Small user stories are on the top,medium below and large ones at the bottom  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy8lZj2MzLIZT3LkKLwE6e5DUBnGUjqzTTXGddKJW0oiTUW5w_TJjtjAdNjFi70bLs_ADPHVPO7uurWeqAh7ekgPHnH86_2jY9EgubDjdROLWw1SpCSzuCwKRRLQJq1IEBw9BzBQ/s1600-h/752a2e57-10a7-4663-8abf-672dd1a3680f%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;752a2e57-10a7-4663-8abf-672dd1a3680f&quot; border=&quot;0&quot; alt=&quot;752a2e57-10a7-4663-8abf-672dd1a3680f&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHvOmmLjCSNiS7YNkqlxYtXzPtI8C3dta2U1Nr74-r62t17Y4ffnI7AicQA6pRfO27KlWaVRubhtRXXUfcSRaWttbBDNGlN4aZn3FFEHERmIZarH_o-2uiUYvyqh2gtQKjwakdlw/?imgmax=800&quot; width=&quot;244&quot; height=&quot;166&quot;&gt;&lt;/a&gt;  &lt;p&gt;Take the medium user stories, break them up and bring them to the Sprint/Iteration, backlog gets empty every few weeks, break epic stories and make smaller ones  &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;Epic &lt;/b&gt;is a large user story  &lt;p&gt;&lt;b&gt;Theme &lt;/b&gt;is a collection of related user stories&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFhe4gHwxeglQ4PA-onsz0z9CmFwwO3DaYR8-D9vzlgIBeL_XoSYI6WIHbrmTceTF3T-799fS7dJatrmPonmjPmGn3R4GDWGD4kQpxIzUsRefybKD4UFyrnCML_MnjJ_5eWuJkDw/s1600-h/1e342730-2794-40d8-8e53-697839eeedb4%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;1e342730-2794-40d8-8e53-697839eeedb4&quot; border=&quot;0&quot; alt=&quot;1e342730-2794-40d8-8e53-697839eeedb4&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyTz-y8ge_Hj0sOYbhhLF8MXVMLFaOrK-elzUekFzX4O1ksBFmSMlorG7grbBpBfyKU-Ntu1of46jTUl0NEPGkopMzYbxYT5Z_tjdQy4tROAI83ql0d_hf-TSDvdeE20p3tfaFHw/?imgmax=800&quot; width=&quot;244&quot; height=&quot;169&quot;&gt;&lt;/a&gt;  &lt;p&gt;Take the bigger story and break it down  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2JT0DCaTKYEohGGkhv8NY85cFddzM-kFildqM1RC5rN7IejGSi87eCouiR8K3YzCMS2wtMkL0d1H9mRSDEYO4BtGooPAiKtNs5xZeLju08cz6ZRs2zca87n3EF-YL0vDSg9794g/s1600-h/0d1f6c96-0950-4491-9e5d-998f9a2e9b94%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;0d1f6c96-0950-4491-9e5d-998f9a2e9b94&quot; border=&quot;0&quot; alt=&quot;0d1f6c96-0950-4491-9e5d-998f9a2e9b94&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoncfPHV-oRGRr_KRuQYWAmmE1v7hDLVCu8ETJamjIc92G4FCzjarbiRqSuCPDfECnWF1KdJgFCCHZ4ac03GNNCEFXlcjrMMRPKcqbOHippw2JD9JwHtgTsnP0k2nBB7TDtKMTsg/?imgmax=800&quot; width=&quot;244&quot; height=&quot;187&quot;&gt;&lt;/a&gt;  &lt;p&gt;Replace document with discussion, if requirements are only documented and not discussed most likely user is going to get what is written, not what they wanted.  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMlo4nuF2yifNnLApwTk3YZy7q6AbCaG0ZZyN4_n29hiw1ud8QYYBt5ztyNsAqpaBo6uKWmo3GE4C5_u8GxdgeP0N44gSE6a23ubPDtUpa9rpMirkbJkaDrRhLku_BXxqFhBfqlw/s1600-h/629b63a9-0b17-4fd2-a790-9bb99e19f35b%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;629b63a9-0b17-4fd2-a790-9bb99e19f35b&quot; border=&quot;0&quot; alt=&quot;629b63a9-0b17-4fd2-a790-9bb99e19f35b&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYWsQvp5dkFN4HEE2JW74HpBmgNPuxpVnFINlDQjSqOxK7l_vJn12ga-P3wqQISWzxhnHGPdLXhxGqXYJkwPYggf1OS9wtIHDofXJWr6ekQUolKc_ieGoeMrd1mAFKuCYXSmFeGQ/?imgmax=800&quot; width=&quot;244&quot; height=&quot;181&quot;&gt;&lt;/a&gt;  &lt;p&gt;&lt;u&gt;Examples&lt;/u&gt;  &lt;p&gt;&lt;u&gt;&lt;br&gt;&lt;/u&gt; &lt;p&gt;&lt;u&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmY9vCY4TEla7hrnq7rydEds5Vm6xtCLUhJJLJddMms0HGE619SaUeOOnJbv4YfWTtlp-ZZus7QrXosF4eQ5wp3VvG3awj3W7lXXCQ_SyWVTmiPMKlpVTBKUuS6KO6eQzSKG463Q/s1600-h/baee565c-feeb-4dfa-8203-af52035df541%5B3%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;baee565c-feeb-4dfa-8203-af52035df541&quot; border=&quot;0&quot; alt=&quot;baee565c-feeb-4dfa-8203-af52035df541&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSqRnrCUdqVkKaPYroCzZXzrgQcKD2x93tf0BEQVrc6b746jycK_oEnvKFr7jL4hIKoEUOKHJTfICb7_Grf5v6CkIUK6Hkzmg2XNT2hiAZ2BFMQVcpLUbseRvkZfhWm0FwBYhNVQ/?imgmax=800&quot; width=&quot;244&quot; height=&quot;173&quot;&gt;&lt;/a&gt;&lt;/u&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyRsRedYkjUBdLDTvAVAc7UAsymVQ2K-Mw_B87nxxMQCHQeFpN4QDDRi_as4EWJPc3X_vErPzAYcOhu3d2FVry9cS2ztHMsWSkweETG2dks8uqOV4HqpIn5sSaIJrHM7CqAasTLA/s1600-h/f4a311ed-b41d-4ab0-82df-eacdfa53f246%5B5%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;f4a311ed-b41d-4ab0-82df-eacdfa53f246&quot; border=&quot;0&quot; alt=&quot;f4a311ed-b41d-4ab0-82df-eacdfa53f246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiVSxOCGshLD68NPQwgGbtTz2YFB6WSR4LBt4bI2C5o3u6EoLO0KZTstOjfK_AWL5YB8ol9osOQMG4ll-5udjM5QFO76Y6b9llAplXqUVhTWhDCQQrjdcUq8mkwDU6W8WFiVxveQ/?imgmax=800&quot; width=&quot;244&quot; height=&quot;180&quot;&gt;&lt;/a&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYrz5uU3HvrYWYGXUUmz40Jbvh_rOV3ImUOru_PZVEyCHkZ4tf7pFQpsONiajLNAskc5ouLkqNnvVttpgfxYY6ez9SRYc4mpRQ_6r9DYhfj_qh10KntLiyDMPCKBJLe1NzoXdadQ/s1600-h/2cfe9ba2-4908-4a8b-845e-a2e8e6d2121d%5B8%5D.png&quot;&gt;&lt;img style=&quot;background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px&quot; title=&quot;2cfe9ba2-4908-4a8b-845e-a2e8e6d2121d&quot; border=&quot;0&quot; alt=&quot;2cfe9ba2-4908-4a8b-845e-a2e8e6d2121d&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm6enQjprxljYTA60uqFprHCanpszm4krnKt-mcPV7ugQxhJpK3K9BsNPcjoLImGvJAJQYxsM1E1xc5ghdc3aUinkBj8K8ubwt4Vhyphenhyphen00Q1RZLqt9nKB95cFwRMeSA_hsGEz9kytA/?imgmax=800&quot; width=&quot;244&quot; height=&quot;183&quot;&gt;&lt;/a&gt;  &lt;p&gt;&lt;em&gt;User stories are used to pull real information from the product owner. &lt;/em&gt;  </description><link>http://zubairdotnet.blogspot.com/2010/09/how-to-gather-agile-requirements-with.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkfTjBuvDjUUMY37Ml8321vFAGW_TkfF1iSfytFIecujCLuu3qQREUJrHIaaKmUeyspAgcZj0onYXMxPpOs_rxqfOP6dcPStO1Im0IZ9_EjFpfVxXOxbHYr7PefpIjoBWHXXCO0A/s72-c?imgmax=800" height="72" width="72"/><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-303123884266053922</guid><pubDate>Sat, 31 Jul 2010 12:01:00 +0000</pubDate><atom:updated>2010-07-31T16:39:56.358+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Architecture</category><category domain="http://www.blogger.com/atom/ns#">Software Architecture</category><title>Software Architecture: Where do you start?</title><description>&lt;p&gt;I watched this interesting presentation by &lt;a href=&quot;http://www.codingthearchitecture.com/&quot; target=&quot;_blank&quot;&gt;Simon Brown&lt;/a&gt; that answers some of the key questions about Software Architecture and the role of Software Architect including the following and clears some misconceptions about SA.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;What is a Software Architecture? &lt;/p&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;http://www.infoq.com/articles/brown-are-you-a-software-architect&quot; target=&quot;_blank&quot;&gt;Are you a Software Architect?&lt;/a&gt; &lt;/p&gt;&lt;li&gt;&lt;p&gt;What is the role of a Software Architect? &lt;/p&gt;&lt;li&gt;&lt;p&gt;How do you go from a blank sheet of paper to software delivery.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Click the following to watch the presentation on &lt;a href=&quot;http://www.skillsmatter.com/&quot; target=&quot;_blank&quot;&gt;SkillsMatter.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://skillsmatter.com/podcast/design-architecture/simon-brown-architecture-where-do-you-start&quot; target=&quot;_blank&quot;&gt;&lt;img title=&quot;Simon Brown&#39;s presentation on Software Architecture&quot; alt=&quot;Simon Brown&#39;s presentation on Software Architecture&quot; src=&quot;http://www.codingthearchitecture.com/images/20100517-where-do-you-start.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://zubairdotnet.blogspot.com/2010/07/software-architecture-where-do-you.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-8697625111476626260</guid><pubDate>Tue, 13 Jul 2010 18:51:00 +0000</pubDate><atom:updated>2010-08-07T19:53:19.438+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">DTN</category><category domain="http://www.blogger.com/atom/ns#">Dubai</category><title>Dubai Tech Nights</title><description>&lt;p&gt;Today I attended a session of &lt;a href=&quot;http://www.meetup.com/dubaitechnights/about/&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Dubai Tech Nights&lt;/strong&gt;&lt;/a&gt;, it was announced today that it’s been running successfully for 6 months now,but it was my first and definitely not the last, here’s why.&lt;/p&gt; &lt;p&gt;The most notable part of the whole session was the great audience, it was great to see so many professional under one roof dedicating their time to make it happen.&lt;/p&gt; &lt;p&gt;I cant remember the gentleman’s name,but he represented &lt;a href=&quot;http://www.rit.edu/dubai/&quot; target=&quot;_blank&quot;&gt;RIT University Dubai&lt;/a&gt; and shared with the audience the expansion plans and how his university is doing in general despite the unfavorable conditions.&lt;/p&gt; &lt;p&gt;Then a Emirati Phd student told his about his thesis on Small and Medium Business that he wants to hear from the CXO of 1000 companies in Dubai so then he can take their concerns and opinions to propose them to the Government.&lt;/p&gt; &lt;p&gt;Another fellow Emirati who happens to be a writer showed a book that he has written which basically tells the story of 6 Emiratis that he interviewed and how they made it big, one of them is &lt;a href=&quot;http://www.jo.jo/index.php?option=com_content&amp;amp;view=article&amp;amp;id=1423:mohammed-saeed-haribfreej&amp;amp;catid=77:culture&amp;amp;Itemid=176&quot; target=&quot;_blank&quot;&gt;Saeed Harib&lt;/a&gt; of &lt;a href=&quot;http://www.freej.ae/&quot; target=&quot;_blank&quot;&gt;Freej&lt;/a&gt;. The idea of writing a book came to his mind when he reached people to take an initiative and how he was given ready excuses by those that he approached.&lt;/p&gt; &lt;p&gt;Another interesting thing to hear was about the startup &lt;a href=&quot;http://www.nahel.com/&quot; target=&quot;_blank&quot;&gt;Nahel.com&lt;/a&gt; that offers online shopping in the UAE, the gentlemen talked about his company, what are their strengths, why they decided to launch it, what’s the business model, the target audience,what are the challenges they are facing, how he manages delivery etc, it was interesting to hear it and a lot of great questions were asked during his talk.&lt;/p&gt; &lt;p&gt;Then there was a presentation by &lt;a href=&quot;http://www.dlapiper.com/matthew_glynn/&quot; target=&quot;_blank&quot;&gt;Matt Glen from DLA Piper&lt;/a&gt; on Legal protections as an agent for fueling technology innovation, the gentleman explained the difference between a invention and a innovation, what’s an NDA from a legal perspective, the procedure for filing a patent if you are an inventor, what are limitations and your rights as an inventor. How do you define Intellectual property etc. He said that an Invention is something that converts money to an Idea and Innovation is something that takes an idea and converts it to money :)&lt;/p&gt; &lt;p&gt;Then there was the networking session over pizza and cold drinks, I met some interesting fellow DTN members and missed a lot others that I’m hopefully going to catch next time.&lt;/p&gt;</description><link>http://zubairdotnet.blogspot.com/2010/07/dubai-tech-nights.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-3342805442388357176</guid><pubDate>Sat, 10 Jul 2010 10:35:00 +0000</pubDate><atom:updated>2010-08-31T17:45:51.117+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CodeSmith Studio</category><category domain="http://www.blogger.com/atom/ns#">LINQ to SQL</category><category domain="http://www.blogger.com/atom/ns#">Northwind</category><category domain="http://www.blogger.com/atom/ns#">PLINQO</category><category domain="http://www.blogger.com/atom/ns#">Visual Studio</category><title>PLINQO or LINQ to SQL “Supercharged”: Getting Started</title><description>&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmqG_cGp2alN20m4TkkBMxNSurrxv_456UQAiiCNYzap__KTMDwgjIjfDDFMcA4-YA5XT2d2euhL44XX-inOG2e-RHf99gn5W-F_7O4jcu9e-_doAiNiVi6_xiGm-mJsasMopxTQ/s1600-h/plinqologo%5B2%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;plinqologo&quot; border=&quot;0&quot; alt=&quot;plinqologo&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL3kjYuOiN9Hr9VXBSaXBNowEI1qXB_AB2uil58sKepof9I_bRkJjVbMbW3FvQ5uu8YCF7ObFrdJRJYEKlX61EO_agxjYE84q-3jbRCxILjkOkTPFMTrWOvz5ALzBYnlkj6UBbzA/?imgmax=800&quot; width=&quot;206&quot; height=&quot;93&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The goal of this post is to introduce you to &lt;a href=&quot;http://www.plinqo.com/feature-tour.ashx&quot; target=&quot;_blank&quot;&gt;PLINQO&lt;/a&gt; or &lt;em&gt;Professional LINQ to Objects&lt;/em&gt; for &lt;a href=&quot;http://www.codesmithtools.com/downloads&quot; target=&quot;_blank&quot;&gt;CodeSmith Studio Professional&lt;/a&gt; to generate LINQ Entities and Query extensions.&lt;/p&gt; &lt;p&gt;By the end of this post you should know how to get a working Visual Studio project containing a single DBML file, Entity classes for your database tables &amp;amp; helpful Query Extensions generated using CodeSmith Studio and PLINQO.&lt;/p&gt; &lt;p&gt;&lt;em&gt;PLINQO is developed by &lt;a href=&quot;http://www.codesmithtools.com/&quot; target=&quot;_blank&quot;&gt;CodeSmith Tools&lt;/a&gt;, to follow the steps you need to have CS Studio installed, &lt;a href=&quot;http://www.codesmithtools.com/downloads&quot; target=&quot;_blank&quot;&gt;download the free trial&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;&lt;em&gt;&lt;strong&gt;Let’s get started..&lt;/strong&gt;&lt;/em&gt;&lt;/h3&gt; &lt;p&gt;When we fire up CodeSmith Studio we get the &lt;em&gt;Template Explorer &lt;/em&gt;window,expand &lt;em&gt;Framework &lt;/em&gt;and see PLINQO installed out of the box.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZ018n5HjUWjaFygGMCGIPQAL10aSSyZVjawsvzUZALjLLX8RtjN6BSeMiZVEeWVmjQOLOMSdwcatJctf9vkScHidu94z-3_2FRT3y0zppT2exVp75P_PTk50PseBMv1_iGWzR7A/s1600-h/codesmithtools%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;codesmithtools&quot; border=&quot;0&quot; alt=&quot;codesmithtools&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeL0iDImHtWXdKktEc1GowyeCoDVyrUdUKC5-g7Slzr7iojmY8x1D24iAi-9rYTlOu7R5rz3_B-NyrbrRyqyeWdb2zAsCL4HY3xMP5I-3ODQszaqk62VpK6AXp_OCYVk7fR26PQA/?imgmax=800&quot; width=&quot;245&quot; height=&quot;484&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;I have expanded the CSharp folder and notice that it contains a bunch of .cst template files,PLINQO uses them to generate our objects.&lt;/p&gt; &lt;p&gt;Right-click on &lt;strong&gt;&lt;em&gt;QuickStart.cst &lt;/em&gt;&lt;/strong&gt;and clicking &lt;em&gt;Execute&lt;/em&gt; brings up this dialog with bunch of properties.&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_SiWUyRQBJ_ittdMqgGNi2W5X7w36m3iD6UekzdUwH_7gCf9e8TN0vePjKlhCe0yKHZfSCnmEHOE-ZNh9FIakCnZuI7seVnCXa-Tgwm7elL2dqmuMBBhF5KXefU0PgKGS_YOD6A/s1600-h/qsdialog%5B7%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;qsdialog&quot; border=&quot;0&quot; alt=&quot;qsdialog&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSHIvxFOQw8edy8X90Bzom_kZX_3StPSFH-7B6ZPAoRh-wZepxkqrNeA8DYdpLbzLYnIEDFkde_m6U6RHNc9BTqWyf7shpMfmCmh6grtrdnEAMGWxYUKgk0ZoR6KQw67umXKFzfQ/?imgmax=800&quot; width=&quot;524&quot; height=&quot;466&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We look at them in just a moment, first click the … button on &lt;em&gt;SourceDatabase &lt;/em&gt;property, for the demo I am using a &lt;em&gt;Northwind&lt;/em&gt; database, so let’s select it.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghe1wGti7uqWBe014PWeYKSXf4naz4VyoYpxPY9LeLcwglglILw0jpJ9EegQCsLrqhxQOSo5zQhDynFw5oQKFi5fbfcmyFQBNYAY7rToRpXz28gB4RD8gaMhVoA9Ur_8A43YPBUQ/s1600-h/adddbconnection%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;adddbconnection&quot; border=&quot;0&quot; alt=&quot;adddbconnection&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJBsOJmcu3APPNTL0Y_Kc1wUvO8nonh9wHdL2yXT2pmCtBss9IB3vIaQSwG52Ub_Fan-UNbes9Mj-LHjCo0vM1_LVALA3OM53O8sTC-hXSA_MoaVRrM8fXgz5zky2pi9UEYHTWJg/?imgmax=800&quot; width=&quot;604&quot; height=&quot;414&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We can see that rest of the properties fill &lt;em&gt;automagically&lt;/em&gt;,now lets take a look at each of them.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyeey2AwnJW1JI334cEgPXzadi_G5lSf92BxNuHTDuSjVxYpeXS-fJvOBuIv7bGeOyOjyiQjv98dYaVIqMXNCMoZOrcs8rv2EcILAfUv-DLWYZprMO098AvEDX-v_tv_5lk5Ei5w/s1600-h/nwfilled%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;nwfilled&quot; border=&quot;0&quot; alt=&quot;nwfilled&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNtA8jEZ8EjobaCM-Ne12oF0pmCe-oDoK8ChBmxQWTc5rxZvJq5vyfxvfwkyNmy7iJ5yCusGwJ-NibULd1CnDGqedCLFhQK38vkUrbH_zECINnE8cej0JgfkPrKAh9bwVuiFqWbA/?imgmax=800&quot; width=&quot;454&quot; height=&quot;403&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;After the source database info, PLINQO needs to know the target language to generate the entities,location where the files will be generated and so on.&lt;/p&gt; &lt;p&gt;Now lets talk about the not so obvious ones. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;By default PLINQO generates 3 projects, a DAL project, a Dynamic Data website or web application project and a Test project.&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;The Data Project&lt;/strong&gt; group tells the namespace for the data project,do we need to copy the template files to the target folder and type of queries it should generate,this has 2 options &lt;em&gt;QueryExtensions &lt;/em&gt;and &lt;em&gt;ManagerClasses,&lt;/em&gt; we will look them in a future post.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Interface Project &lt;/strong&gt;needs to know whether or not generate a Data web service file, type of project (Web application or Website) and the project name.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;The Test project&lt;/strong&gt; properties tell whether or not include a Test project in the solution and the name of the test project.&lt;/p&gt; &lt;p&gt;Let’s leave the default selected,specify the target Location and hit &lt;em&gt;Generate&lt;/em&gt;, &lt;/p&gt; &lt;p&gt;This launches Visual Studio with a solution that contains our 3 projects.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvIghFUbOGRw6YMH8HJyBiWiPc-yWohhqFxUWMC0GV4Kv72peoWxCefubazjqNzhY84sqHdOIEo3QGL4aVl3tX8Bhbxe0EhhfgueIYmt37YYzImWOfKrh7YEUruL44Sq1wCFRyPg/s1600-h/gensolexp%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;gensolexp&quot; border=&quot;0&quot; alt=&quot;gensolexp&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwzEaMDKDSYYBkrAJcFUYe4mQAY5wxlXy9O6Nnd8zmyDb18sTC7xGwK88z80pFkzX497FuoUgWKK9IsFFSLLaCY0pnYA57YNx0lm-b7fSUS_DDHO5vi0qmFsY_wlKRsv5JTnRA4w/?imgmax=800&quot; width=&quot;266&quot; height=&quot;422&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;To generate Entities and Queries we need to do one last step before we’re on our way.&lt;/p&gt; &lt;p&gt;Before we do that let’s go behind the scenes to see how PLINQO will generate the classes for us,so&lt;/p&gt; &lt;p&gt;Right click on &lt;em&gt;Northwind.Data.csp&lt;/em&gt; file and select &lt;em&gt;Manage Outputs&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjygVxRnkhIgmRJqWOUgHqJZz80vbNWlTPFtx2O9wH7ROHw3pzYrLp9Aeqp4Q39t0xIafNXisuwI6GEiVJh4Fb_aiCbQ65Jbrlv-OZkcFFD5VRUJYFoe79UyK0HzXJ1aB8l7WPK5Q/s1600-h/manageop%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;manageop&quot; border=&quot;0&quot; alt=&quot;manageop&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW0-uB1-oQxpm_8EwR8CbtXMBFAK7G3gMeVqidi29mrpHIWRyQRFJyVGhI6cxODAKEQ3NnVs6qDtZuEo0z3UIZi3HkFJS09RIHlGPp91-8_6yhQLC1SaLzrC53QIfGGMpxqgYg2g/?imgmax=800&quot; width=&quot;448&quot; height=&quot;182&quot;&gt;&lt;/a&gt;&lt;/p&gt;This will bring up the following dialog, PLINQO uses the information in these outputs to generate the templates.&lt;br&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3Hn9JhMHKu_1xCTQL6Q2C-jXJHhgW1K_R-jAqA4O_dlWUpXqwlSAfy8v2bEBIZUXccw7Qp8JPJdv7IPEuiy_iqecuSNq1O1PhnPHEhO4aXD8Bk5X07yYZGvTNHjodi9U24gyAbw/s1600-h/manageopdialog%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;manageopdialog&quot; border=&quot;0&quot; alt=&quot;manageopdialog&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP0jj1D21i0OJq7hWKlCJae666uY6SAPOohjPrcmj08F0UFlIf0ADXfN6-D0ZE3pKzgB2C8cUkfYKIHlAt4eBEtV7_B-bF328ZKfQUGB6f1EZHJHtOiPcw0R8ZWMGXTNFPGir2yQ/?imgmax=800&quot; width=&quot;454&quot; height=&quot;354&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;For instance double-click on DBML will bring up a dialog where one of the things I can do is change the &lt;em&gt;Ignore Pattern&lt;/em&gt; to exclude tables with a matching name that I don’t want or change the name of the base class for all my entities.&lt;/p&gt; &lt;p&gt;In Entities I can change the default location of the Entities output directory for instance, similarly in Queries I can change the default name of the Datacontext object that PLINQO generates.&lt;/p&gt; &lt;p&gt;Let’s leave them unchanged, Cancel the dialog and go back to the&lt;em&gt; Solution Explorer.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Right-click the &lt;em&gt;Northwind.Data.csp &lt;/em&gt;file again and this time select &lt;em&gt;Generate Outputs&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnX-yMcjHml2B2rCF-HkYy0EulRsZgnGHWIRe0viGFeNHcR_BJ8WPNSpdB5hHSJ7ZArR5-lowhyphenhyphenGLfDW4qaYxM1jFg1cXgM2hbS22jFMqEreb1UoCK74YKngrd8K4LBIrXg2piuw/s1600-h/genop%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;genop&quot; border=&quot;0&quot; alt=&quot;genop&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbhdlrtT_acPqxkfb01Sff1tGSE8gRLii2mZ6EtQZ-XozaKXl5svvxeQY7eORep8AXX438ZoiZU7zqJsPTWrMsYkF_KWydW_CUy5_rXlqtmRjA6c58MqeEBBSNphTHINrARtrn9A/?imgmax=800&quot; width=&quot;454&quot; height=&quot;184&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;PLINQO will then build the solution,generate Entities and Queries required to query the database. &lt;/p&gt; &lt;p&gt;The final output looks like.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLnUELBUff3ijNIbbDfaERIed_4RDUfzF5ocXKvPnPMryyR1BaIm0VB8izUhBNnNvU0cya0a0YHOJk45o3Oc_edi-LkcHF9Y4fqKXMd4KKEa4HiCCbAqcPI43NF-zv2o2cRKy6jw/s1600-h/output%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;output&quot; border=&quot;0&quot; alt=&quot;output&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-JG6vZqjw216Q0hIqS7u7qQQOoiTkK_E-cNxNpEkWhBzsPPdUoSKidcPNAbD8UzjlREXLdr5yHQ6GKuM3lupMomCEmmmCOAGvbg94Vm1jafg_EqWMyca2HOJH5aGUr5Cgg9L2tA/?imgmax=800&quot; width=&quot;275&quot; height=&quot;764&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Let’s open the generated &lt;em&gt;Northwind.dbml&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjVJM3ZCZEcjA5cTPZBmfiStkGA0wRUn0FC-nx7WaZ_tulnYfb4jBscWXNftYqAYJMhEFDx-dCPHlXbzrm0l_hUuzSw6rIsf_YCdSiPaUjvmuDenScpm0OSfIWUitQGaLThfQoSgw/s1600-h/dbml%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;dbml&quot; border=&quot;0&quot; alt=&quot;dbml&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4YwToU3CjdCZZZUU0ogiF5RIkvyDkqm7mX3AYqEk2bpczWnuRL_unV5EiPbI1lLs2uA9N0ssEsKfM84RBs3FUqsaCAYATnKO8MWXnpYzDc2NKdz_LcXQ9nVrbWUkR8NhV8MZCWA/?imgmax=800&quot; width=&quot;623&quot; height=&quot;621&quot;&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;Perfect, now let’s go to &lt;em&gt;Northwind.UI &lt;/em&gt;project and fire up &lt;em&gt;Default.aspx&lt;/em&gt; in the browser.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc7kxH1qxl9h73whX1RJrzBZ5AU5S3z1Vc29le_9ZllhtlqElIA9biDTCY0qnUuTC-lpEo11cQSuIXXsRQwqyrbTgvpWihJBaQ56TYxTEasOcnGiMcJFQWgta5AvUiFMMICNu-2A/s1600-h/dyndatasite%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;dyndatasite&quot; border=&quot;0&quot; alt=&quot;dyndatasite&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgznG8wvZ79550arHQPsgedHLsPeAu71hDlBut4tHMDzMY88qPkQVK80qg-UDtZaGurkmJM3uj2j7bFtA5f2iZpne7YEoE5d4DvtNr-QiaQNZGuk8weoOnngv563Tr3vSAmIb72Eg/?imgmax=800&quot; width=&quot;504&quot; height=&quot;608&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nice so we got a fully working ASP.NET Dynamic Data web application project generated using PLINQO from a Northwind database.&lt;/p&gt; &lt;p&gt;In a future post we’ll see how PLINQO simplifies querying data with the help of some useful extension methods and few other tricks.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://www.zubairahmed.net/codesamples/PLINQ_Northwind_Sample.zip&quot; target=&quot;_blank&quot;&gt;Download this VS2010 Solution with Northwind database script &lt;/a&gt;(&lt;em&gt;does &lt;strong&gt;not&lt;/strong&gt; require CodeSmith Studio&lt;/em&gt;)&lt;/li&gt;&lt;/ul&gt;  </description><link>http://zubairdotnet.blogspot.com/2010/07/plinqo-or-linq-to-sql-supercharged.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL3kjYuOiN9Hr9VXBSaXBNowEI1qXB_AB2uil58sKepof9I_bRkJjVbMbW3FvQ5uu8YCF7ObFrdJRJYEKlX61EO_agxjYE84q-3jbRCxILjkOkTPFMTrWOvz5ALzBYnlkj6UBbzA/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-2484177217221225409</guid><pubDate>Thu, 08 Jul 2010 17:20:00 +0000</pubDate><atom:updated>2010-08-31T17:51:40.149+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">sql data compare</category><category domain="http://www.blogger.com/atom/ns#">VS 2010</category><title>Fun with VS2010 Ultimate: Comparing SQL Data</title><description>&lt;p&gt;&lt;span style=&quot;font-style: italic; font-weight: bold&quot;&gt;Update&lt;/span&gt;: &lt;span style=&quot;font-style: italic&quot;&gt;Its an honor to have &lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://weblogs.asp.net/scottgu&quot;&gt;ScottGu&lt;/a&gt; and &lt;em&gt;&lt;a href=&quot;http://www.hanselman.com/&quot;&gt;Scott Hanselman&lt;/a&gt;&lt;/em&gt;&lt;span style=&quot;font-style: italic&quot;&gt; &lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://twitter.com/scottgu/status/18097540059&quot;&gt;retweet&lt;/a&gt;&lt;span style=&quot;font-style: italic&quot;&gt; &lt;a href=&quot;http://twitter.com/shanselman/statuses/18053148697&quot;&gt;this post&lt;/a&gt; and &lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://weblogs.asp.net/scottgu/archive/2010/07/09/july-9th-links-asp-net-asp-net-mvc-jquery-silverlight-wpf-vs-2010.aspx&quot;&gt;link from the &quot;Gu&quot; blog&lt;/a&gt;&lt;span style=&quot;font-style: italic&quot;&gt; and also big thanks to&lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://www.alvinashcraft.com/2010/07/09/&quot;&gt; Alvin Ashcraft&lt;/a&gt;&lt;span style=&quot;font-style: italic&quot;&gt; &amp;amp; &lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://blog.cwa.me.uk/2010/07/09/the-morning-brew-639/&quot;&gt;Chris Alcock&lt;/a&gt;&lt;span style=&quot;font-style: italic&quot;&gt; for links to this post and offcourse thanks everyone else for &lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://bit.ly/d1aFEc+&quot;&gt;RT-ing it on twitter&lt;/a&gt;&lt;span style=&quot;font-style: italic&quot;&gt;. If you like this post then please visit back &amp;amp; dont forget to follow me on twitter &lt;/span&gt;&lt;a style=&quot;font-style: italic&quot; href=&quot;http://twitter.com/zubairdotnet&quot;&gt;@zubairdotnet&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;While playing with Visual Studio 2010 I discovered that the Ultimate (and Premium) edition ship with SQL Data and Schema Compare tools out of the box, so I decided to give a whirl.&lt;/p&gt; &lt;p&gt;I made two databases, &lt;em&gt;SourceDB &amp;amp;&lt;/em&gt; &lt;em&gt;TargetDB&lt;/em&gt; with only one table &lt;em&gt;Customer&lt;/em&gt;&lt;em&gt;. &lt;/em&gt;Here’s how the data looked like.&lt;/p&gt; &lt;table border=&quot;0&quot; cellspacing=&quot;2&quot; cellpadding=&quot;2&quot; width=&quot;400&quot;&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;&lt;strong&gt;Source&lt;/strong&gt;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;&lt;strong&gt;Target&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8kSQfdeJU7nxmadO3IaSOOodofhaUak-lCPBW2Ti_eJfTeeSnQWNexP7BEczPEd3oFROv0WlHnWPTXMIjCQ7ksAs-ZhI2EusCGQSediugzwzpHnOAJmGJPYOE2P2ygIsMKrvU9A/s1600-h/sourcetable%5B7%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;sourcetable&quot; border=&quot;0&quot; alt=&quot;sourcetable&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMkmpPVtQEB5f-CJ_9HqeXp7IOBjCIAkGfNFZWEFvbaUAybpK4BJukA6gI5c5E9JZV5bO0hxPGqV-MQMcm96rRDPDhAZxl0sC10ppasZYoe_TB6cyOGVQYBudfnUWaAkCcrYmW_Q/?imgmax=800&quot; width=&quot;348&quot; height=&quot;247&quot;&gt;&lt;/a&gt;&lt;/td&gt; &lt;td valign=&quot;top&quot; width=&quot;200&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQiAh0EhlRsdxD_asBTlGDOkEi-Ow4K4XZeXnts2v2kYLE1rPN0YKgKA9r3OjPPAgnYmHPcgMUpcLYx0S7TcelKLtJQmD-rOPW2FLs-s-5jfgKk99iD3vWh6EOCPPrVndUFpCe1w/s1600-h/targettable%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;targettable&quot; border=&quot;0&quot; alt=&quot;targettable&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihukryxvqLZMsptc-xvLpfj7fb2veVGdF6LHlqb3HBmJuDj6QcBFdNo_7RUbwOB6HaKrCRDqBuVd0YRG0wMbrRpM1Ht_XGpwuWp-Rvm6eIw3-2ikTCdMD20JMWUapzGwUW5K6ZwQ/?imgmax=800&quot; width=&quot;345&quot; height=&quot;232&quot;&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;hr&gt; &lt;br&gt; &lt;h2&gt;The Wizard&lt;/h2&gt; &lt;p&gt;Next I selected the &lt;em&gt;Compare Data&lt;/em&gt; options on the source table from &lt;em&gt;Server Explorer&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXvorSnnVvmJD4yBc-OkU3-ZHfv7lNTWIyH3vqhpHmpBb6VDqAGKvMqTDVRRQc2OGRr4aOausi1oCk2W1QHuvcyjb320TOUP3eMh3nN-VV8vdA_cWIhfwJbOkfEUMT_942Ch4GbA/s1600-h/selectcomparedata%5B6%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;selectcomparedata&quot; border=&quot;0&quot; alt=&quot;selectcomparedata&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghHCBWnsHKdRdKUg8mdcmw1zLYgBPZrmTIYKrrAdw7vvT3KHcXcUo2nk4YyTnqLOUJFEsZqrCw5Rm-uRmyNgnrQ9tjDTYW0JMxkccsBwFbSZ7cyEHNOHp_uxR0OZARvn35idt8tg/?imgmax=800&quot; width=&quot;244&quot; height=&quot;223&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This brought up the interface where I chose the target database and hit Next, I decided to leave the other options checked.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhs6aTC8vdEgdNucRsgtWa0SAVl5QS7xnD02ntZUpMK-Yh7BbSaavv3RpLf-fDZ7ua-b9EILMv_6ccRJa6Pnk_rSzKhaQQ0XzVkhQcCMlclMMyWadW93EaS4MhVe0vaa73lEeBKg/s1600-h/datacomparewindow%5B9%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;datacomparewindow&quot; border=&quot;0&quot; alt=&quot;datacomparewindow&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXtj8itXD4WDAeXSCw_aDhbaEQfnREzVLbvuaQ0UYc6BNZt2v6D8cq7Ki7pLvirflbcUVVbodIzJYWqCu_6wgn5ETJV7rnAGjLfZ1xQymTI_XkUzyQsDn1Yaf6q9ekumHFaQdRMw/?imgmax=800&quot; width=&quot;644&quot; height=&quot;359&quot;&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next screen showed the tables and views that I wanted to compare, in my case the only table &lt;em&gt;Customer.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5tLCg12m13cLasLcfVP5WZsE5vcGwkTtA7-rYwC4KTRxtoN82wNU7cvGy-yrv7s-Av73faQCfomCWQlLXKiXg4Sorhs3G0pibGQ5nDrE6U9TnuV-Tllb3Dug-dSULKi-aEf7ynw/s1600-h/comparehitfinish%5B4%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;comparehitfinish&quot; border=&quot;0&quot; alt=&quot;comparehitfinish&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7_QpXAjby8Dvzht_wYVjcfsr_VpWrlqgXaIyi1a6TK_xFBxeE-AcKfp5rRK0KONJQ7KGZgd5L1LyxVVcGZyLxsXlGlJMrebmdB0oouEFgYbnJuokt0Xbk0RTd1ZsBb96UiQHrdA/?imgmax=800&quot; width=&quot;644&quot; height=&quot;359&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;h2&gt; &lt;hr&gt; &lt;br&gt;The Result&lt;/h2&gt; &lt;p&gt;Now the interesting part,&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3q5qQLoen5mt7dl06sY0pYWNCTRDkTlXeE6gVgPk7kycE61u47-l5vzeXcoBo8GSZvdxcLgGRz72kui_OBzuS70sX94iIQZaeTzJN4PeyrxU5WkHjy_XTDyBhL9n12rL7DSiiBg/s1600-h/datacompareresults%5B5%5D.jpg&quot;&gt;&lt;img style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;datacompareresults&quot; border=&quot;0&quot; alt=&quot;datacompareresults&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhUWIgJHL9k6u2VPrVmk1J0fKTWpZAW3LENvMSz62QMaFOwDz4C8zT6a1l4ri4liEVUbU1AEQz5ca19499-UYCnO90VroDns4l5yGDzWrDcI7fP6yasb1eY8QwsSP1H9md38RCMQ/?imgmax=800&quot; width=&quot;644&quot; height=&quot;321&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;The changed records are off course highlighted.&lt;/p&gt; &lt;p&gt;In addition to the above ones that need to be updated, notice that there is only 1 record in the source table that the target needs to add and 1 identical that will remain unchanged,let’s look at them.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_MkHtd_GyjqJxvtDEfONt6C4_sCHBgVtBCa2SX-fjh6K49PTae04pPcxlnhvM-Vx3mjLtxgZfuH97mlBdGjZfEVgPsIBhilvxXtk4BrGE1spm6JVpwV9q1plgj2RyhpnLQwoLSA/s1600-h/onlyinsource%5B7%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;onlyinsource&quot; border=&quot;0&quot; alt=&quot;onlyinsource&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRE-tUCT5vonu3EBy1szXCSGHH997q7_HH78WGnnwV8bemJy9VC-DLXm4EnpmG478dcOJckVM1ZR5JYrMqNkkXSM1CDZh1oMXnvMrlMvUJAgQtGWOdktCaxYSO_vvVSe-4UUNXqw/?imgmax=800&quot; width=&quot;466&quot; height=&quot;317&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4nQX1c2rQiClamXPYOCtYqVooCYuYinfQww1YtGX-MEahL7IwsCkjmBMP7lNALiSPeZJ6ihpfea_TVV62sFVJA8JEuC9oc2HpVRXESMsLeIgUSYMBolP4IFXvx42hJIkR8aJYCw/s1600-h/onlyintarget%5B4%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;onlyintarget&quot; border=&quot;0&quot; alt=&quot;onlyintarget&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ0juHYOuiwJgo3N1O4l6pq1sQIGGzvdHptimx8VndgR0IREimcketGx06I3SxsijpHpTk3zezrnUClGVQi3zyP8GyGIxeYDjIQoFokeR0_Soynzqjb7UH1hH0zjyhVM-uh42dyA/?imgmax=800&quot; width=&quot;464&quot; height=&quot;317&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;hr&gt; &lt;br&gt; &lt;h2&gt;The Update&lt;/h2&gt; &lt;p&gt;but this doesn’t end here, off course I could update my target database right from VS, for that I had two options, I could &lt;em&gt;&lt;strong&gt;generate the script&lt;/strong&gt;&lt;/em&gt; or &lt;em&gt;&lt;strong&gt;have VS2010 do it for me&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt; &lt;p&gt;Since I was playing, I thought let’s see both so I right-clicked and selected,&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEit6PhHm22-52r59CM5XHmDMUipvYfn1S9cpVIT4jGMB8i8WaCEWqadTvCQOptLOoq2d3R9TgbQndEXbmZMBBkzNUyfV1fZfBnL1OEJ-ait5Qexw6gKHw83bDZg5BpXVsG-IyIEqA/s1600-h/showscript%5B4%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;showscript&quot; border=&quot;0&quot; alt=&quot;showscript&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE-_sz3CLMn9jh0FzWN5AomTtO0o2EMH3CGuTV74FBfqYpWDwuIIZq2bi24E0YJylQp69ffARc2myjTkCepQ9WDWlvYYe4ambKlyFZLy14LMFgcs0wI-BSJlmIbLq8t3WCTfWoPw/?imgmax=800&quot; width=&quot;326&quot; height=&quot;228&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;That brought up the generated Sql script in the editor that I could then use to update my target database,that looked like.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7YNlw_sHxCp7bXao45B_QGgStVGFX6hmsmhV4ByfZ_tfFSHlZR8wxmQ2nzF2Uw3bp0Pz-FiRgDvBu6jOFkpZ7VYRZAYy-FW0QPsRPwucR80_xYSy1D9CW2-1pzd2PbpHa8_w2gQ/s1600-h/targetscript%5B5%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;targetscript&quot; border=&quot;0&quot; alt=&quot;targetscript&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi77JtEm8W06EAq7AUI1gFgEhCGEe0fVNtYTzjrRxqi-9uHmcXKlRZPhSRMcgaYDfqCrJivp9lGAkysGUT1xqGMoDGz1ejpjjSy0cJPCopFesFm-WSpwHLGvz1XRz3AeO-X_arwHA/?imgmax=800&quot; width=&quot;644&quot; height=&quot;354&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;Let’s look a bit deeper,hmm VS disables FK constraints,performs the operation and then restores it back, pretty good.&lt;/p&gt; &lt;p&gt;Since I was a bit lazy so thought I will have VS do it for me, all I had to do was…right-click and select..&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnFOqMo21r8KML0AIR5HxqXKRYe_3i5PeWjA_6Rro3hEdTXRvLJyU3GaXDB_OdsOyvTH7kWv_IFRjcPjd3E0jZ5qve5xMj-ko1bSSyqNkaElPBlIEBszLPMQDqFXG9mfFZVgeSaQ/s1600-h/writeupdates%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; class=&quot;wlDisabledImage&quot; title=&quot;writeupdates&quot; border=&quot;0&quot; alt=&quot;writeupdates&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtYdR040vZBqL4sXTAeDFt6lRdx9CMKwFm8uK2EpsUx3-GuWG6QWTyOc22k6jo6PD4xsGglrvngNwJspr4UyQMYjgbWAUWFFha-UkxG0i28VqtPjH6eDMyVi_ANLnefwUtZMvqsA/?imgmax=800&quot; width=&quot;328&quot; height=&quot;230&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;VS 2010 then presented a confirm dialog, I knew what I was doing so I hit OK and the changes were pushed to the target table.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2010/07/fun-with-vs2010-ultimate-comparing-sql.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMkmpPVtQEB5f-CJ_9HqeXp7IOBjCIAkGfNFZWEFvbaUAybpK4BJukA6gI5c5E9JZV5bO0hxPGqV-MQMcm96rRDPDhAZxl0sC10ppasZYoe_TB6cyOGVQYBudfnUWaAkCcrYmW_Q/s72-c?imgmax=800" height="72" width="72"/><thr:total>13</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-8519836716000082919</guid><pubDate>Wed, 09 Jun 2010 17:51:00 +0000</pubDate><atom:updated>2010-06-11T09:29:27.608+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">InfoPath</category><category domain="http://www.blogger.com/atom/ns#">Sharepoint 2010</category><category domain="http://www.blogger.com/atom/ns#">TechiesUAE</category><category domain="http://www.blogger.com/atom/ns#">Visio 2010</category><category domain="http://www.blogger.com/atom/ns#">VS2010</category><category domain="http://www.blogger.com/atom/ns#">Workflow</category><title>TechiesUAE presentation on Sharepoint 2010 Workflows</title><description>Just returned from another great session of &lt;a href=&quot;http://www.twitter.com/techiesuae&quot;&gt;@techiesuae&lt;/a&gt;, this time by &lt;a href=&quot;http://www.twitter.com/techedtoronto&quot;&gt;Ed Muster&lt;/a&gt; at &lt;a href=&quot;http://www.microsoft.com/&quot;&gt;Microsoft Gulf&lt;/a&gt; about &lt;a href=&quot;http://techies20100609.eventbrite.com/&quot;&gt;Sharepoint 2010 and Workflows&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Authoring Workflows&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;Ed showed authoring workflows in Visio 2010, export and customize them with Sharepoint Designer 2010 &amp;amp; Info Path 2010 and debug them with Visual Studio 2010.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Importing existing Workflow&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;He also imported existing Sharepoint 2007 workflows in Sharepoint 2010 with no troubles but the bad news is that there is no backward compatibility and the tools cannot be used to target Sharepoint 2007.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;i&gt;&lt;b&gt;Sharepoint 2010 targets .NET v3.5&lt;br /&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;W&lt;/span&gt;&lt;/i&gt;hile the goodness offered with WF4 cannot be leveraged,this means Sharepoint 2010 is built on a mature framework that has been around for a while.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Workflow authoring, debugging and publishing has been greatly simplified with the new version of Sharepoint 2010&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Community&lt;/i&gt;&lt;br /&gt;&lt;/b&gt;This event also gave a chance to chat with new and existing members of &lt;a href=&quot;http://techiesleaders.spaces.live.com/&quot;&gt;Techies&lt;/a&gt; user group,hopefully I&#39;ll see them again.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-size:small;&quot;&gt;&lt;i&gt;Update 11.6.2010&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;</description><link>http://zubairdotnet.blogspot.com/2010/06/techiesuae-presentation-on-sharepoint.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-3066473048028638231</guid><pubDate>Mon, 24 May 2010 16:16:00 +0000</pubDate><atom:updated>2010-05-24T21:10:38.785+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">automation</category><category domain="http://www.blogger.com/atom/ns#">batches</category><category domain="http://www.blogger.com/atom/ns#">subversion</category><category domain="http://www.blogger.com/atom/ns#">svn</category><title>How to: Setup new Subversion Repository using a batch file</title><description>&lt;p&gt;For those who use &lt;a href=&quot;http://subversion.tigris.org/&quot; target=&quot;_blank&quot;&gt;Subversion source control&lt;/a&gt; know that setting up a new repository can be tedious specially when you have to do it couple times a week or month.&lt;/p&gt; &lt;p&gt;I found myself doing it quite often and realized that I should automate this somehow, so here’s how I did it using simple a batch file.&lt;/p&gt; &lt;p&gt;To be able to have a custom name of the repository I wanted the batch file to prompt me in the first step,here’s how you do it&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt; &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;@echo off&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;set /p name=Type the name of repository &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;With the echo off here’s how the command prompt looks like.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggUM6lZyN3hjOIjey4Q08nfK6yBe6tVfOZW9Z46wl0lcPF45Rn5q6mlqvM50tsVxuQboai3jWyr15_8kRbwRXDf3FNUd_9_07AsqbjRSeR67DuxcZ-Ncxht9kaQc47CvmAuM5NuQ/s1600-h/cmd%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;cmd&quot; border=&quot;0&quot; alt=&quot;cmd&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nIlGmdpzUIup0Jr9MaLGqO9CdutE0POEC2Pc3DlvF9hM0ySG9yZY4UBBQFy6XDxMxhz6fGcdnSsPA1bSppBUNoEEV-m1Jp3N2-lWC09bLmMl6F0PizPAn9mWuGT8S0yNMTQOXg/?imgmax=800&quot; width=&quot;465&quot; height=&quot;219&quot;&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;When you type the name of the repo and hit Enter, subversion sets up some folders and files that it needs to operate.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhI51EROD0KayNVHFeqj25ucgX-Ik3p8O5_Fi8NIbmsH93nJtA66MPsKAoz1W_SRSjEHYQIcBpIY7uB-lh6iBMFUmcr3p-EDeZgQ6aWZ_fZG3_xnCUaa1JlST5WWbncHbBwpl3rcQ/s1600-h/svn%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;svn&quot; border=&quot;0&quot; alt=&quot;svn&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix0-qMb4BamenCbIHq-drQrLv4Ro8Ve6gta7jMiBBjd91qbS7eCOHKUCekCc5O9LzWNa47UR5fDt1tSGPd-NsnNbmCLcjI_yBrlbMX3l6oXMLFR2pOdjQ-LzTXkTOmHrIScFRuKg/?imgmax=800&quot; width=&quot;601&quot; height=&quot;140&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the &lt;strong&gt;&lt;em&gt;conf &lt;/em&gt;&lt;/strong&gt;folder&lt;strong&gt;&lt;em&gt; &lt;/em&gt;&lt;/strong&gt;it stores users credentials and permissions to check into this repository. You dont want to create them everyday specially for a small team, in my case I had to copy them from another repository that I have previously configured, so in the batch file I did this&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;copy d:\svn_repository\old.project\conf\authz d:\svn_repository\%name%\conf\authz &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;copy d:\svn_repository\old.project\conf\passwd d:\svn_repository\%name%\conf\passwd&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;%name% &lt;/em&gt;&lt;/strong&gt;is the variable that holds the name of my repository.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Similarly in the &lt;strong&gt;&lt;em&gt;hooks&lt;/em&gt;&lt;/strong&gt; folder subversion stores different automated actions like pre-commit, post-commit, pre-lock and so on, in my case I wanted a demo server to update itself after every check-in to its repository, so in this case I could use &lt;strong&gt;&lt;em&gt;post-commit&lt;/em&gt;&lt;/strong&gt; hook that had this command.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #006080&quot;&gt;&quot;C:\Program Files\CollabNet Subversion Server\svn.exe&quot;&lt;/span&gt; update &lt;span style=&quot;color: #006080&quot;&gt;&quot;D:\demo_server\demo_project&quot;&lt;/span&gt;&lt;/pre&gt;&lt;br&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Following line creates the hook with the svn &lt;em&gt;&lt;strong&gt;update&lt;/strong&gt;&lt;/em&gt; command.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;echo &lt;span style=&quot;color: #006080&quot;&gt;&quot;C:\Program Files\CollabNet Subversion Server\svn.exe&quot;&lt;/span&gt; update &lt;span style=&quot;color: #006080&quot;&gt;&quot;D:\demo_server\%name%&quot;&lt;/span&gt; &amp;gt;&lt;span style=&quot;color: #008000&quot;&gt;;&amp;gt; d:\svn_repository\%name%\hooks\post-commit.bat&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Then I wanted to setup my &lt;em&gt;demo_server&lt;/em&gt;, I had to create the folder with the name of my repository along with &lt;em&gt;branches, tags and trunk &lt;/em&gt;folders. Here’s the complete snippet or you can view it here &lt;a href=&quot;http://www.zubairahmed.net/codesamples/create_svn_repository.bat.txt&quot; target=&quot;_blank&quot;&gt;create_svn_repository.bat&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;@echo off&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;set /p name=Type the name of repository &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;d:&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;cd d:\svn_repository\&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;svnadmin create %name%&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;copy d:\svn_repository\old.project\conf\authz d:\svn_repository\%name%\conf\authz &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;copy d:\svn_repository\old.project\conf\passwd d:\svn_repository\%name%\conf\passwd &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;echo &lt;span style=&quot;color: #006080&quot;&gt;&quot;C:\Program Files\CollabNet Subversion Server\svn.exe&quot;&lt;/span&gt; update &lt;span style=&quot;color: #006080&quot;&gt;&quot;D:\demo_server\%name%&quot;&lt;/span&gt; &amp;gt;&lt;span style=&quot;color: #008000&quot;&gt;;&amp;gt; d:\svn_repository\%name%\hooks\post-commit.bat&lt;/span&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;cd d:\demo_server&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;md %name%&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;md %name%\branches&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;md %name%\tags&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;md %name%\trunk&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;set /p done=Type &#39;&lt;span style=&quot;color: #0000ff&quot;&gt;exit&lt;/span&gt;&#39; &lt;span style=&quot;color: #0000ff&quot;&gt;to&lt;/span&gt; quit &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Hope it helps someone out there, let me know in the comments.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2010/05/how-to-setup-new-subversion-repository.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1nIlGmdpzUIup0Jr9MaLGqO9CdutE0POEC2Pc3DlvF9hM0ySG9yZY4UBBQFy6XDxMxhz6fGcdnSsPA1bSppBUNoEEV-m1Jp3N2-lWC09bLmMl6F0PizPAn9mWuGT8S0yNMTQOXg/s72-c?imgmax=800" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-8181744150616994222</guid><pubDate>Fri, 29 Jan 2010 12:54:00 +0000</pubDate><atom:updated>2010-01-29T16:55:12.738+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET 2.0</category><category domain="http://www.blogger.com/atom/ns#">.NET 3.5</category><category domain="http://www.blogger.com/atom/ns#">.NET 4.0</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">Extension methods</category><title>Permanent Redirections with Response.PermanentRedirect Extension method</title><description>&lt;p&gt;To redirect a page request to another page ASP.NET ships with Response.Redirect() since the v1 that takes a string Url as the input parameter.&lt;/p&gt; &lt;p&gt;You will recall that this is not a permanent redirect, you know that to be able to make a permanent redirect you will have to do something like this&amp;nbsp; &lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;HttpContext.Current.Response.Status = &lt;span class=&quot;str&quot;&gt;&quot;301 Moved Permanently&quot;&lt;/span&gt;;&lt;br /&gt;HttpContext.Current.Response.AddHeader(&lt;span class=&quot;str&quot;&gt;&quot;Location&quot;&lt;/span&gt;, StringUrl);&lt;/pre&gt;&lt;br /&gt;&lt;style type=&quot;text/css&quot;&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: xxsmall;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;ASP.NET 4.0 now ships with a Response.PermanentRedirect() helper method that redirects the user permanently to a new page. Watch Joe’s &lt;a href=&quot;http://www.asp.net/learn/aspnet-4-quick-hit-videos/video-8772.aspx&quot; target=&quot;_blank&quot;&gt;quick hit video&lt;/a&gt; to see it in action.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Fortunately we don&#39;t need to wait for .NET 4.0 to have a fancy method like above, we can with the help of C# Extension methods, create a helper method today.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;For example take a look at this code &lt;/p&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&lt;span class=&quot;kwrd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kwrd&quot;&gt;void&lt;/span&gt; PermanentRedirect(&lt;span class=&quot;kwrd&quot;&gt;this&lt;/span&gt; HttpResponse response, &lt;span class=&quot;kwrd&quot;&gt;string&lt;/span&gt; StringUrl) {&lt;br /&gt;     HttpContext.Current.Response.Status = &lt;span class=&quot;str&quot;&gt;&quot;301 Moved Permanently&quot;&lt;/span&gt;;&lt;br /&gt;     HttpContext.Current.Response.AddHeader(&lt;span class=&quot;str&quot;&gt;&quot;Location&quot;&lt;/span&gt;, StringUrl);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;style type=&quot;text/css&quot;&gt;.csharpcode, .csharpcode pre&lt;br /&gt;{&lt;br /&gt;	font-size: xxsmall;&lt;br /&gt;	color: black;&lt;br /&gt;	font-family: consolas, &quot;Courier New&quot;, courier, monospace;&lt;br /&gt;	background-color: #ffffff;&lt;br /&gt;	/*white-space: pre;*/&lt;br /&gt;}&lt;br /&gt;.csharpcode pre { margin: 0em; }&lt;br /&gt;.csharpcode .rem { color: #008000; }&lt;br /&gt;.csharpcode .kwrd { color: #0000ff; }&lt;br /&gt;.csharpcode .str { color: #006080; }&lt;br /&gt;.csharpcode .op { color: #0000c0; }&lt;br /&gt;.csharpcode .preproc { color: #cc6633; }&lt;br /&gt;.csharpcode .asp { background-color: #ffff00; }&lt;br /&gt;.csharpcode .html { color: #800000; }&lt;br /&gt;.csharpcode .attr { color: #ff0000; }&lt;br /&gt;.csharpcode .alt &lt;br /&gt;{&lt;br /&gt;	background-color: #f4f4f4;&lt;br /&gt;	width: 100%;&lt;br /&gt;	margin: 0em;&lt;br /&gt;}&lt;br /&gt;.csharpcode .lnum { color: #606060; }&lt;br /&gt;&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now if you do a Response. you will see the static helper method in the intellisense.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHKAiRQalYleabv32M-x2v5KNiDCQOCj-eoQ2-dHV1FQl3vrmvO_jxlnsQ6Xg0fBxMpcwft-k-MZQMUiotSNdf5mLWWAC7wR8GHC7c-uveTe8TOR8hKZSo9nDr3ByuD_jfQEr5Kg/s1600-h/ResponsePermanentRedirect%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px&quot; title=&quot;ResponsePermanentRedirect&quot; border=&quot;0&quot; alt=&quot;ResponsePermanentRedirect&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIS2nOrQS3wjzPVHEr7u963ZOVi1xGYdidlqdRaDhqy1F7J_ZnJ9C7bdebCnHZefGcIntVTJ9b6w6vlclDvltTrKDUPUxJUzNzpNLm4cAaOQAYj5tPzHqszDOwBv141uGcHdwSNQ/?imgmax=800&quot; width=&quot;650&quot; height=&quot;290&quot;&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2010/01/permanent-redirections-with.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIS2nOrQS3wjzPVHEr7u963ZOVi1xGYdidlqdRaDhqy1F7J_ZnJ9C7bdebCnHZefGcIntVTJ9b6w6vlclDvltTrKDUPUxJUzNzpNLm4cAaOQAYj5tPzHqszDOwBv141uGcHdwSNQ/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-3808404780205671650</guid><pubDate>Sun, 29 Nov 2009 17:40:00 +0000</pubDate><atom:updated>2009-11-30T14:40:54.475+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Extensibility</category><category domain="http://www.blogger.com/atom/ns#">MEF</category><category domain="http://www.blogger.com/atom/ns#">VS2010</category><title>Getting started with Managed Extensibility Framework (MEF)</title><description>&lt;p&gt;Recently I got a chance to work with &lt;a href=&quot;http://www.wordpress.com/&quot;&gt;WordPress&lt;/a&gt; and &lt;a href=&quot;http://drupal.org/&quot;&gt;Drupal&lt;/a&gt;, those are the coolest PHP based blogging and content management systems out there, while I was impressed with the simplified installation and configuration, one thing that struck me was how simple it is to add plugins to the system. For instance I wanted a photogallery, so I downloaded the plug-in from &lt;a href=&quot;http://www.wordpress.com&quot;&gt;WordPress.com&lt;/a&gt;, unzipped, dropped it in the &lt;u&gt;plugins&lt;/u&gt; folder, went to the Administration panel and there it was, the plug-in sitting right there ready to activate.&lt;/p&gt; &lt;p&gt;Fortunately .NET now gets its own plug-in architecture framework in the form of &lt;a href=&quot;http://mef.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34838&quot;&gt;Managed Extensibility Framework&lt;/a&gt; or MEF. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;MEF makes it really easy to build extensible .NET applications with just a few lines of code.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Here’s how.&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;In the application that needs to be extended you define a common interface that your plugins can implement.&lt;/p&gt; &lt;div class=&quot;csharpcode&quot;&gt; &lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt; &lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   1:&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;interface&lt;/span&gt; IRule   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   2:&lt;/span&gt; {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   3:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; DoIt();   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   4:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Name { get; }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   5:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Version { get; }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   6:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Description { get; }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   7:&lt;/span&gt; }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Then you make a collection where all the plugins are stored and mark it with &lt;strong&gt;&lt;font color=&quot;#004080&quot;&gt;&lt;em&gt;Import&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt; or &lt;font color=&quot;#004080&quot;&gt;&lt;em&gt;ImportMany&lt;/em&gt;&lt;/font&gt; attribute.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   1:&lt;/span&gt; [Import( &lt;span style=&quot;color: #0000ff&quot;&gt;typeof&lt;/span&gt;( IRule ) )]      &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   2:&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;internal&lt;/span&gt; IList&amp;lt;IRule&amp;gt;: _rules { get; set ;} &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Then all you need to do is write your plug-in that implements the above &lt;font color=&quot;#004080&quot;&gt;&lt;em&gt;IRule&lt;/em&gt;&lt;/font&gt; interface that you defined in your extensible application and mark it with &lt;font color=&quot;#004080&quot;&gt;&lt;em&gt;Export&lt;/em&gt;&lt;/font&gt; attribute.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   1:&lt;/span&gt; [Export( &lt;span style=&quot;color: #0000ff&quot;&gt;typeof&lt;/span&gt;( IRule ) )]   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   2:&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;internal&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;class&lt;/span&gt; RuleInstance1 : IRule   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   3:&lt;/span&gt; {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   4:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; DoIt() {}   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   5:&lt;/span&gt;   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   6:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Name   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   7:&lt;/span&gt;     {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   8:&lt;/span&gt;         get { &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #006080&quot;&gt;&quot;Rule Instance 1&quot;&lt;/span&gt;; }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   9:&lt;/span&gt;     }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  10:&lt;/span&gt;   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  11:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Version   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  12:&lt;/span&gt;     {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  13:&lt;/span&gt;         get { &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #006080&quot;&gt;&quot;1.0.0.0&quot;&lt;/span&gt;; }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  14:&lt;/span&gt;     }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  15:&lt;/span&gt;   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  16:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Description   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  17:&lt;/span&gt;     {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  18:&lt;/span&gt;         get { &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #006080&quot;&gt;&quot;Some Rule Instance&quot;&lt;/span&gt;; }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  19:&lt;/span&gt;     }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  20:&lt;/span&gt; }   &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;With that only a few lines of code is required to load the plug-in into your extensible application.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   1:&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; Init()   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   2:&lt;/span&gt; {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   3:&lt;/span&gt;     var catalog = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; AggregateCatalog();   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   4:&lt;/span&gt;     var container = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; CompositionContainer( catalog );   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   5:&lt;/span&gt;     var batch = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; CompositionBatch();   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   6:&lt;/span&gt;     batch.AddPart( &lt;span style=&quot;color: #0000ff&quot;&gt;this&lt;/span&gt; );   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   7:&lt;/span&gt;     &lt;span style=&quot;color: #008000&quot;&gt;// because all our types are in the same assembly we simply use the current one.       &lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   8:&lt;/span&gt;     catalog.Catalogs.Add( &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; AssemblyCatalog( Assembly.GetExecutingAssembly() ) );   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;   9:&lt;/span&gt;     container.Compose( batch );   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  10:&lt;/span&gt;     &lt;span style=&quot;color: #0000ff&quot;&gt;foreach&lt;/span&gt; ( var rule &lt;span style=&quot;color: #0000ff&quot;&gt;in&lt;/span&gt; _rules )   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  11:&lt;/span&gt;     {   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  12:&lt;/span&gt;         Debug.WriteLine( rule.Name );   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  13:&lt;/span&gt;     }   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #606060&quot;&gt;  14:&lt;/span&gt; }  &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;While this simple example is great for exploring MEF and building plug-in that live in the same assembly, in the real world scenario your plugins will be built as part of a different solution or a project, do check out some of the resources below that demonstrate in detail how to leverage MEF in your applications.&lt;br&gt;&lt;strong&gt;&lt;br&gt;Resources:&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://mef.codeplex.com&quot; target=&quot;_blank&quot;&gt;MEF on CodePlex&lt;/a&gt; – contains assemblies, source code and sample applications, do checkout the Silverlight grid sample.&lt;/p&gt;&lt;br&gt;&lt;br /&gt;&lt;p&gt;The &lt;a href=&quot;http://www.microsoftpdc.com/&quot; target=&quot;_blank&quot;&gt;PDC09&lt;/a&gt; demo&lt;br&gt;&lt;a href=&quot;http://twurl.nl/3cj8dp&quot;&gt;http://twurl.nl/3cj8dp&lt;/a&gt; &lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://www.hanselminutes.com&quot; target=&quot;_blank&quot;&gt;Hanselminutes&lt;/a&gt; podcast on MEF (with &lt;a href=&quot;http://www.google.com/url?q=http://blogs.msdn.com/gblock/&amp;amp;ei=168SS6r0KIro7AO99uTYBQ&amp;amp;sa=X&amp;amp;oi=spellmeleon_result&amp;amp;resnum=1&amp;amp;ct=result&amp;amp;ved=0CAcQhgIwAA&amp;amp;usg=AFQjCNGBwnoGIQnqnkPPHUgRwladqvN6wA&quot;&gt;Glenn Block&lt;/a&gt;, the PM)&lt;br&gt;&lt;a href=&quot;http://twurl.nl/v6zoio&quot;&gt;http://twurl.nl/v6zoio&lt;/a&gt; &lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://weblogs.asp.net/scottgu&quot;&gt;ScottGu&lt;/a&gt;’s awesome demo from PDC08 showing how MEF is used in the new VS2010 IDE to make it extensible, a must see.&lt;br&gt;&lt;a href=&quot;http://blogs.msdn.com/brada/archive/2008/11/07/managed-extensibility-framework-mef-demo.aspx&quot;&gt;http://blogs.msdn.com/brada...&lt;/a&gt; &lt;br&gt;&lt;br /&gt;&lt;p&gt;The code sample shown above is taken from here, uses the &lt;a href=&quot;http://mef.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=34838&quot;&gt;Preview 8&lt;/a&gt; drop of MEF on &lt;a href=&quot;http://www.codeplex.com&quot;&gt;Codeplex&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://devlicio.us/blogs/derik_whittaker/archive/2009/10/27/simple-kick-start-example-using-mef-preview-8.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+Devlicious+%28Devlicio.us%29&quot;&gt;http://devlicio.us/blogs/derik_whittaker/archive..&lt;/a&gt; &lt;br&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dd460648(VS.100).aspx&quot;&gt;MEF on MSDN&lt;/a&gt; – covers MEF in detail including the scenario to load multiple plugins and other details.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/11/getting-started-with-managed.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-7280410172267435051</guid><pubDate>Sat, 21 Nov 2009 09:57:00 +0000</pubDate><atom:updated>2009-12-03T09:25:11.966+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET 4.0</category><category domain="http://www.blogger.com/atom/ns#">TechiesUAE</category><category domain="http://www.blogger.com/atom/ns#">VS 2010</category><title>“Application Lifecycle Management in VS2010” session of  TechiesUAE</title><description>&lt;p&gt;I attended this session of TechiesUAE presented by &lt;a href=&quot;http://cid-d648a94eedb35657.profile.live.com/&quot; target=&quot;_blank&quot;&gt;Rolf Eleveld&lt;/a&gt;. First he took us through the installation and configuration steps required to run Team Foundation Server 2010 and Visual Studio 2010 beta 2. &lt;p&gt;Rolf then showed some of the new features in TFS 2010 version control and its integration with VS2010 including the web interface of TFS. &lt;p&gt;Also during the session, one of the interesting tool that he showed us is the new &lt;a href=&quot;http://technet.microsoft.com/en-us/windows/dd320286.aspx&quot; target=&quot;_blank&quot;&gt;Problem Steps Recorder&lt;/a&gt; (or PSR) that ships with Windows 7. &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSk6c0IeLwgBR1ChP6-91QoqhPIsMcSUXW7yDpsDqJnaPpwVFQ3Yq060vpPwpRDrl9gHYqbdBzMFO3b2hpsgeeTATUfOIHIp-A83FE6ADfj-q6xT27g9pTZ-7HAeCOEvccv_C_aA/s1600-h/psr%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px&quot; title=&quot;psr&quot; border=&quot;0&quot; alt=&quot;psr&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEz5yPDvOWB9aCXKZcmtwMMbjBYXE9P1wT38WTVXkI0hbLHscpkGxqNMi1BWSDe4jTE7jJ1XqVwnuYo2aFG6GFziVv5U8VgrzJvgumcA9XgtiHs2aaMZasbG75I3O1Oxms6SHwEQ/?imgmax=800&quot; width=&quot;446&quot; height=&quot;73&quot; /&gt;&lt;/a&gt; &lt;p&gt;This tool can help developers and IT Pros know the steps required to reproduce any problem to resolve it more quickly. For more info on it watch &lt;a href=&quot;http://technet.microsoft.com/en-us/windows/dd320286.aspx&quot; target=&quot;_blank&quot;&gt;this video&lt;/a&gt; &lt;p&gt;During the session we also discussed the use of Entity Framework &amp;amp; Linq to Entities in the enterprise and also saw the demo of the interesting new &lt;strong&gt;Lab management &lt;/strong&gt;capabilities introduced in VSTS 2010. This helps testers test the software in a virtual environment and raise any bugs, the developers can then launch the virtual machine from the IDE and find all the rich information along with the check point link included in the bug, for more info on this read &lt;a href=&quot;http://blogs.msdn.com/somasegar/archive/2008/12/12/lab-management-in-vsts-2010.aspx&quot; target=&quot;_blank&quot;&gt;this post&lt;/a&gt; on &lt;strong&gt;Soma&lt;/strong&gt;’s blog. &lt;p&gt;The session lasted more than 3 hours.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color:#003300;&quot;&gt;Update. Dec 3,2009&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Read Rolf&#39;s detailed notes from the event on the &lt;a href=&quot;http://techiesleaders.spaces.live.com/blog/cns!50531D3D6442376A!180.entry?sa=230798318&quot;&gt;TechiesLeaders blog&lt;/a&gt;&lt;/p&gt;</description><link>http://zubairdotnet.blogspot.com/2009/11/application-lifecycle-management-in.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEz5yPDvOWB9aCXKZcmtwMMbjBYXE9P1wT38WTVXkI0hbLHscpkGxqNMi1BWSDe4jTE7jJ1XqVwnuYo2aFG6GFziVv5U8VgrzJvgumcA9XgtiHs2aaMZasbG75I3O1Oxms6SHwEQ/s72-c?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-6884505359692315017</guid><pubDate>Tue, 20 Oct 2009 18:15:00 +0000</pubDate><atom:updated>2010-02-05T23:59:47.909+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">BlackBerry</category><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">Music</category><title>Creating BlackBerry Playlist in C#</title><description>&lt;p&gt;I dont have the Media Sync plugin for the Blackberry installed on my laptop yet so I wrote up few lines to create the playlist quickly.&lt;br&gt;&lt;br&gt;Copy all your music to your blackberry and run the following script in a ASP.NET application.&lt;br&gt;&lt;/p&gt; &lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 108.31%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 220px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt; &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; Page_Load(&lt;span style=&quot;color: #0000ff&quot;&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;{        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    StringBuilder sb = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; StringBuilder();        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;foreach&lt;/span&gt; (FileInfo file &lt;span style=&quot;color: #0000ff&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; DirectoryInfo(&lt;span style=&quot;color: #006080&quot;&gt;&quot;YourDriveLetter:\\BlackBerry\\music\\Media Sync\\&amp;lt;Your music folder path&amp;gt;&quot;&lt;/span&gt;).GetFiles())        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    {            &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        sb.Append(&lt;span style=&quot;color: #006080&quot;&gt;&quot;file:///SDCard/BlackBerry/music/Media%20Sync/&amp;lt;Your music folder path&amp;gt;/&quot;&lt;/span&gt;+ HttpUtility.HtmlEncode(file.Name));&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;        sb.Append(&lt;span style=&quot;color: #006080&quot;&gt;&quot;&amp;lt;br/&amp;gt;&quot;&lt;/span&gt;);        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    }        &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    Response.Write(sb.ToString());    &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br&gt;There you have it.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/10/creating-blackberry-playlist-in-c.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-3488060661888390209</guid><pubDate>Sun, 18 Oct 2009 18:34:00 +0000</pubDate><atom:updated>2010-02-06T00:05:52.150+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Cache</category><category domain="http://www.blogger.com/atom/ns#">Sitefinity</category><category domain="http://www.blogger.com/atom/ns#">Web.Config</category><title>Sitefinity CMS and &amp;quot;There were errors during services initialization, check the error log for details&amp;quot; error</title><description>&lt;p&gt;&lt;br&gt;I use &lt;a href=&quot;http://www.sitefinity.com/&quot;&gt;Sitefinity&lt;/a&gt; and have been getting this error on some websites including &lt;a href=&quot;http://www.zubairahmed.net/&quot;&gt;zubairahmed.net&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;This error is so weird that it appeared randomly and vanished on subsequent page load. Recently I found something that I believe was causing this error. &lt;br&gt;&lt;/p&gt; &lt;p&gt;It appears that this error is linked to the available memory on the server hosting your website, so as soon as the server reaches its limit it flushes the cache and the web application throws the error, to work around that Sitefinity has put a web.config setting to cache the web pages in Database, surprisingly Sitefinity did not &lt;a href=&quot;http://www.sitefinity.com/support/forums/sitefinity-3-x/bugs-issues/errors-during-services-initialization.aspx&quot;&gt;tell&lt;/a&gt; anyone about this &lt;em&gt;hidden&lt;/em&gt; feature until I googled it (not that I didn&#39;t do it before) and found it &lt;a href=&quot;http://www.sitefinity.com/support/forums/sitefinity-3-x/deployment/curious-about-caching.aspx&quot;&gt;here&lt;/a&gt;.&lt;br&gt;&lt;br&gt;So all it required was changing this in web.config &lt;/p&gt; &lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.49%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 25px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt; &lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; height: 17px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;lt;cachedependency mode=&lt;span style=&quot;color: #006080&quot;&gt;&quot;InMemory&quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;to&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.49%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; height: 39px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px&quot; id=&quot;codeSnippetWrapper&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot; id=&quot;codeSnippet&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;lt;cachedependency mode=&lt;span style=&quot;color: #006080&quot;&gt;&quot;InDatabase&quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;and so far no issues, hope it helps someone out there.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/10/sitefinity-cms-and-there-were-errors.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-5986003418871794633</guid><pubDate>Sun, 09 Aug 2009 08:13:00 +0000</pubDate><atom:updated>2009-08-09T17:47:21.826+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">C#</category><category domain="http://www.blogger.com/atom/ns#">REST</category><category domain="http://www.blogger.com/atom/ns#">WCF</category><category domain="http://www.blogger.com/atom/ns#">WCF Service</category><title>WCF Service Contract and XML Serialization</title><description>&lt;p&gt;I am building a Service using the &lt;a href=&quot;http://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24644&quot; target=&quot;_blank&quot;&gt;WCF REST Starter Kit&lt;/a&gt;. This Service contains a method that accepts a complex type as input, it then deserializes the object into it’s concrete type.&lt;/p&gt; &lt;p&gt;Here’s how a service call looks like&lt;/p&gt; &lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;using&lt;/span&gt; (HttpClient client = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; HttpClient())&lt;br /&gt;{&lt;br /&gt;    RequestObject req = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; RequestObject { FirstName = &lt;span style=&quot;color: #006080&quot;&gt;&quot;John&quot;&lt;/span&gt;, LastName = &lt;span style=&quot;color: #006080&quot;&gt;&quot;Doe&quot;&lt;/span&gt;, Email=&lt;span style=&quot;color: #006080&quot;&gt;&quot;johndoe@somecompany.com&quot;&lt;/span&gt;};&lt;br /&gt;&lt;br /&gt;    HttpContent body = HttpContentExtensions.CreateXmlSerializable&amp;lt;RequestObject&amp;gt;(req);&lt;br /&gt;&lt;br /&gt;    HttpResponseMessage resp = client.Post(&lt;span style=&quot;color: #006080&quot;&gt;&quot;http://localhost:1575/Web/Service.svc/SendMail&quot;&lt;/span&gt;, body);&lt;br /&gt;&lt;br /&gt;    Response.Write(resp.Content.ReadAsString());&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;What the above does is simply prepare a RequestObject, call a SendMail method on the service using the HttpClient, read and print the response, nothing fancy.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Here’s how the service looks like&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;[WebHelp(Comment = &lt;span style=&quot;color: #006080&quot;&gt;&quot;Sample description for SendMail&quot;&lt;/span&gt;)]&lt;br /&gt;[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, RequestFormat =&lt;br /&gt;WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml,UriTemplate = &lt;span style=&quot;color: #006080&quot;&gt;&quot;SendMail&quot;&lt;/span&gt;)]&lt;br /&gt;[OperationContract]&lt;br /&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; RequestObject SendMail(RequestObject request)&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; RequestObject()&lt;br /&gt;    {&lt;br /&gt;        FirstName = request.FirstName, LastName = request.LastName,Email = request.Email&lt;br /&gt;    }; &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Notice what I’m doing is preparing the same RequestObject and simply pass it as the response.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;As you’d expect I’m suppose to get the following response in the browser.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;- &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;RequestObject&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;FirstName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;John&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;FirstName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;LastName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;Doe&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;LastName&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;  &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;Email&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;johndoe@somecompany.com&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;Email&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;RequestObject&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;But the response I receive is similar to this&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;RequestObject&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;FirstName&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;i:nil&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;true&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;LastNameName&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;i:nil&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;true&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;Email&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;johndoe@somecompany.com&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;Email&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;RequestObject&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;After a few hours of trying it occurred to me that XML Serialization is done in the alphabetical order if no &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms729813.aspx&quot; target=&quot;_blank&quot;&gt;ordering is specified&lt;/a&gt; even if the properties in the class are not in the alpha-order. (arrgh. If only I had used the &lt;a href=&quot;http://blogs.msdn.com/endpoint/archive/2009/03/16/paste-xml-as-types-in-rest-starter-kit.aspx&quot; target=&quot;_blank&quot;&gt;Paste XML as Type&lt;/a&gt; as demo’ed in &lt;a href=&quot;http://www.pluralsight.com/main/screencasts/screencast.aspx?id=httpclient-getting-started&quot; target=&quot;_blank&quot;&gt;this screencast&lt;/a&gt; by &lt;a href=&quot;http://www.pluralsight.com/main/instructor.aspx?name=aaron-skonnard&quot; target=&quot;_blank&quot;&gt;Aaron Skonnard&lt;/a&gt;)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;So to make it work I had to change the RequestObject class in both places to look like the following.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;class&lt;/span&gt; RequestObject&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; Email { get; set; }&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; FirstName { get; set; }&lt;br /&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; LastName { get; set; }&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/08/wcf-service-contract-and-xml.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-5422473582226997111</guid><pubDate>Tue, 04 Aug 2009 07:51:00 +0000</pubDate><atom:updated>2009-08-04T14:31:40.855+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Service Reference</category><category domain="http://www.blogger.com/atom/ns#">VS2008</category><category domain="http://www.blogger.com/atom/ns#">WCF</category><category domain="http://www.blogger.com/atom/ns#">WCF Service</category><title>Adding Service References and ‘The system cannot find the path specified’ error</title><description>&lt;p&gt;I was facing this problem recently in a project when adding a reference to a WCF Service simply gave me this error.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSDOnGMLhqljcKutyBJaH9jNjyDsmt8BFoyxJuDPlyHFVqR7NCNRG_BdNoheuY0j6bkSP8WFAxkhCgaNw5bv0Wum8hQUHJjdHZXSlmGwZnkoFKtgAKG6_XEseI0gywM6mMalq1-g/s1600-h/wcferror%5B3%5D.jpg&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;wcferror&quot; border=&quot;0&quot; alt=&quot;wcferror&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzekEqOCYmD68Y46holBN0PA0rnGLNsr-fUtTYjAu0VQZ7wzD3VTk6g_gpl58UhcvFbDqg1na8p5kiWHC3h2mbjmE4JC358_1oe8gN-2No5nDNARGrAAFoU7Alq77PGLqoKI8NA/?imgmax=800&quot; width=&quot;285&quot; height=&quot;123&quot;&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I google’d it for a while but in vain, I also removed the auto-gen service entries from the web.config but that did not work either.&lt;/p&gt; &lt;p&gt;Then I realized that earlier I had deleted the &lt;u&gt;Service References&lt;/u&gt; folder from the application root, re-add and it worked as expected.&lt;/p&gt; &lt;p&gt;Funny thing is that Visual Studio will not tell you what went wrong, neither folder name appears under Add &amp;gt; ASP.NET Folders nor Visual Studio attempts to recreate it.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/08/adding-service-references-and-system.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXzekEqOCYmD68Y46holBN0PA0rnGLNsr-fUtTYjAu0VQZ7wzD3VTk6g_gpl58UhcvFbDqg1na8p5kiWHC3h2mbjmE4JC358_1oe8gN-2No5nDNARGrAAFoU7Alq77PGLqoKI8NA/s72-c?imgmax=800" height="72" width="72"/><thr:total>3</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-1712277655852863783</guid><pubDate>Thu, 30 Jul 2009 07:16:00 +0000</pubDate><atom:updated>2009-08-15T17:22:01.004+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ELMAH</category><category domain="http://www.blogger.com/atom/ns#">Exceptions</category><title>Using a static class for logging exceptions using ELMAH</title><description>&lt;p&gt;If you have used &lt;a href=&quot;http://code.google.com/p/elmah&quot; target=&quot;_blank&quot;&gt;Elmah&lt;/a&gt; for logging exceptions in your Visual Studio projects, you must have used the following syntax in the try..catch blocks&lt;/p&gt; &lt;div   style=&quot;border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; max-height: 200px; cursor: text;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;&quot;&gt;&lt;pre    style=&quot;border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;color:black;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;  ....&lt;br /&gt;}&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;catch&lt;/span&gt;(Exception ex)&lt;br /&gt;{&lt;br /&gt;   ErrorSignal.FromCurrentContext().Raise(ex);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Or if you want to log a custom message you do something like&lt;/p&gt;&lt;br /&gt;&lt;div   style=&quot;border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; max-height: 200px; cursor: text;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;&quot;&gt;&lt;pre    style=&quot;border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;color:black;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;}&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;catch&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;   ErrorSignal.FromCurrentContext().Raise(&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;new&lt;/span&gt; Elmah.ApplicationException(Message));&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Or also include the exception object with the message like this&lt;/p&gt;&lt;br /&gt;&lt;div   style=&quot;border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; max-height: 200px; cursor: text;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;&quot;&gt;&lt;pre    style=&quot;border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;color:black;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;....&lt;br /&gt;}&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;catch&lt;/span&gt;(Exception ex)&lt;br /&gt;{&lt;br /&gt;   ErrorSignal.FromCurrentContext().Raise(&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;new&lt;/span&gt; Elmah.ApplicationException(Message,ex));&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;As you can see this is a lot of text to be put in each try..catch block, so to make it look a little bit nice I made a static class that looks like this &lt;/p&gt;&lt;br /&gt;&lt;div   style=&quot;border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; max-height: 200px; cursor: text;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;&quot;&gt;&lt;pre    style=&quot;border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;color:black;&quot;&gt;&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// This class logs exception in ELMAH&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;class&lt;/span&gt; Error&lt;br /&gt;   {&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// Logs the exception in ELMAH with a custom message&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;param name=&quot;Message&quot;&amp;gt;Custom message&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;param name=&quot;ex&quot;&amp;gt;Exception object&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;void&lt;/span&gt; Log(&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;string&lt;/span&gt; Message, Exception ex)&lt;br /&gt;       {&lt;br /&gt;           ErrorSignal.FromCurrentContext().Raise(&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;new&lt;/span&gt; Elmah.ApplicationException(Message,ex));&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// Logs the message in ELMAH&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;param name=&quot;Message&quot;&amp;gt;Custom message&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;void&lt;/span&gt; Log(&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;string&lt;/span&gt; Message)&lt;br /&gt;       {&lt;br /&gt;           ErrorSignal.FromCurrentContext().Raise(&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;new&lt;/span&gt; Elmah.ApplicationException(Message));&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// Logs the exception in ELMAH&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;/// &amp;lt;param name=&quot;ex&quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;br /&gt;       &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;static&lt;/span&gt; &lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;void&lt;/span&gt; Log(Exception ex)&lt;br /&gt;       {&lt;br /&gt;           ErrorSignal.FromCurrentContext().Raise(ex);&lt;br /&gt;       }&lt;br /&gt;   }&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Now the try..catch block looks like this&lt;/p&gt;&lt;br /&gt;&lt;div   style=&quot;border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: rgb(244, 244, 244); width: 97.5%; max-height: 200px; cursor: text;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;&quot;&gt;&lt;pre    style=&quot;border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: rgb(244, 244, 244); width: 100%;font-family:consolas,&#39;Courier New&#39;,courier,monospace;font-size:8pt;color:black;&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;try&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;.....&lt;br /&gt;}&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;{&lt;br /&gt; Error.Log(&lt;span style=&quot;color: rgb(0, 96, 128);&quot;&gt;&quot;this is a custom error&quot;&lt;/span&gt;,ex);&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Take it away &lt;a title=&quot;Error.cs&quot; href=&quot;http://www.filefactory.com/file/ahg4a1c/n/Error_cs&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</description><link>http://zubairdotnet.blogspot.com/2009/07/using-static-class-for-logging.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-2492929535774650756</guid><pubDate>Wed, 27 May 2009 02:06:00 +0000</pubDate><atom:updated>2009-05-27T09:52:56.746+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Architecture</category><category domain="http://www.blogger.com/atom/ns#">Domain Driven Design</category><title>Domain Driven Design – Quickly</title><description>&lt;p&gt;Lately I’ve been wanting to read &lt;a href=&quot;http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215&quot; target=&quot;_blank&quot;&gt;Domain Driven Design&lt;/a&gt; book by &lt;a href=&quot;http://domaindrivendesign.org/about#eric&quot; target=&quot;_blank&quot;&gt;Eric Evans&lt;/a&gt; but then I found &lt;a href=&quot;http://dddstepbystep.com/Default.aspx&quot; target=&quot;_blank&quot;&gt;Domain Driven Design Step by Step&lt;/a&gt; by &lt;a href=&quot;http://www.infoq.com&quot; target=&quot;_blank&quot;&gt;InfoQ&lt;/a&gt; and just in the foreword it says that I must read &lt;a href=&quot;http://www.infoq.com/news/2006/12/domain-driven-design&quot; target=&quot;_blank&quot;&gt;DDDQuickly&lt;/a&gt; also by InfoQ before proceeding, so I downloaded it (&lt;a href=&quot;http://www.evansvillednug.com/LinkClick.aspx?fileticket=4LwCx2tkyBA%3D&amp;amp;tabid=76&amp;amp;mid=399&quot; target=&quot;_blank&quot;&gt;PDF&lt;/a&gt;)and started reading a few chapters.&lt;/p&gt; &lt;p&gt;I have now stopped reading the book mainly because it got to the point where I thought I needed to see a concrete example of it’s implementation in C#/.NET which I couldn’t find and also because I have found another &lt;a href=&quot;http://www.amazon.com/Microsoft%C2%AE-NET-Architecting-Applications-PRO-Developer/dp/073562609X&quot; target=&quot;_blank&quot;&gt;great read&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Below are some of the notes that I think are the key takeaways from the read so far, I’m sharing them here thinking they might be useful to someone with a disclaimer that they are &lt;em&gt;my notes &lt;/em&gt;and I make no warranties for the accuracy, if you are serious about DDD than start reading the book.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Domain&lt;/strong&gt; - knowledge of the the domain is important before building software, e.g. for banking. Bankers know better about the rules that anyone else.  &lt;p&gt;&lt;strong&gt;Model &lt;/strong&gt;- Is the internal representation of the domain, we must communicate this upfront to all the stakeholders in a software design, the domain experts, domain analysts and off course developers.  &lt;p&gt;&lt;strong&gt;Ubiquitous Language &lt;/strong&gt;- when domain experts and developers talk they often use some keywords use to describe the system, these keywords make up the domain that is used in UML diagram and Documents explaining those diagrams and ultimately in Classes and Variable names in the code.  &lt;p&gt;&lt;strong&gt;Analysis model&lt;/strong&gt; - a model created by domain experts while not taking into account the software used to code therefore make matter worst at software design time, where developers have to make few decisions on their own. The idea is to choose a model that can be appropriately represented in software.  &lt;p&gt;The key is to involve developers at Domain Model design stage with Domain experts and analysts to let them get the first-hand knowledge of the domain rather than having to understand it with the help of diagrams and documents.  &lt;p&gt;&lt;strong&gt;Entities &lt;/strong&gt;- entities should be unique and defined with a ID, not everything should be Entity but it can be Value Object  &lt;p&gt;&lt;strong&gt;Value Object&lt;/strong&gt; - are unchangeable objects with no unique IDs and created using Constructor, their values cannot be and must not be changed, if new value is needed, simply create another Value object.   </description><link>http://zubairdotnet.blogspot.com/2009/05/domain-driven-design-quickly.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-5098067332994787482</guid><pubDate>Thu, 14 May 2009 12:55:00 +0000</pubDate><atom:updated>2009-05-14T17:10:33.005+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.NET 4.0</category><category domain="http://www.blogger.com/atom/ns#">UI Testing</category><category domain="http://www.blogger.com/atom/ns#">VS 2010</category><title>VS 2010 Beta 1 and Functional UI Testing</title><description>&lt;p&gt;I just watched a video over at Channel9 which explains how to leverage some of the &lt;a href=&quot;http://channel9.msdn.com/shows/10-4/10-4-Episode-18-Functional-UI-Testing/&quot; target=&quot;_blank&quot;&gt;UI Testing&lt;/a&gt; capabilities that are going to be introduced with VS 2010 beta 1 &lt;a href=&quot;http://tinyurl.com/rco494&quot; target=&quot;_blank&quot;&gt;expected next week&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Visual Studio had testing capabilities for C# code for a long but now I’m glad to see for the first time an integrated UI testing built right into VS 2010 IDE. In particular I like the option to store the tests in the database and be able to run them automatically. &lt;/p&gt; &lt;p&gt;See it for yourself, there is also a &lt;a href=&quot;http://www.visitmix.com&quot; target=&quot;_blank&quot;&gt;Mix09&lt;/a&gt; video &lt;a href=&quot;http://videos.visitmix.com/MIX09/T83M&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/05/vs-2010-beta-1-and-functional-ui.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-8170796482923132110</guid><pubDate>Wed, 15 Apr 2009 11:38:00 +0000</pubDate><atom:updated>2009-04-15T15:47:27.845+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">jquery</category><category domain="http://www.blogger.com/atom/ns#">WCF Service</category><title>Return JSON objects the right way</title><description>&lt;p&gt;Today I experienced a weird behavior when I was passing &lt;a href=&quot;http://www.json.org/&quot; target=&quot;_blank&quot;&gt;JSON&lt;/a&gt; string back to a jQuery call using an Ajax-enabled WCF Service.&lt;/p&gt; &lt;p&gt;My code looked something like this.&lt;/p&gt; &lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt; &lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = &lt;span style=&quot;color: #006080&quot;&gt;&quot;/GetJson&quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; GetJson()&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;{&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; JavaScriptSerializer().Serialize(MyCustomObject)&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt; The problem with above code is that the string returned is escaped and enclosed with inverted commas that for some reason was not handled properly using jQuery that looked like this.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;“[{\&quot;Id\&quot;:1,\&quot;SomeKey\&quot;:\&quot;SomeMoreText\&quot;}]”&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not sure what I was missing and while there is a &lt;a href=&quot;http://nayyeri.net/blog/using-jsonresult-in-asp-net-mvc-ajax/&quot; target=&quot;_blank&quot;&gt;JsonResult&lt;/a&gt; action in &lt;a href=&quot;http://www.asp.net/mvc/&quot; target=&quot;_blank&quot;&gt;ASP.NET MVC&lt;/a&gt; with a .svc there’s nothing that I could use (or may be there is). &lt;/p&gt;&lt;br /&gt;&lt;p&gt;To fix it I changed the method like this. &lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = &lt;span style=&quot;color: #006080&quot;&gt;&quot;/GetJson&quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; System.IO.Stream GetJson()&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;{&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;   &lt;span style=&quot;color: #0000ff&quot;&gt;byte&lt;/span&gt;[] resultBytes = System.Text.Encoding.UTF8.GetBytes(&lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; JavaScriptSerializer().Serialize(MyCustomObject));&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;   &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;   WebOperationContext.Current.OutgoingResponse.ContentType = &lt;span style=&quot;color: #006080&quot;&gt;&quot;application/json&quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;   &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; MemoryStream(resultBytes); &lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Here’s how Json is returned.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;[{&quot;Id&quot;:1,&quot;SomeKey&quot;:&quot;SomeMoreText&quot;}]&lt;/font&gt;&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/04/return-json-objects-right-way.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-4699199953904783353</guid><pubDate>Sun, 12 Apr 2009 13:58:00 +0000</pubDate><atom:updated>2009-04-12T17:58:41.856+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET AJAX</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><category domain="http://www.blogger.com/atom/ns#">WCF Service</category><title>Don’t use UriTemplate = &amp;quot;/MethodName/Param1/{Param1}/Param2/{JsonObject} for Json input with WCF Service</title><description>&lt;p&gt;When building Ajax-enabled WCF service that expect a Json object as input then the following would not work&lt;/p&gt; &lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt; &lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = &lt;span style=&quot;color: #006080&quot;&gt;&quot;/Methodname/jsonvariable/{jsonvariable}/param2/{param2}&quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; MethodName(&lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; jsonvariable, &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; param2)&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;{&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Where &lt;u&gt;jsonvariable&lt;/u&gt; is a json object passed through jQuery (or ASP.NET Ajax) to a WCF service that looks like this &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;font color=&quot;#0000ff&quot;&gt;[{&quot;Name&quot;:&quot;za&quot;,&quot;Email&quot;:zubairdotnet@hotmail.com}]&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;After spending a while I figured out that the following &lt;u&gt;UriTemplate &lt;/u&gt;should be used instead&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px&quot;&gt;&lt;br /&gt;&lt;div style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;[OperationContract, WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = &lt;span style=&quot;color: #006080&quot;&gt;&quot;/Methodname/?jsonvariable={jsonvariable}&amp;amp;param2={param2}&quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;void&lt;/span&gt; MethodName(&lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; jsonvariable, &lt;span style=&quot;color: #0000ff&quot;&gt;string&lt;/span&gt; param2)&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;{&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px&quot;&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;  </description><link>http://zubairdotnet.blogspot.com/2009/04/dont-use-uritemplate-for-json-input_12.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-1357400101072008348</guid><pubDate>Thu, 11 Dec 2008 09:38:00 +0000</pubDate><atom:updated>2008-12-11T13:42:48.547+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ADO.NET</category><category domain="http://www.blogger.com/atom/ns#">DataTable</category><category domain="http://www.blogger.com/atom/ns#">Extension methods</category><title>DataTable.SelectRows(n)</title><description>&lt;p&gt;Doing a DataTable.Select() in ADO.NET is like using a Where clause in T-SQL, but you&#39;d have noticed that Data table lacks a way to retrieve only specific number of rows. Well this can be easy to work around using a Top N clause in T-SQL but can be tricky in case when the data is read from different sources like XML files, Web Services etc.&lt;/p&gt; &lt;p&gt;Steven Smith shows a little &lt;a href=&quot;http://aspadvice.com/blogs/ssmith/archive/2007/10/30/Limit-Rows-In-DataTable-or-DataSet.aspx&quot; target=&quot;_blank&quot;&gt;code-snippet&lt;/a&gt; that can be used to work around this, so I decided to use that.&lt;/p&gt; &lt;p&gt;I went a step ahead and added the method to &lt;a href=&quot;http://zubairdotnet.blogspot.com/2008/11/c-extension-methods-library.html&quot; target=&quot;_blank&quot;&gt;my Extension methods library&lt;/a&gt; as below.&lt;/p&gt; &lt;div style=&quot;border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4&quot;&gt; &lt;div style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;static&lt;/span&gt; DataTable SelectRows(&lt;span style=&quot;color: #0000ff&quot;&gt;this&lt;/span&gt; DataTable dataTable, &lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; rowCount)&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;{&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;    {&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;        DataTable myTable = dataTable.Clone(); &lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;        DataRow[] myRows = dataTable.Select();&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;for&lt;/span&gt; (&lt;span style=&quot;color: #0000ff&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; rowCount; i++)&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;        {&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;            &lt;span style=&quot;color: #0000ff&quot;&gt;if&lt;/span&gt; (i &amp;lt; myRows.Length)&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;            {&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;                myTable.ImportRow(myRows[i]);&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;                myTable.AcceptChanges();&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;            }&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;        }&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; myTable;&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;    }&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;    &lt;span style=&quot;color: #0000ff&quot;&gt;catch&lt;/span&gt; (Exception)&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;    {&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;        &lt;span style=&quot;color: #0000ff&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; DataTable();&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;    }&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;So for example it can be used as follows.&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4&quot;&gt;&lt;br /&gt;&lt;div style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;GridView.DataSource = MyDataTable.SelectRows(5);&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;GridView.DataBind();&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;  </description><link>http://zubairdotnet.blogspot.com/2008/12/datatableselectrowsn.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-2404103692533424643</guid><pubDate>Thu, 27 Nov 2008 05:02:00 +0000</pubDate><atom:updated>2008-11-27T09:02:33.614+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">ASP.NET Charts</category><title>ASP.NET Chart Control</title><description>&lt;p&gt;I just downloaded and installed &lt;a href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;amp;DisplayLang=en&quot; target=&quot;_blank&quot;&gt;ASP.NET Chart Controls&lt;/a&gt; that &lt;a href=&quot;http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx&quot; target=&quot;_blank&quot;&gt;ScottGu just announced&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;I&#39;m looking at the sample documentation and it looks very detailed because one of the problems I had with the Telerik and ComponentOne Chart controls that I have used in the past is the poor documentation, but Microsoft ASP.NET Charts docs seem to go a step further and explain every nitty-gritty of the charts along with C# and VB.NET source code, I&#39;m looking forward to try them soon.&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2008/11/aspnet-chart-control.html</link><author>noreply@blogger.com (Zubair.NET!)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-10318299.post-3524417641175166729</guid><pubDate>Tue, 25 Nov 2008 08:17:00 +0000</pubDate><atom:updated>2008-11-25T13:00:50.600+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">CustomValidator</category><category domain="http://www.blogger.com/atom/ns#">Validation</category><title>Using CustomValidator to compare Time Values</title><description>&lt;p&gt;ASP.NET ships with many client-side validation controls out of the box, one of them is the &lt;a href=&quot;http://quickstarts.asp.net/QuickStartv20/aspnet/doc/validation/default.aspx&quot; target=&quot;_blank&quot;&gt;Custom Validator control&lt;/a&gt;. In client input scenario if you need to compare two date values you can use a CompareValidator and set its Type property to Date, for example check &lt;a href=&quot;http://community.sgdotnet.org/blogs/chuawenching/archive/2006/10/30/ASP.NET-2.0-CompareValidator-_2D00_-Compare-Dates-through-custom-user-controls.aspx&quot; target=&quot;_blank&quot;&gt;this link&lt;/a&gt;. However anytime you need to compare two Time values then there is no support for this in any validation controls.This is how Telerik&#39;s &lt;a href=&quot;http://demos.telerik.com/aspnet/Calendar/Examples/DateTimePicker/Overview/DefaultCS.aspx&quot; target=&quot;_blank&quot;&gt;TimePicker&lt;/a&gt; control looks like.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEMzQhebQ1igM6VKvvtySDItNAx3-xWWgvqKEs5e3Q2uRHeWx_mKBEcPaELC-ZaujNAY0fne4Z-jGWzFrFfkJtDU4IZxPIprQSXp8TI2OuDGDbTLDacrEKrgJCh3G6wrSrpqAGJA/s1600-h/ScreenHunter_02%20Nov.%2025%2012.57%5B3%5D.gif&quot;&gt;&lt;img style=&quot;border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px&quot; height=&quot;252&quot; alt=&quot;ScreenHunter_02 Nov. 25 12.57&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMJWF-r3L16-iARAJPv9E0-1ebkkIvyFF-sNT27rEJQsHQeYUygcf6GfZdrPpGZGLH1FKwQ-4NMyDhNTaVekkYgWoj_4_u5nEvE9vskb3jdEhLSfEUFXSWskEKGluFr0rhWZwCAw/?imgmax=800&quot; width=&quot;268&quot; border=&quot;0&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Fortunately comparing the two values is easy using the CustomValidator control and a little bit of javascript. The CustomValidator control has a &lt;u&gt;ClientValidationFunction&lt;/u&gt; property that we can use to trigger a javascript function and using the following function we can can compare two time values.&lt;/p&gt; &lt;div class=&quot;csharpcode-wrapper&quot;&gt; &lt;div style=&quot;border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4&quot;&gt; &lt;div style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;&amp;lt;script type=&lt;span style=&quot;color: #006080&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;    function compareTime(sender, args) {&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;        var start = document.getElementById(&lt;span style=&quot;color: #006080&quot;&gt;&quot;&amp;lt;%=rdpStarttime.ClientID %&amp;gt;&quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;        var end = document.getElementById(&lt;span style=&quot;color: #006080&quot;&gt;&quot;&amp;lt;%=rdpEndtime.ClientID %&amp;gt;&quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;        var starttime = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; Date(0, 0, 0, start.&lt;span style=&quot;color: #0000ff&quot;&gt;value&lt;/span&gt;.substring(11, 13), start.&lt;span style=&quot;color: #0000ff&quot;&gt;value&lt;/span&gt;.substring(14, 16));&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;        var endtime = &lt;span style=&quot;color: #0000ff&quot;&gt;new&lt;/span&gt; Date(0, 0, 0, end.&lt;span style=&quot;color: #0000ff&quot;&gt;value&lt;/span&gt;.substring(11, 13), end.&lt;span style=&quot;color: #0000ff&quot;&gt;value&lt;/span&gt;.substring(14, 16));&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;        args.IsValid = (endtime &amp;gt;= starttime);&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;    }&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4&quot;&gt;&lt;br /&gt;&lt;div style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none&quot;&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;asp:CustomValidator&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ID&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;CustomValidator1&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;runat&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;server&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ErrorMessage&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;End time should be greater than Start&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ClientValidationFunction&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;compareTime&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000&quot;&gt;ControlToValidate&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;=&quot;rdpEndtime&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000&quot;&gt;asp:CustomValidator&lt;/span&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class=&quot;csharpcode&quot;&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Here&#39;s how it looks like.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqzzKQdlmwArPNivYNkfa57gTglr87sAyM5BBtME01gQ2jgJpuqC6VVNvHqaBLJWI6UzQxIJ2mPkHNCXlVA9ON4WnLnSLNjwcHBOZemJh5qAF-plB8WiPmT3KDRG9beVEcsByIhA/s1600-h/ScreenHunter_03%20Nov.%2025%2012.16%5B3%5D.gif&quot;&gt;&lt;img style=&quot;border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;68&quot; alt=&quot;ScreenHunter_03 Nov. 25 12.16&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYTUpKgEDHnXpw8sM88EWkoAZXmEeBYBwAwo4tDdTctFPIkZBRBu8rBstwb5XMR6__gQLSPq58dXTaGPTACHRzAaCC2zSIFholWOk4IXsW3M0ToJzrhY4iDsyScVdrd_CVSzoJBg/?imgmax=800&quot; width=&quot;393&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;/p&gt;  </description><link>http://zubairdotnet.blogspot.com/2008/11/using-customvalidator-to-compare-time.html</link><author>noreply@blogger.com (Zubair.NET!)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMJWF-r3L16-iARAJPv9E0-1ebkkIvyFF-sNT27rEJQsHQeYUygcf6GfZdrPpGZGLH1FKwQ-4NMyDhNTaVekkYgWoj_4_u5nEvE9vskb3jdEhLSfEUFXSWskEKGluFr0rhWZwCAw/s72-c?imgmax=800" height="72" width="72"/><thr:total>3</thr:total></item></channel></rss>