<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Vadim&#039;s Weblog</title>
	<atom:link href="http://vkreynin.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://vkreynin.wordpress.com</link>
	<description>Never stop learning.</description>
	<lastBuildDate>Mon, 30 Jan 2012 20:01:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='vkreynin.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Vadim&#039;s Weblog</title>
		<link>http://vkreynin.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://vkreynin.wordpress.com/osd.xml" title="Vadim&#039;s Weblog" />
	<atom:link rel='hub' href='http://vkreynin.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Corrected problem with SystemWrapper in NuGet gallery.</title>
		<link>http://vkreynin.wordpress.com/2011/06/24/corrected-problem-with-systemwrapper-in-nuget-gallery/</link>
		<comments>http://vkreynin.wordpress.com/2011/06/24/corrected-problem-with-systemwrapper-in-nuget-gallery/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 12:49:54 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[SystemWrapper]]></category>
		<category><![CDATA[SystemWrapper NuGet]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2011/06/24/corrected-problem-with-systemwrapper-in-nuget-gallery/</guid>
		<description><![CDATA[Yesterday, I told the world that SystemWrapper is in NuGet gallery.&#160; However, I didn’t realized that I publish the wrong version that does absolutely nothing. I just want to let you know that I re-publish the correct version and everything should work fine.&#160; I originally tested the package on my local machine but I’ve never [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=580&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday, I told the world that <a href="https://vkreynin.wordpress.com/2011/06/23/systemwrapper-is-in-nuget-gallery/" target="_blank">SystemWrapper is in NuGet gallery</a>.&#160; However, I didn’t realized that I publish the wrong version that does absolutely nothing.</p>
<p>I just want to let you know that I re-publish the correct version and everything should work fine.&#160; </p>
<p>I originally tested the package on my local machine but I’ve never tested the published one.&#160; It taught me AGAIN that I should not to assume anything.</p>
<p>I hope you’ll forgive for this embarrassing, rookie mistake.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/580/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/580/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/580/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=580&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2011/06/24/corrected-problem-with-systemwrapper-in-nuget-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>
	</item>
		<item>
		<title>SystemWrapper is in NuGet Gallery.</title>
		<link>http://vkreynin.wordpress.com/2011/06/23/systemwrapper-is-in-nuget-gallery/</link>
		<comments>http://vkreynin.wordpress.com/2011/06/23/systemwrapper-is-in-nuget-gallery/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 12:52:28 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[SystemWrapper]]></category>
		<category><![CDATA[SystemWrapper NuGet]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2011/06/23/systemwrapper-is-in-nuget-gallery/</guid>
		<description><![CDATA[In this short post I just want to let you know that SystemWrapper is in NuGet Gallery now. I should’ve done it before a request on CodePlex.&#160; But it’s better later than never. Please go to NuGet Gallery and rate SystemWrapper.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=579&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this short post I just want to let you know that <a href="http://systemwrapper.codeplex.com/" target="_blank">SystemWrapper</a> is in <a href="http://nuget.org/List/Packages/SystemWrapper" target="_blank">NuGet Gallery</a> now.</p>
<p>I should’ve done it before <a title="Package for NuGet" href="http://systemwrapper.codeplex.com/discussions/261756" target="_blank">a request on CodePlex</a>.&#160; But it’s better later than never.</p>
<p>Please go to <a href="http://nuget.org/List/Packages/SystemWrapper" target="_blank">NuGet Gallery</a> and rate SystemWrapper.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/579/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=579&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2011/06/23/systemwrapper-is-in-nuget-gallery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>
	</item>
		<item>
		<title>From hobbies to a professional.</title>
		<link>http://vkreynin.wordpress.com/2011/05/12/from-hobbies-to-a-professional/</link>
		<comments>http://vkreynin.wordpress.com/2011/05/12/from-hobbies-to-a-professional/#comments</comments>
		<pubDate>Thu, 12 May 2011 12:02:34 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[hobby]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2011/05/12/from-hobbies-to-a-professional/</guid>
		<description><![CDATA[Most people have hobbies, at least I hope that most people have some other interests beside their primary job.&#160; Some lucky folks can make money doing things they like.&#160; I consider myself a lucky one because if I wasn’t a computer programmer, I would do it in my spare time.&#160; Actually I’m still doing coding [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=578&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Most people have hobbies, at least I hope that most people have some other interests beside their primary job.&#160; Some lucky folks can make money doing things they like.&#160; I consider myself a lucky one because if I wasn’t a computer programmer, I would do it in my spare time.&#160; Actually I’m still doing coding in my spare time working on some personal projects which probably will never make me a penny.&#160; However, besides writing computer code I have other hobbies.&#160; I enjoy photography, road cycling, tennis and some other activities at which I always will be just an amateur.</p>
<p>I always admire people who takes their hobbies to the next level and became professional at what they love to do.&#160; One of mine co-workers tremendously enjoys nature photography.&#160; He is making a next step to see if he is good enough to become a pro.&#160; He created <a href="http://www.justcanvasprints.com/" target="_blank">a site where people can admire and buy his pictures on canvas</a>.&#160; On his site <a href="http://www.justcanvasprints.com/" target="_blank">JustCanvasPrints.com</a> visitors can view beautiful, unique photos from <a href="http://www.justcanvasprints.com/Yosemite-National-Park-s/78.htm" target="_blank">Yosemite National Park</a>, <a href="http://www.justcanvasprints.com/Yellowstone-National-Park-s/86.htm" target="_blank">Yellowstone National Park</a>, <a href="http://www.justcanvasprints.com/Yellowstone-National-Park-s/86.htm" target="_blank">Death Valley National Park</a> and many other beautiful places.&#160; All photos on his website can be printed on canvas and are available either in color o black and white.</p>
<p>What is missing on his website is a space where people could leave a comment for each picture.&#160; As an artist you probably want to see feedback from others.&#160; Well, may be he’ll add it later.&#160; You cannot do everything at once.</p>
<p>Let’s wish him luck and go check out his site.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/578/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/578/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/578/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=578&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2011/05/12/from-hobbies-to-a-professional/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>
	</item>
		<item>
		<title>Gallio v.3.2.2 resolves problem with CS1685 warning.</title>
		<link>http://vkreynin.wordpress.com/2011/01/13/gallio-v-3-2-2-resolves-problem-with-cs1685-warning/</link>
		<comments>http://vkreynin.wordpress.com/2011/01/13/gallio-v-3-2-2-resolves-problem-with-cs1685-warning/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 18:36:00 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[MbUnit]]></category>
		<category><![CDATA[MbUnit Gallio CS1685]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2011/01/13/gallio-v-3-2-2-resolves-problem-with-cs1685-warning/</guid>
		<description><![CDATA[I was very pleased when I saw a Yann Trevin’s post about new version of Gallio and MbUnit.&#160; What made me happy about this release is that the team resolved issue with CS1685 warning.&#160; After I downloaded Gallio v3.2.2 and remove my temporary fix that deals with CS1685 warning, I was able to confirm the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=577&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was very pleased when I saw a <a href="http://www.blogger.com/profile/04758626765333804818" target="_blank">Yann Trevin</a>’s post about <a href="http://interfacingreality.blogspot.com/2011/01/announcing-gallio-and-mbunit-v322.html" target="_blank">new version of Gallio and MbUnit</a>.&#160; What made me happy about this release is that the team resolved issue with <a href="http://code.google.com/p/mb-unit/issues/detail?id=784" target="_blank">CS1685 warning</a>.&#160; After I downloaded Gallio v3.2.2 and remove my <a href="http://stackoverflow.com/questions/205644/error-when-using-extension-methods-in-c" target="_blank">temporary fix that deals with CS1685 warning</a>, I was able to confirm the problem is gone.&#160; If you’re using Gallio / MbUnit, go to <a href="http://gallio.org/Downloads.aspx" target="_blank">Downloads page</a> and get the msi for your system.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/577/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/577/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/577/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=577&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2011/01/13/gallio-v-3-2-2-resolves-problem-with-cs1685-warning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>
	</item>
		<item>
		<title>Detect when another site is unavailable. (404 detection)</title>
		<link>http://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/</link>
		<comments>http://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/#comments</comments>
		<pubDate>Sat, 25 Dec 2010 21:36:43 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[404 "asp.net"]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/</guid>
		<description><![CDATA[A long time ago we used to store our code on punched cards.&#160; Since that time, our development tools improved a lot.&#160; Thanks to more powerful languages and tools, it became easier for us to write code, and as a result, our applications became more and more complex.&#160; In 1986 Fred Brooks predicted exactly that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=574&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A long time ago we used to store our code on <a href="http://en.wikipedia.org/wiki/Punch_cards" target="_blank">punched cards</a>.&#160; Since that time, our development tools improved a lot.&#160; Thanks to more powerful languages and tools, it became easier for us to write code, and as a result, our applications became more and more complex.&#160; In 1986 <a href="http://en.wikipedia.org/wiki/Fred_Brooks" target="_blank">Fred Brooks</a> predicted exactly that in his article <a href="http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html" target="_blank">“No Silver Bullet”</a>.&#160; Today, any modern application uses third party libraries or components.&#160; Our web apps need to integrate with other sites to use their services. But what do you do if the third party site is down?</p>
<p>At first, the problem doesn’t seem that difficult, but then I realized that it’s impossible to detect with JavaScript when another site is unavailable. (Please let me know if I’m wrong.)&#160; If it would be possible to do this with client scripting, it would be huge security hole.&#160; Since the release of <a href="http://en.wikipedia.org/wiki/Netscape_Navigator">Netscape Navigator</a> 2.0 in 1996, browsers prevent access to most methods and properties across pages on different sites.&#160; Today, this policy is known as <a href="http://en.wikipedia.org/wiki/Same_origin_policy">Same Origin Policy</a>.</p>
<p>The solution I came up with is to ping the third party host on the server side before JavaScript is loaded.&#160; If I get a good response, then I proceed with my JavaScript; otherwise, it’s redirected to my error page.</p>
<p>Here’s a sample how you can check if the host available with ASP.NET:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:118f7ce0-9267-488b-acda-4fbfd73539a8" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
protected void Page_Load(object sender, EventArgs e)
{
    HttpWebResponse response;
    try
    {
        var request = 
            (HttpWebRequest)WebRequest.Create(&quot;http://www.someSite.com/camdsa&quot;);
        response = request.GetResponse() as HttpWebResponse;
    }
    catch (WebException webException)
    {
        Response.Redirect(&quot;ErrorPage.aspx?status=&quot; + webException.Status);
        return;
    }
}

</pre>
</pre>
</div>
<p>If <a href="http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.getresponse.aspx" target="_blank">GetResponse</a>() throws a <a href="http://msdn.microsoft.com/en-us/library/system.net.webexception.aspx" target="_blank">WebException</a>, it means that something went wrong with our request.&#160; We can figure out what’s wrong by analyzing the WebException <a title="WebExceptionStatus Enumeration" href="http://msdn.microsoft.com/en-us/library/system.net.webexceptionstatus.aspx" target="_blank">Status</a> and <a href="http://msdn.microsoft.com/en-us/library/system.net.webexception.response.aspx" target="_blank">Response</a> properties.</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/"><img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/574/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/574/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/574/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=574&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>

		<media:content url="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http://vkreynin.wordpress.com/2010/12/25/detect-when-another-site-is-unavailable-404-detection/" medium="image">
			<media:title type="html">kick it on DotNetKicks.com</media:title>
		</media:content>
	</item>
		<item>
		<title>Setting up RavenDB as an IIS application by pictures.</title>
		<link>http://vkreynin.wordpress.com/2010/12/13/setting-up-ravendb-as-an-iis-application-by-pictures/</link>
		<comments>http://vkreynin.wordpress.com/2010/12/13/setting-up-ravendb-as-an-iis-application-by-pictures/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 13:07:09 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[NoSQL RavenDB]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2010/12/13/setting-up-ravendb-as-an-iis-application-by-pictures/</guid>
		<description><![CDATA[I’ve been living all my professional live in relational database world.&#160; Lately NoSQL is making a lot of buzz that I couldn’t ignore it any more and decided to take a closer look.&#160;&#160; The first question I had is which NoSQL database should I play with?&#160; I narrowed my option to three: CouchDB, MongoDB, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=570&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’ve been living all my professional live in relational database world.&#160; Lately NoSQL is making a lot of buzz that I couldn’t ignore it any more and decided to take a closer look.&#160;&#160; The first question I had is which NoSQL database should I play with?&#160; I narrowed my option to three: <a href="http://couchdb.apache.org/" target="_blank">CouchDB</a>, <a href="http://www.mongodb.org/" target="_blank">MongoDB</a>, and <a href="http://ravendb.net/" target="_blank">RavenDB</a>.&#160; Being a .NET developer RavenDB looked like a logical choice. It&#8217;s .NET friendly and has a LINQ provider.</p>
<p>Next step for me was to download and install RavenDB and that what this post is about.</p>
<h2><font color="#408080">1. Download RavenDB.&#160; </font></h2>
<p>You can go to <a href="http://ravendb.net/download" target="_blank">RavenDb’s download page</a> or just click <a href="http://builds.hibernatingrhinos.com/downloadlatest/ravendb" target="_blank">here</a> to grab the latest build.</p>
<h2><font color="#408080">2. Unzip the file.</font></h2>
<p>Use your favorite file archiving utility to unzip the file you just downloaded.&#160; In my case I used <a href="http://www.7-zip.org/" target="_blank">7-Zip</a> to unzip RavenDB-Build-206.zip file.&#160; By the way I decompressed the files intto C:\RavenDB folder.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/7zip.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="7zip" border="0" alt="7zip" src="http://vkreynin.files.wordpress.com/2010/12/7zip_thumb.png?w=585&#038;h=372" width="585" height="372" /></a></p>
<h2><font color="#408080">3. Next let’s fire IIS Manager and create new application pool.</font></h2>
<p>You need to <a href="http://msdn.microsoft.com/en-us/library/bb763170.aspx" target="_blank">open the IIS Manager</a>.&#160; The following instruction are for IIS 7.&#160; If you are using different version than you’re on your own.&#160; </p>
<p>In Connections panel select Application Pools.</p>
<p>Then in Actions panel click on the “Add Application Pool…” link.&#160; If you clicked it correctly, you should see the “Add Application Pool” dialog.&#160; In case you don’t see this dialog than you need to read <a href="http://www.wikihow.com/Use-a-Computer-Mouse" target="_blank">How to Use a Computer Mouse</a>.</p>
<p>You need to name the application pool and you must choose .NET Framework v.4.0 in the “.NET Framework version” drop down box.&#160; Leave everything else the same and press the OK button.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/addapplicationpool.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="AddApplicationPool" border="0" alt="AddApplicationPool" src="http://vkreynin.files.wordpress.com/2010/12/addapplicationpool_thumb.png?w=961&#038;h=483" width="961" height="483" /></a></p>
<p>&#160;</p>
<h2><font color="#408080">4.&#160; Create a new Raven Web Site.</font></h2>
<p>In IIS Manager right lick on the Sites folder and select “Add Web Site…” from the context menu.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/addwebsite.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="AddWebSite" border="0" alt="AddWebSite" src="http://vkreynin.files.wordpress.com/2010/12/addwebsite_thumb.png?w=323&#038;h=234" width="323" height="234" /></a></p>
<p>You should see the “Add Web Site” dialog.&#160; </p>
<p>For Site name type “RavenWeb” or you can pick some other name.</p>
<p>Select RavenApplicationPool for Application pool.&#160; You do that by click on Select button.</p>
<p>Make sure that Physical path is points to “Web” folder in extracted folder.&#160; In my case it’s going to be “C:\RavenDB\Web”.</p>
<p>Leave everything the same except the Port.&#160; I picked 8080 for my port you can type the same number or select different.</p>
<p>Your values should look similar to mine but don’t click the OK button yet.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/addwebsitedlg.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="AddWebSiteDlg" border="0" alt="AddWebSiteDlg" src="http://vkreynin.files.wordpress.com/2010/12/addwebsitedlg_thumb.png?w=464&#038;h=467" width="464" height="467" /></a></p>
<p>Click the “Test Settings…” button and you probably will see that authorization failed.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/authorizationfailed.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="AuthorizationFailed" border="0" alt="AuthorizationFailed" src="http://vkreynin.files.wordpress.com/2010/12/authorizationfailed_thumb.png?w=484&#038;h=345" width="484" height="345" /></a></p>
<p>We must provide the user for our site that has write access to the physical database location.&#160; Close the “Test Connection” dialog and click on “Connect as…” button in the “Add Web Site”. </p>
<p>“Connect As” dialog should appear on your screen.&#160; Select “Specific user” option and click on the “Set…” button to to enter credentials in “Set Credentials” dialog.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/setcredentials.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="SetCredentials" border="0" alt="SetCredentials" src="http://vkreynin.files.wordpress.com/2010/12/setcredentials_thumb.png?w=503&#038;h=480" width="503" height="480" /></a></p>
<p>If you entered. proper credentials, than by pressing on the “Test Settings…” button you should see that Authentication and Authorization are valid and we’re ready for next step.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/authorizationsuccess.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="AuthorizationSuccess" border="0" alt="AuthorizationSuccess" src="http://vkreynin.files.wordpress.com/2010/12/authorizationsuccess_thumb.png?w=491&#038;h=349" width="491" height="349" /></a></p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/websitecreated.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;float:right;padding-top:0;border-width:0;margin:5px;" title="WebSiteCreated" border="0" alt="WebSiteCreated" align="right" src="http://vkreynin.files.wordpress.com/2010/12/websitecreated_thumb.png?w=181&#038;h=67" width="181" height="67" /></a>Press the “Close” button for “Test Connection” and then “OK” button for “Add Web Site” dialog.&#160; You should see that the new Web Site was created.</p>
<p>&#160;</p>
<h2><font color="#408080">5. Done.</font></h2>
<p>We successfully installed and set up Raven DB to run in IIS.&#160; Just navigate to <a title="http://localhost:8080" href="http://localhost:8080">http://localhost:8080</a> url or in IIS Manager make sure the new web site is selected and click on “Browse *:8080 (http)” link in Action section.&#160; Rave DB page should be opened in your favorite browser.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/done.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;margin:5px;" title="Done" border="0" alt="Done" src="http://vkreynin.files.wordpress.com/2010/12/done_thumb.png?w=586&#038;h=498" width="586" height="498" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/570/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/570/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/570/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=570&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2010/12/13/setting-up-ravendb-as-an-iis-application-by-pictures/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/7zip_thumb.png" medium="image">
			<media:title type="html">7zip</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/addapplicationpool_thumb.png" medium="image">
			<media:title type="html">AddApplicationPool</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/addwebsite_thumb.png" medium="image">
			<media:title type="html">AddWebSite</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/addwebsitedlg_thumb.png" medium="image">
			<media:title type="html">AddWebSiteDlg</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/authorizationfailed_thumb.png" medium="image">
			<media:title type="html">AuthorizationFailed</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/setcredentials_thumb.png" medium="image">
			<media:title type="html">SetCredentials</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/authorizationsuccess_thumb.png" medium="image">
			<media:title type="html">AuthorizationSuccess</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/websitecreated_thumb.png" medium="image">
			<media:title type="html">WebSiteCreated</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/done_thumb.png" medium="image">
			<media:title type="html">Done</media:title>
		</media:content>
	</item>
		<item>
		<title>NuGet Upgrade on 12/10/10</title>
		<link>http://vkreynin.wordpress.com/2010/12/10/nuget-upgrade-on-121010/</link>
		<comments>http://vkreynin.wordpress.com/2010/12/10/nuget-upgrade-on-121010/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 19:15:27 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2010/12/10/nuget-upgrade-on-121010/</guid>
		<description><![CDATA[There’s a new upgrade for NuGet.&#160; To update it just go to Tools –&#62; Extension Manager in Visual Studio to lunch Extension Manager dialog. In Updates you’ll see an update for NuGet Package Manager.&#160; It will ask you to restart your VS.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=551&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There’s a new upgrade for <a href="http://nuget.codeplex.com/" target="_blank">NuGet</a>.&#160; To update it just go to Tools –&gt; Extension Manager in Visual Studio to lunch Extension Manager dialog. In Updates you’ll see an update for NuGet Package Manager.&#160; It will ask you to restart your VS.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/551/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/551/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/551/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=551&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2010/12/10/nuget-upgrade-on-121010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>
	</item>
		<item>
		<title>iPad and Russian Keyboard</title>
		<link>http://vkreynin.wordpress.com/2010/12/09/ipad-and-russian-keyboard/</link>
		<comments>http://vkreynin.wordpress.com/2010/12/09/ipad-and-russian-keyboard/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 13:09:58 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA["russian" "phonetic keyboard" "ipad" "apple"]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2010/12/09/ipad-and-russian-keyboard/</guid>
		<description><![CDATA[Last week I got a present, a new shiny iPad.&#160; After downloading and playing with few games, I decided it’s time for me to install a Russian keyboard even I don’t type much in Russian.&#160; Like any Apple’s Mac Book, iPad has an option for Russian Phonetic keyboard.&#160; If you don’t know what’s Russian Phonetic [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=526&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last week I got a present, a new shiny iPad.&#160; After downloading and playing with few games, I decided it’s time for me to install a Russian keyboard even I don’t type much in Russian.&#160; Like any Apple’s Mac Book, iPad has an option for Russian Phonetic keyboard.&#160; If you don’t know what’s Russian Phonetic Keyboard, <a href="http://vkreynin.wordpress.com/2010/01/10/russian-phonetic-keyboard/" target="_blank">read my previous post on the subject</a>. </p>
<p>In order to set up Russian Phonetic Keyboard, I start Settings application.&#160; Then go to General | Keyboard | International Keyboards | Add New Keyboard….&#160; I add Russian – Phonetic.</p>
<p align="center"><a href="http://vkreynin.files.wordpress.com/2010/12/justruskeyboardsetup.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:5px;" title="JustRusKeyboardSetup" border="0" alt="JustRusKeyboardSetup" src="http://vkreynin.files.wordpress.com/2010/12/justruskeyboardsetup_thumb.png?w=435&#038;h=220" width="435" height="220" /></a></p>
<p>When I try to use the keyboard that I just added, I’m unpleasantly surprised.&#160; It’s Russian standard keyboard but I explicitly was adding Phonetic one.</p>
<p align="center"><a href="http://vkreynin.files.wordpress.com/2010/12/justnotphonetic.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:5px;" title="JustNotPhonetic" border="0" alt="JustNotPhonetic" src="http://vkreynin.files.wordpress.com/2010/12/justnotphonetic_thumb.png?w=472&#038;h=174" width="472" height="174" /></a></p>
<p>If I’m doing something wrong, can someone just slap me and let me know what an idiot I am and what I need to do install it correctly.&#160; <strike>Also Apple made a grammatical error when they named the keyboard “Русская” instead of “Русский”.&#160; Like in many other languages, in Russian objects have sex and “keyboard” is male in Russian.&#160; By saying “Русская” it makes the keyboard a female and that sounds way wrong.&#160; You expect this error from people why just started learning Russian.</strike></p>
<p><strong>UPDATE:</strong> Thanks to Sergey who reminded me about Russian translation for word “keyboard” which is “клавиатура”.&#160; Клавиатура has female sex and this case “Русская” would be appropriate.&#160; I’m so accustomed to use word “keyboard” even when I speak Russian.</p>
<p align="center"><a href="http://vkreynin.files.wordpress.com/2010/12/justnotfemail.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;margin:5px;" title="JustNotFemail" border="0" alt="JustNotFemail" src="http://vkreynin.files.wordpress.com/2010/12/justnotfemail_thumb.png?w=480&#038;h=179" width="480" height="179" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/526/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/526/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/526/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=526&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2010/12/09/ipad-and-russian-keyboard/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/justruskeyboardsetup_thumb.png" medium="image">
			<media:title type="html">JustRusKeyboardSetup</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/justnotphonetic_thumb.png" medium="image">
			<media:title type="html">JustNotPhonetic</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/justnotfemail_thumb.png" medium="image">
			<media:title type="html">JustNotFemail</media:title>
		</media:content>
	</item>
		<item>
		<title>Baby steps to create a NuGet Package.</title>
		<link>http://vkreynin.wordpress.com/2010/12/08/baby-steps-to-create-nuget-package/</link>
		<comments>http://vkreynin.wordpress.com/2010/12/08/baby-steps-to-create-nuget-package/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 20:02:53 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[NuGet]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/?p=509</guid>
		<description><![CDATA[You probably heard about NuGet (formally known as NuPack), an open source package management system for the .NET from Microsoft.  Jeff Kwak, who works with me at Ultimate Software, recently wrote a nice post about how to create a NuGet Pakage.  Jeff’s article inspired me to create a package for my own open source project, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=509&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>You probably heard about <a href="http://nuget.codeplex.com/" target="_blank">NuGet</a> (<a href="http://haacked.com/archive/2010/10/21/renaming-nupack.aspx" target="_blank">formally known as NuPack</a>), an open source package management system for the .NET from Microsoft.  <a href="http://www.blogger.com/profile/07550255824949903087" target="_blank">Jeff Kwak</a>, who works with me at <a href="http://www.ultimatesoftware.com/" target="_blank">Ultimate Software</a>, recently wrote a nice post about <a href="http://coffeedrivendev.blogspot.com/2010/12/creating-nuget-package.html" target="_blank">how to create a NuGet Pakage</a>.  Jeff’s article inspired me to create a package for my own open source project, <a href="http://systemwrapper.codeplex.com/" target="_blank">SystemWrapper</a>.   In this post I want to describe step by step how I did it.</p>
<h2>Step 1: Create a NuSpec file.</h2>
<p>NuSpec file is an xml file that contains the metadata for a package.  I’ll try to describe every field of <a href="http://nuget.codeplex.com/documentation?title=Nuspec%20Format" target="_blank">NuSpec format</a> with an example.</p>
<p>In this first step we’ll going to use the minimum set of fields.</p>
<table border="1" cellspacing="0" cellpadding="5" width="547">
<tbody>
<tr>
<td width="90" valign="top">
<h5>Element</h5>
</td>
<td width="455" valign="top">
<h5>Description</h5>
</td>
</tr>
<tr>
<td width="90" valign="top">id</td>
<td width="455" valign="top">The identifier for the package.  It used as a partial name of the package.</td>
</tr>
<tr>
<td width="90" valign="top">version</td>
<td width="455" valign="top">The package version.  Also used as a partial name of the package.</td>
</tr>
<tr>
<td width="90" valign="top">authors</td>
<td width="455" valign="top">Author name.  Use a comma to separate multiple authors.</td>
</tr>
<tr>
<td width="90" valign="top">description</td>
<td width="455" valign="top">You know what it is.</td>
</tr>
</tbody>
</table>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:a472c481-eb8d-4dcd-9745-87c42f6e6629" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;package&gt;
  &lt;metadata&gt;
    &lt;id&gt;SystemWrapper&lt;/id&gt;
    &lt;version&gt;0.3.5.0&lt;/version&gt;
    &lt;authors&gt;Vadim Kreynin&lt;/authors&gt;
    &lt;description&gt;
      SystemWrapper is a library that wraps .NET classes for system resources like System.IO.FileInfo, System.Reflection.Assembly, and many other classes so you can easily mock them.
    &lt;/description&gt;
  &lt;/metadata&gt;
&lt;/package&gt;
</pre></p>
</div>
<p>I named the xml SystemWrapper.nuspec.  I believe that it is a good logical name for NuSpec file.</p>
<p>One of the way to add a package is to use Add Library Package Reference dialog.  I’ll talk more about adding a package and Add Library Package Reference dialog later in this article but for now I want to show where NuSpec fields a re used.  Bellow is the image that describes where above NuSpec metadata elements used in the dialog.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/musthavenugetfields.png"><img style="display:block;float:none;margin:5px auto;" title="musthaveNuGetFields" src="http://vkreynin.files.wordpress.com/2010/12/musthavenugetfields_thumb.png?w=733&#038;h=375" alt="musthaveNuGetFields" width="733" height="375" /></a></p>
<h2>Step 2: Build the package.</h2>
<p>First you need to download <a href="http://nuget.codeplex.com/releases/52017/download/165468" target="_blank">NuGet.exe command line tool</a>.</p>
<p>Now when we have NuGet.exe, we are ready to create our SystemWrapper NuGet package.  <a href="http://www.computerhope.com/issues/chdos.htm" target="_blank">Fire up your Command Console</a> and type the following line.<br />
<code><span style="font-size:x-small;">NuGet.exe pack SystemWrapper.nuspec</span></code></p>
<p>If everything runs at it supposed to, you should see systemwrapper.0.3.5.0.nupkg file in your Windows Explorer.</p>
<p>As you can see the name of the file is [id].[version].nupkg.  id and version from our NuSpec file.</p>
<h2>Step 3: Publish the package.</h2>
<p>To release System Wrapper to the world we need to <a href="http://nupackpackages.codeplex.com/" target="_blank">contribute to NuGet packages on CodePlex</a>.  In this example I’m going to show how to host System Wrapper NuGet package locally.  You can follow this technic to host packages for your company.  I learned how to host NuGet packages locally from <a href="http://haacked.com/archive/2010/10/21/hosting-your-own-local-and-remote-nupack-feeds.aspx" target="_blank">a great Phil Haack’s post</a>.</p>
<p>First, I create a directory for my packages.  It has an original name ‘packages’.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/packagesdir.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;padding-top:0;border:0;margin:5px auto;" title="packagesdir" src="http://vkreynin.files.wordpress.com/2010/12/packagesdir_thumb.png?w=637&#038;h=304" border="0" alt="packagesdir" width="637" height="304" /></a></p>
<p>Next, we need to add another package source.  Out of the box you should have only one package source which named ‘NuGet official package source’.  We are going to create another package source and I’m going to call mine ‘Vadim’s package source’.  I think that this is going to cement my legacy.</p>
<p>In order to add a package source in Visual Studio we need to go to Tools –&gt; Options.  Inside the option dialog box select Package Manager and enter values for Name and Source and press Add button and then OK to close the Options dialog.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/addpackage.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;padding-top:0;border:0;margin:5px auto;" title="AddPackage" src="http://vkreynin.files.wordpress.com/2010/12/addpackage_thumb.png?w=646&#038;h=408" border="0" alt="AddPackage" width="646" height="408" /></a></p>
<p>You also can get to this dialog by pressing Settings button in Add Library Package Reference dialog, which is the first image of this post.  The button located in the lower left corner of the dialog.</p>
<h2>Step 4: Find the package in Visual Studio.</h2>
<p>There are two ways we can browse for our package.  One way is using Package Manager Console which is Powershell based. Another one is Add Library Package Reference dialog that I mentioned earlier.</p>
<p>First let me describe how we can browse using Package Manager Console.  We can lunch the console by selecting View –&gt; Other Windows –&gt; Console from the menu or simply press Ctrl+W, Ctrl+Z.<a href="http://vkreynin.files.wordpress.com/2010/12/navigation2packagemanagerconsole.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:5px;" title="Navigation2PackageManagerConsole" src="http://vkreynin.files.wordpress.com/2010/12/navigation2packagemanagerconsole_thumb.png?w=463&#038;h=462" border="0" alt="Navigation2PackageManagerConsole" width="463" height="462" /></a></p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/selectpackagesourcefrompmc.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;float:right;padding-top:0;border-width:0;margin:0 0 5px;" title="SelectPackageSourceFromPMC" src="http://vkreynin.files.wordpress.com/2010/12/selectpackagesourcefrompmc_thumb.png?w=244&#038;h=84" border="0" alt="SelectPackageSourceFromPMC" width="244" height="84" align="right" /></a>After console is loaded, we need to select our package source.  Just pick it from the Package source drop down box.  In my case it’s “Vadim’s package source”.  Next, type <span style="font-family:Courier New;font-size:x-small;">List-Package </span>at PM&gt; prompt.  See the result bellow.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/pmcoutput.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:5px;" title="PMCOutput" src="http://vkreynin.files.wordpress.com/2010/12/pmcoutput_thumb.png?w=816&#038;h=221" border="0" alt="PMCOutput" width="816" height="221" /></a></p>
<p>I don’t know why I cannot see my description in Package Manager Console.  It shows fine in Add Library Package Reference dialog.  Let me know if you have an answer for me.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/addrefoptions.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;float:right;padding-top:0;border:0;margin:0 5px 5px 15px;" title="AddRefOptions" src="http://vkreynin.files.wordpress.com/2010/12/addrefoptions_thumb.png?w=285&#038;h=114" border="0" alt="AddRefOptions" width="285" height="114" align="right" /></a>Now let me show how you can browse for the package using Add Library Package Reference dialog.  The way I do it is just right click on References in the project to see my  add options.  Select “Add Library Package Reference…” to display the dialog.  The dialog has three panels.  The first panel has three sections: Installed packages, Online, and Updates.   “Installed packages” shows the package that installed for specific project.  The second one “Online” shows packages that are available.  We want to chose this option.  Select your package source.  The third option is updates.</p>
<p>The second panel shows the list of packages.  The third panel shows details of the selected package.</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/musthavenugetfields1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;margin:5px;" title="musthaveNuGetFields" src="http://vkreynin.files.wordpress.com/2010/12/musthavenugetfields_thumb1.png?w=762&#038;h=411" border="0" alt="musthaveNuGetFields" width="762" height="411" /></a></p>
<p>It doesn’t make scenes for us to install the package at the moment because we only describe the package but doesn’t add any libraries to the project.</p>
<h2>Step 5: Add SystemWrapper.dll to the package.</h2>
<p>Our goal is to add SystemWrapper to the project.  It means that we need to add assembly reference to SystemWrapper.dll. It’s very easy to do, we just need to add <span style="font-family:Courier New;font-size:x-small;">files</span> element to our NuSpec file. <span style="font-family:Courier New;font-size:x-small;">files</span> element must be on the same level as <span style="font-family:Courier New;font-size:x-small;">metadata</span> element.</p>
<p>Here’s a fragment that we add to NuSpec metadata:</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:5655c93d-52b9-4b59-a9b0-5d8eda155b29" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;files&gt;
   &lt;file src=&quot;SystemWrapper\bin\Release\*.dll&quot; target=&quot;lib&quot; /&gt;
&lt;/files&gt;
</pre></p>
</div>
<p><span style="font-family:Courier New;font-size:x-small;">file</span> element has two attributes <span style="font-family:Courier New;font-size:x-small;">src</span> and <span style="font-family:Courier New;font-size:x-small;">target</span>.  I just want to let you know that <span style="font-family:Courier New;font-size:x-small;">src</span> is a path that relative to the nuspec file.  Our <span style="font-family:Courier New;font-size:x-small;">target</span> attribute has a value ‘lib’, it means that dlls under SystemWrapper\bin\Release will become assembly references on install.  In our case it’s going to be only one dll.  You can get more details on your own by reading the <a href="http://nuget.codeplex.com/wikipage?title=File%20Element%20Specification" target="_blank">NuSpec File Element Specification</a>.</p>
<p>Here’s the complete NuSpec file:</p>
<p>&nbsp;</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:cf51105f-9262-4046-a6df-b053cf732d29" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;package&gt;
  &lt;metadata&gt;
    &lt;id&gt;SystemWrapper&lt;/id&gt;
    &lt;version&gt;0.3.5.0&lt;/version&gt;
    &lt;authors&gt;Vadim Kreynin&lt;/authors&gt;
    &lt;description&gt;
      SystemWrapper is a library that wraps .NET classes for system resources like System.IO.FileInfo, System.Reflection.Assembly, and many other classes so you can easily mock them.
    &lt;/description&gt;
  &lt;/metadata&gt;
  &lt;files&gt;
    &lt;file src=&quot;SystemWrapper\bin\Release\*.dll&quot; target=&quot;lib&quot; /&gt;
  &lt;/files&gt;
&lt;/package&gt;
</pre></p>
</div>
<p>After we updated NuSpec file, we need to repeat step 2 (Build the package).</p>
<h2>Step 6: Install the package.</h2>
<p>Once again you can install either from Package Manager Console or from Add Library Package Reference dialog.  It’s strait forward to install it from Add Library Package Reference dialog, you just press the Install button.  After the installation, I have SystemWrapper in my Installed packages.  I can easily uninstall it by pressing the Uninstall button.  How easy is that?  Also if I look in Online section, I can see that instead of an Install button there’s a green check mark for my package.</p>
<p>In Package Manager Console I just type <span style="font-family:Courier New;font-size:x-small;">Install-Package SystemWrapper</span> at PM&gt; prompt.</p>
<pre><span style="font-size:x-small;">PM&gt; Install-Package SystemWrapper</span></pre>
<pre><span style="font-size:x-small;">Successfully installed 'SystemWrapper 0.3.5.0'</span></pre>
<pre><span style="font-size:x-small;">Successfully added 'SystemWrapper 0.3.5.0' to PackageObjectLibrary</span></pre>
<pre><span style="font-family:Verdana;">You can uninstall the package by typing <span style="font-family:Courier New;font-size:x-small;">Uninstall-Package SystemWrapper</span>.</span></pre>
<pre><span style="font-family:Verdana;">For more details check out <a href="http://nuget.codeplex.com/documentation?title=Package%20Manager%20Console%20Command%20Reference" target="_blank">Package Manager Console Commands</a>.</span></pre>
<h2><span style="font-family:Verdana;">Step 7: Display more information about the package.</span></h2>
<pre><span style="font-family:Verdana;">When developers browse for packages, they probably would like to more information about a package than just a description.  Adding projectUrl element to NuSpec file will point users to the resource with more details.</span></pre>
<pre><span style="font-family:Verdana;">Here’s an example for System Wrapper:</span></pre>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:6eeb42ef-c243-4ab8-bc4c-acf1336a16d8" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;projectUrl&gt;http://systemwrapper.codeplex.com/&lt;/projectUrl&gt;
</pre></p>
</div>
<p>You might also want to add a link to your license terms.  Once again you need to add another field to the NuSpec file.  This time we need to add licenseUrl.  If you don’t want a developer to install your package unless she accepts the license terms, than you need to add requireLicenseAcceptance element. The xml might looks like this:</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:6ed617a3-8aa0-4b5b-b480-cb086e7fcf0e" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;licenseUrl&gt;http://systemwrapper.codeplex.com/license&lt;/licenseUrl&gt;
&lt;requireLicenseAcceptance&gt;true&lt;/requireLicenseAcceptance&gt;
</pre></p>
</div>
<p>When a user tries to install the package, she will see a dialog similar to the one bellow:</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/licenseacceptance.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;padding-top:0;border:0;margin:5px auto;" title="licenseAcceptance" src="http://vkreynin.files.wordpress.com/2010/12/licenseacceptance_thumb.png?w=417&#038;h=316" border="0" alt="licenseAcceptance" width="417" height="316" /></a></p>
<p>You also can specify your own icon instead of default blue NuGet icon that appears in Add Package Reference dialog .  The element for an icon is iconUrl.  The icon should be a 32&#215;32 pixel <a href="http://en.wikipedia.org/wiki/Portable_Network_Graphics" target="_blank">PNG</a> file with a transparent background.</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:58c2e8d1-40ec-4032-9ece-1273e425d247" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;iconUrl&gt;http://mysite.com/32_button_green.png&lt;/iconUrl&gt;
</pre></p>
</div>
<p>The complete NuSpec file might look something like that:</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:5d80936d-999a-41ed-88d2-de41c4c73460" class="wlWriterEditableSmartContent" style="display:inline;float:none;margin:0;padding:0;"><pre class="brush: xml;">
&lt;package&gt;
  &lt;metadata&gt;
    &lt;id&gt;SystemWrapper&lt;/id&gt;
    &lt;version&gt;0.3.5.0&lt;/version&gt;
    &lt;title&gt;System Wrapper&lt;/title&gt;
    &lt;authors&gt;Vadim Kreynin&lt;/authors&gt;
    &lt;description&gt;
      SystemWrapper is a library that wraps .NET classes for system resources like System.IO.FileInfo, System.Reflection.Assembly, and many other classes so you can easily mock them.
    &lt;/description&gt;
    &lt;projectUrl&gt;http://systemwrapper.codeplex.com/&lt;/projectUrl&gt;
    &lt;iconUrl&gt;http://systemwrapper.codeplex.com/32_button_green.png&lt;/iconUrl&gt;
    &lt;licenseUrl&gt;http://systemwrapper.codeplex.com/license&lt;/licenseUrl&gt;
  &lt;/metadata&gt;
  &lt;files&gt;
    &lt;file src=&quot;SystemWrapper\bin\Release\*.dll&quot; target=&quot;lib&quot; /&gt;
  &lt;/files&gt;
&lt;/package&gt;
</pre></p>
</div>
<p><a href="http://vkreynin.files.wordpress.com/2010/12/extranugetfields.png"><img style="background-image:none;padding-left:0;padding-right:0;display:block;float:none;padding-top:0;border:0;margin:5px auto;" title="extraNuGetFields" src="http://vkreynin.files.wordpress.com/2010/12/extranugetfields_thumb.png?w=708&#038;h=413" border="0" alt="extraNuGetFields" width="708" height="413" /></a></p>
<p>&nbsp;</p>
<h2>Summary</h2>
<p>I know that I didn’t talk about dependencies or modifying config files at all.  I just try to give a simple example to follow.  I hope that it can help you to get started with NuGet.  Here’s some references I would recommend for you to read:</p>
<ul>
<li><a href="http://nuget.codeplex.com/documentation" target="_blank">Offical NuGet Documentation</a></li>
<li><a href="http://haacked.com/archive/2010/10/21/hosting-your-own-local-and-remote-nupack-feeds.aspx" target="_blank">Hosting Your Own Locan and Remote NuGet Feeds</a> – by Phil Haack.</li>
<li><a href="http://haacked.com/archive/2010/11/09/nuget-ctp2-released.aspx" target="_blank">NuGet CTP 2 changes</a> – by Phil Haack.</li>
<li><a href="http://coffeedrivendev.blogspot.com/2010/12/creating-nuget-package.html" target="_blank">Creating a NuGet Package</a> – by Jeff Kwak.</li>
<li><a href="http://www.hanselman.com/blog/IntroducingNuPackPackageManagementForNETAnotherPieceOfTheWebStack.aspx" target="_blank">Introduction to NuGet</a> – by Scott Hanselman.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/509/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=509&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2010/12/08/baby-steps-to-create-nuget-package/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/musthavenugetfields_thumb.png" medium="image">
			<media:title type="html">musthaveNuGetFields</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/packagesdir_thumb.png" medium="image">
			<media:title type="html">packagesdir</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/addpackage_thumb.png" medium="image">
			<media:title type="html">AddPackage</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/navigation2packagemanagerconsole_thumb.png" medium="image">
			<media:title type="html">Navigation2PackageManagerConsole</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/selectpackagesourcefrompmc_thumb.png" medium="image">
			<media:title type="html">SelectPackageSourceFromPMC</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/pmcoutput_thumb.png" medium="image">
			<media:title type="html">PMCOutput</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/addrefoptions_thumb.png" medium="image">
			<media:title type="html">AddRefOptions</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/musthavenugetfields_thumb1.png" medium="image">
			<media:title type="html">musthaveNuGetFields</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/licenseacceptance_thumb.png" medium="image">
			<media:title type="html">licenseAcceptance</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/12/extranugetfields_thumb.png" medium="image">
			<media:title type="html">extraNuGetFields</media:title>
		</media:content>
	</item>
		<item>
		<title>MbUnit 3.2 makes it easier to work with Xml</title>
		<link>http://vkreynin.wordpress.com/2010/07/18/test/</link>
		<comments>http://vkreynin.wordpress.com/2010/07/18/test/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 21:12:22 +0000</pubDate>
		<dc:creator>Vadim</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[MbUnit]]></category>
		<category><![CDATA["Unit Testing"]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">https://vkreynin.wordpress.com/2010/07/18/test/</guid>
		<description><![CDATA[In my previous article I mentioned about upcoming new release of Gallio /&#160; MbUnit.&#160; Feel free to download the Release Candidate and try it for yourself.&#160; In this post I’ll talk about another new feature. Not everybody like XML but everyone had to work with it. It&#8217;s used for many different purposes. Most people use [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=497&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://vkreynin.wordpress.com/2010/07/18/assert-count-in-mbunit-version-3-2/">previous article</a> I mentioned about upcoming new release of <a href="http://www.gallio.org/Default.aspx">Gallio /&#160; MbUnit</a>.&#160; Feel free to download the Release Candidate and try it for yourself.&#160; In this post I’ll talk about another new feature.</p>
<p>Not everybody like XML but everyone had to work with it. It&#8217;s used for many different purposes. Most people use it for configuration like web.config or .csproj / .vbproj. Some people use this format for data, others for communication. I believe that it&#8217;s going to be very hard to find a .NET developer that didn&#8217;t work with XML. If you do work with XML and you like to unit test your code, than I have good news for you. With new upcoming version 3.2 of MbUnit you are going to get better support to unit test your XML code. The Gallio team gives us three new Assert methods to test XML:</p>
<ul>
<li>Assert.Xml.AreEqual </li>
<li>Assert.Xml.Exists </li>
<li>Assert.Xml.IsUnique </li>
</ul>
<h4><font color="#004040">Assert.Xml.AreEqual</font></h4>
<p>Let start by showing a simple and probably very obvious example:</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:33c2a573-889b-47a7-a971-b976ba28a131" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
        [Test]
        public void TestXmlAreEqualWithString()
        {
            const string xmlString =
                &quot;&lt;Books&gt;&quot; +
                &quot;  &lt;Book title='C# in Depth' /&gt;&quot; +
                &quot;  &lt;Book title='Learing C#' /&gt;&quot; +
                &quot;&lt;/Books&gt;&quot;;

            Assert.Xml.AreEqual(xmlString, XElement.Load(new StringReader(xmlString)).ToString());
        }
</pre>
</pre>
</div>
<p>In the example above we’re comparing XML strings.&#160; There’s another overload that instead of strings takes <a href="http://msdn.microsoft.com/en-us/library/system.io.textreader.aspx">TextReader</a> objects.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:d4374596-cc69-40c0-8a22-5fe8e4ac7e50" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
        [Test]
        public void TestXmlAreEqualWithTextReader()
        {
            const string xmlString =
                &quot;&lt;Books&gt;&quot; +
                &quot;  &lt;Book title='C# in Depth' /&gt;&quot; +
                &quot;  &lt;Book title='Learing C#' /&gt;&quot; +
                &quot;&lt;/Books&gt;&quot;;

            TextReader textReaderXml = new StringReader(xmlString);
            Assert.Xml.AreEqual(
                new StringReader(&quot;&lt;Books&gt;&lt;Book title='C# in Depth'/&gt;&lt;Book title='Learing C#'/&gt;&lt;/Books&gt;&quot;),
                textReaderXml);
        }
</pre>
</pre>
</div>
<p>As you can see, the formatting of XML is different, but our test still succeeds since it represents the same XML.</p>
<p>Let’s now make a small test.&#160; We know that XML is case-sensitive&#160; language.&#160; What is going to happen if you we mismatch case?&#160; Let’s make expected value for one of the book title ‘Learning c#’ instead of ‘Learning C#’.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:c671d994-862f-4ea1-8889-a220057b281e" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
        [Test]
        public void TestXmlAreEqualWithString()
        {
            const string xmlString =
                &quot;&lt;Books&gt;&quot; +
                &quot;  &lt;Book title='C# in Depth' /&gt;&quot; +
                &quot;  &lt;Book title='Learing C#' /&gt;&quot; +
                &quot;&lt;/Books&gt;&quot;;

            Assert.Xml.AreEqual(
                &quot;&lt;Books&gt;&lt;Book title='C# in Depth'/&gt;&lt;Book title='Learing c#'/&gt;&lt;/Books&gt;&quot;,
                XElement.Load(new StringReader(xmlString)).ToString());
        }

</pre>
</pre>
</div>
<p>After executing this test, we will see the following error that conveniently highlights the problem area:</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/07/areequal_error.png"><img style="display:inline;border-width:0;" title="AreEqual_error" border="0" alt="AreEqual_error" src="http://vkreynin.files.wordpress.com/2010/07/areequal_error_thumb.png?w=244&#038;h=184" width="244" height="184" /></a> </p>
</p>
<p>Wait a second.&#160; But what if in my application I don’t care about case-sensitivity for my data?&#160; Well, in this case guys from the Gallio team provided us with an optional parameter of type XmlOptions.&#160; Therefore, if we add XmlOptions.Loose parameter to our Assert.AreEqual, our test is going to pass.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:e6d22df2-fc35-4c7f-8eb4-7da4fa281bd3" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
            Assert.Xml.AreEqual(
                &quot;&lt;Books&gt;&lt;Book title='C# in Depth'/&gt;&lt;Book title='Learing c#'/&gt;&lt;/Books&gt;&quot;,
                XElement.Load(new StringReader(xmlString)).ToString(), 
                XmlOptions.Loose);

</pre>
</pre>
</div>
<p>You can find more information on <a href="http://gallio.org/wiki/doku.php?id=mbunit:xml_equality_options">XmlOptions in the Gallio Wiki site</a>.</p>
<p>&#160;</p>
<h4>Assert.Xml.Exists</h4>
<p>This assertion method checks if an element or an attribute can be found in a specific XML document. </p>
<ul>
<li>The first parameter of <strong><em>Assert.Xml.Exists</em></strong> method is an Xml document.&#160;&#160; Like in <strong><em>Assert.Xml.AreEqual</em></strong> method you can represent Xml document as a string or a TextReader object.&#160; </li>
<li>The second parameter is an Xml Path that can be either a string in format “/element[/element]:attribute” or an object that implements IXmlPathLoose interface. </li>
<li>The third parameter is already familiar to us XmlOptions object. </li>
</ul>
<p>Let’s look at a specific example where will check if <em>Book</em> element exists.&#160; </p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:1fa6ddbc-c382-4106-b343-78337f2c4f67" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
        [Test]
        public void TestXmlExistsForElement()
        {
            const string xmlString =
                &quot;&lt;Books&gt;&quot; +
                &quot;  &lt;Book title='C# in Depth' /&gt;&quot; +
                &quot;  &lt;Book title='Learing C#' /&gt;&quot; +
                &quot;&lt;/Books&gt;&quot;;

            // Xml Path as a string
            Assert.Xml.Exists(xmlString, &quot;/Books/Book&quot;, XmlOptions.Default);
            // Xml Path as a IXmlPathLoose
            Assert.Xml.Exists(xmlString, XmlPath.Element(&quot;Books&quot;).Element(&quot;Book&quot;), XmlOptions.Default);
        }
</pre>
</pre>
</div>
<p>For completeness let’s show a separate example where we will be looking for <em>title</em> attribute.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:c6a2ea66-d7eb-4cad-aa5e-2c686d687a25" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
        [Test]
        public void TestXmlExistsForElement()
        {
            const string xmlString =
                &quot;&lt;Books&gt;&quot; +
                &quot;  &lt;Book title='C# in Depth' /&gt;&quot; +
                &quot;  &lt;Book title='Learing C#' /&gt;&quot; +
                &quot;&lt;/Books&gt;&quot;;

            // Xml Path as a string
            Assert.Xml.Exists(xmlString, &quot;/Books/Book:title&quot;, XmlOptions.Default);
            // Xml Path as a IXmlPathLoose
            Assert.Xml.Exists(xmlString, XmlPath.Element(&quot;Books&quot;).Element(&quot;Book&quot;).Attribute(&quot;title&quot;), XmlOptions.Default);
        }
</pre>
</pre>
</div>
<p>In case an element or an attribute not found, Gallio will produce an error message similar to the one below:</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/07/exists_error.png"><img style="display:inline;border-width:0;" title="Exists_error" border="0" alt="Exists_error" src="http://vkreynin.files.wordpress.com/2010/07/exists_error_thumb.png?w=534&#038;h=127" width="534" height="127" /></a> </p>
<h4><font color="#004040">Assert.Xml.IsUnique</font></h4>
<p>This method takes the same parameters as <strong><em>Assert.Xml.Exists</em></strong>.&#160; <strong><em>Assert.Xml.IsUnique</em></strong> fails if an element is encountered more than once in Xml document.&#160; I expect that you will not utilize this method as much as other two methods.</p>
<p>The following code is going to fail because we have two Book elements in out Xml.</p>
<div style="display:inline;float:none;margin:0;padding:0;" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:cc9a59ca-4f33-47a3-bc4d-770cfbd8775a" class="wlWriterEditableSmartContent">
<pre>
<pre class="brush: csharp;">
        [Test]
        public void TestXmlIsUnique()
        {
            const string xmlString =
                &quot;&lt;Books&gt;&quot; +
                &quot;  &lt;Book title='C# in Depth' /&gt;&quot; +
                &quot;  &lt;Book title='Learing C#' /&gt;&quot; +
                &quot;&lt;/Books&gt;&quot;;

            // Xml Path as a string
            Assert.Xml.IsUnique(xmlString, &quot;/Books/Book&quot;, XmlOptions.Default);
            // Xml Path as a IXmlPathLoose
            Assert.Xml.IsUnique(xmlString, XmlPath.Element(&quot;Books&quot;).Element(&quot;Book&quot;), XmlOptions.Default);
        }
</pre>
</pre>
</div>
<p>Here’s our error message:</p>
<p><a href="http://vkreynin.files.wordpress.com/2010/07/isuniqe_error.png"><img style="display:inline;border-width:0;" title="IsUniqe_error" border="0" alt="IsUniqe_error" src="http://vkreynin.files.wordpress.com/2010/07/isuniqe_error_thumb.png?w=645&#038;h=148" width="645" height="148" /></a> </p>
<h4><font color="#004040">Last words.</font></h4>
<p>I hope you find it useful and I didn’t waste mine and your time because my wife and kids never going get this hour back. </p>
<p>&#160;<a href="http://gallio.org/wiki/">Gallio wiki site</a> is a great place to learn more about <a href="http://gallio.org/wiki/doku.php?id=mbunit:xml_assertions">XML Assertions</a>.&#160; <a href="http://www.gallio.org/Default.aspx">Gallio / MbUnit</a> is an open source project and they always looking for new contributors.&#160; If you consider joining the project, click <a href="http://www.gallio.org/Development.aspx">here</a> to learn how.</p>
<p><a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fvkreynin.wordpress.com%2f2010%2f07%2f18%2ftest%2f"><img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fvkreynin.wordpress.com%2f2010%2f07%2f18%2ftest%2f" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/vkreynin.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/vkreynin.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/vkreynin.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/vkreynin.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/vkreynin.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/vkreynin.wordpress.com/497/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/vkreynin.wordpress.com/497/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/vkreynin.wordpress.com/497/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=vkreynin.wordpress.com&amp;blog=1150196&amp;post=497&amp;subd=vkreynin&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://vkreynin.wordpress.com/2010/07/18/test/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0bdbc8162336851af022196f897d6200?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">vkreynin</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/07/areequal_error_thumb.png" medium="image">
			<media:title type="html">AreEqual_error</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/07/exists_error_thumb.png" medium="image">
			<media:title type="html">Exists_error</media:title>
		</media:content>

		<media:content url="http://vkreynin.files.wordpress.com/2010/07/isuniqe_error_thumb.png" medium="image">
			<media:title type="html">IsUniqe_error</media:title>
		</media:content>

		<media:content url="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fvkreynin.wordpress.com%2f2010%2f07%2f18%2ftest%2f" medium="image">
			<media:title type="html">kick it on DotNetKicks.com</media:title>
		</media:content>
	</item>
	</channel>
</rss>
