<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7688168599091858865</id><updated>2012-01-29T14:19:15.400-05:00</updated><category term='Orcas'/><category term='Vista'/><category term='VS2005'/><category term='TypeMock'/><category term='WCF'/><category term='Rhino.Mocks'/><category term='MbUnit'/><category term='.Net'/><title type='text'>Vadim's WebBlog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-730634343983078118</id><published>2007-09-22T19:45:00.000-04:00</published><updated>2007-09-23T09:41:23.637-04:00</updated><title type='text'>Sorry.  We moved to different location.</title><content type='html'>I should have let everybody know long time ago that I moved &lt;a href="http://vkreynin.wordpress.com"&gt;my blog&lt;/a&gt; to &lt;a href="http://www.wordpress.com"&gt;Wordpress&lt;/a&gt;.  You can find it @ &lt;a href="http://vkreynin.wordpress.com"&gt;http://vkreynin.wordpress.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-730634343983078118?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/730634343983078118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=730634343983078118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/730634343983078118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/730634343983078118'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/09/sorry-we-moved-to-different-location.html' title='Sorry.  We moved to different location.'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-4230706886334976091</id><published>2007-04-29T15:27:00.000-04:00</published><updated>2007-04-29T18:02:42.019-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MbUnit'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Testing Non-Public members with MbUnit (Part II).</title><content type='html'>Earlier this month I talked about &lt;a href="http://vadim-net.blogspot.com/2007/04/testing-non-public-members-with-mbunit.html"&gt;how to test non-public members with MbUnit&lt;/a&gt;.   Well there’s &lt;a href="http://groups.google.com/group/MbUnitDev/browse_thread/thread/f918538940fb8b21"&gt;an interesting discussion&lt;/a&gt; on MbUnit group.   As a result a new code was written.&lt;br /&gt;&lt;br /&gt;Following methods are marked as obsolete.  My guess is that these methods are going to be gone completely in version 3.&lt;br /&gt;&lt;table style="font-family:Arial,Veranda;border:thin solid gray;width:auto" cellspacing="0" cellpadding="8"&gt;&lt;tr style="font-weight:bold;background-color:#EEEECC"&gt;&lt;td style="border-right:thin solid gray"&gt;Old Method&lt;/td&gt;&lt;td&gt;New Method&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-right:thin solid gray;border-top:thin solid gray"&gt;&amp;nbsp;GetNonPublicField&amp;nbsp;&lt;/td&gt;&lt;td style="border-top:thin solid gray"&gt;&amp;nbsp;GetField&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-right:thin solid gray;border-top:thin solid gray"&gt;&amp;nbsp;GetNonPublicVariable&amp;nbsp;&lt;/td&gt;&lt;td style="border-top:thin solid gray"&gt;&amp;nbsp;GetField&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-right:thin solid gray;border-top:thin solid gray"&gt;&amp;nbsp;GetNonPublicProperty&amp;nbsp;&lt;/td&gt;&lt;td style="border-top:thin solid gray"&gt;&amp;nbsp;GetProperty&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-right:thin solid gray;border-top:thin solid gray"&gt;&amp;nbsp;RunPrivateMethod&amp;nbsp;&lt;/td&gt;&lt;td style="border-top:thin solid gray"&gt;&amp;nbsp;InvokeMethod&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="border-right:thin solid gray;border-top:thin solid gray"&gt;&amp;nbsp;RunNonPublicMethod&amp;nbsp;&lt;/td&gt;&lt;br /&gt;&lt;td style="border-top:thin solid gray"&gt;&amp;nbsp;InvokeMethod&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;There're also new methods:&lt;br /&gt;&lt;em&gt;SetField&lt;/em&gt; - Sets field value.&lt;br /&gt;&lt;em&gt;SetProperty&lt;/em&gt; - Sets property value.&lt;br /&gt;&lt;br /&gt;Thanks to Jeff who pointed out that Reflector didn’t have these methods. He also mentioned that method names between static and instance implementation are inconsistent.  This also was corrected.&lt;br /&gt;&lt;br /&gt;Let's create SampleClass:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="darkblue"&gt;&lt;br /&gt;public class SampleClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string publicString = "MbUnit Rocks!!!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;private DateTime privateDateTime = DateTime.Today;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;internal DateTime InternalProperty&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;get { return privateDateTime; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set { privateDateTime = value; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private static int Add(int x, int y)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return x + y;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here an example how we can create tests for SampleClass:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="darkblue"&gt;&lt;br /&gt;TestSample _sampleObject;&lt;br /&gt;Reflector _reflect;&lt;br /&gt;&lt;br /&gt;[TestFixtureSetUp]&lt;br /&gt;public void Init()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;_sampleObject = new SampleClass();&lt;br /&gt;&amp;nbsp;&amp;nbsp;_reflect = new Reflector(_sampleObject);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void GetPublicField()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Assert.AreEqual("MbUnit Rocks!!!", _reflect.GetField("publicString"));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void SetNonPublicProperty()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;string propertyName = "InternalProperty";&lt;br /&gt;&amp;nbsp;&amp;nbsp;DateTime dt = new DateTime(2008, 1, 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;_reflect.SetProperty(propertyName, dt);&lt;br /&gt;&amp;nbsp;&amp;nbsp;Assert.AreEqual(dt, _reflect.GetProperty(propertyName));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void StaticPrivateMethod()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Assert.AreEqual(7, _reflect.InvokeMethod("Add", 1, 6));&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I mentioned before that static and instance methods now have consistent names.&lt;br /&gt;You can implement StaticPrivateMethod test like this using static implementation of InvokeMethod(..).&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="darkblue"&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void StaticPrivateMethod()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Assert.AreEqual(7, Reflector.InvokeMethod(new SampleClass(), "Add", 1, 6));&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here's another of Jeff's suggestions:&lt;br /&gt;&lt;blockquote&gt;Indicating public vs. non-public is useful for documentation purposes.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Once again, because of Jeff's suggestion we have AccessModifier enum type and using it we can specify if we want to access public, static, or non-public member.  In examples above we didn't use AccessModifier.  It means that Reflector will invoke method or access field or property as long as an object has implementation for it.&lt;br /&gt;&lt;br /&gt;In the example below we are trying to test Add method that has private static modifier.  However, if Add method wasn't static or was public, an assirtion would happen in our test.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="darkblue"&gt;&lt;br /&gt;[Test]&lt;br /&gt;public void StaticPrivateMethod()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Assert.AreEqual(7, _reflect.InvokeMethod(AccessModifier.Static | AccessModifier.NonPublic, , "Add", 1, 6));&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It's a new code that was checked in; however, it has not been built yet.  These and some other new features should be available in a next MbUnit build.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-4230706886334976091?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/4230706886334976091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=4230706886334976091' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/4230706886334976091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/4230706886334976091'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/04/testing-non-public-members-with-mbunit_29.html' title='Testing Non-Public members with MbUnit (Part II).'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-5339869628250819264</id><published>2007-04-12T15:16:00.000-04:00</published><updated>2007-04-12T15:24:44.861-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MbUnit'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><title type='text'>Duration in MbUnit</title><content type='html'>Playing with MbUnit I just discovered DurationAttribute for the first time.   This attribute sets the maximum time allowed for test to finish execution.&lt;br /&gt;&lt;br /&gt;The test below will fail because in Duration attribute we set duration for one second but inside the test we sleep for 2 seconds.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;[Test]&lt;br /&gt;[Duration(1)]&lt;br /&gt;public void DurationFailTest()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Thread.Sleep(2000);&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Next test will succeed because we don’t sleep at all.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;[Test]&lt;br /&gt;[Duration(1)]&lt;br /&gt;public void DurationSuccessTest()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Thread.Sleep(0);&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;You can use it with RowTest attribute.  Row(0) will succeed and Row(2000) will obviously fail.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;[RowTest, Duration(1)]&lt;br /&gt;[Row(0)]&lt;br /&gt;[Row(2000)]&lt;br /&gt;public void DurationRowTest(int sleepTime)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;Thread.Sleep(sleepTime);&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-5339869628250819264?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/5339869628250819264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=5339869628250819264' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/5339869628250819264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/5339869628250819264'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/04/duration-in-mbunit.html' title='Duration in MbUnit'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-2575741170489044052</id><published>2007-04-10T22:21:00.000-04:00</published><updated>2007-04-10T23:06:14.673-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rhino.Mocks'/><category scheme='http://www.blogger.com/atom/ns#' term='TypeMock'/><title type='text'>TypeMock too powerful to use</title><content type='html'>In my early stages of following TDD light I was looking for a mock object framework.  I tried &lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx"&gt;Rhino.Mocks&lt;/a&gt; and found it hard to use.  Then I tried &lt;a href="http://www.typemock.com/"&gt;TypeMock&lt;/a&gt; and falled in love with the product.  It allows mocking almost anything.  With TypeMock I only failed to mock SqlDataReader because it doesn’t have a public constructor.&lt;br /&gt;&lt;br /&gt;It was then.  Today I believe that TypeMock is bad for the same reason I loved it before.  It’s too powerful.  It doesn’t force you to write a testable code.&lt;br /&gt;&lt;br /&gt;The reason I found &lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx"&gt;Rhino.Mocks&lt;/a&gt; hard to use is because I haven't learn yet about &lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;Inversion of Control Containers and the Dependency Injection pattern&lt;/a&gt;.  Today I write my own mock objects without using any framework.  However, if you want to use a Mock Framework, I strongly recommend &lt;a href="http://www.ayende.com/projects/rhino-mocks.aspx"&gt;Rhino.Mocks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're not familiar with this pattern I recommend to read &lt;a href="http://codebetter.com/blogs/jeffrey.palermo/default.aspx"&gt;Jeremy Palermo's&lt;/a&gt; article &lt;a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2005/11/01/134095.aspx"&gt;Simple dependency injection to get you started with unit testing&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-2575741170489044052?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/2575741170489044052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=2575741170489044052' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/2575741170489044052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/2575741170489044052'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/04/typemock-too-powerful-to-use.html' title='TypeMock too powerful to use'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-4798397128667414574</id><published>2007-04-08T13:16:00.000-04:00</published><updated>2007-04-08T15:24:53.438-04:00</updated><title type='text'>Timer class</title><content type='html'>I was checking the difference in performance between SqlDataReader and DataTableReader.  I needed something to measure time with.  I wrote a simple class Timer.  It worked just fine for me; however,  I find it hard to believe that .Net framework doesn’t have anything to measure time.  The reason for this post is that I hope that someone can suggest a better solution to my Timer class.&lt;br /&gt;Here’s there Timer class:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;public class Timer&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;long _start;&lt;br /&gt;&amp;nbsp;&amp;nbsp;long _stop;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public void Start()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_start = GetTimeInMilliseconds();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public void Stop()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_stop = GetTimeInMilliseconds();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public long TimeElapsed&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;get { return _stop - _start; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private long GetTimeInMilliseconds()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return DateTime.Now.Hour * 60 * 60 * 1000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ DateTime.Now.Minute * 60 * 1000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ DateTime.Now.Second * 1000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;+ DateTime.Now.Millisecond;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In case you’re interested in performance difference between SqlDataReader and DataTableReader.  Here’re my findings:&lt;br /&gt;On single CPU machine SqlDataReader was faster and it of course was expected.  However, on double CPU machine DataTableReader was slightly faster and this was a pleasant surprise for me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-4798397128667414574?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/4798397128667414574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=4798397128667414574' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/4798397128667414574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/4798397128667414574'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/04/was-checking-difference-in-performance.html' title='Timer class'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-2096032971590329819</id><published>2007-04-03T14:43:00.000-04:00</published><updated>2007-04-03T15:00:51.792-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MbUnit'/><title type='text'>Fixture order with MbUnit</title><content type='html'>&lt;span style="font-size:100%;"&gt;In my company we have some people who are using NUnit and some are using MbUnit. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;I’m personally a huge fan of MbUnit.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;span style="font-size:100%;"&gt;As a company we made a decision to use MbUnit only. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Someone at my company had a problem with MbUnit because it would run tests in random order. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;In his case he wanted to run TestFixtures in specific order. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;He took advantage that NUnit runs TestFixtures in alphabetical order and named the fixtures in order he wants to run them.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;span style="font-size:100%;"&gt;For example:&lt;/span&gt;          &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;A_Fixture&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;B_Fixture&lt;br /&gt;…&lt;br /&gt;N_Fixture&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;To help to solve his problem I reflected o&lt;/span&gt;&lt;span style="font-size:100%;"&gt;n MbUnit.Framework.dll, and found DependOnAttribute. &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;And that exactly what he wanted.&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;Here how it works.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;Let assume that we created four.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;          &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;A_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;Bad_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;B_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;B_Child_Fixture&lt;/span&gt;&lt;/p&gt;                &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style="font-family:courier new;"&gt;[&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;TestFixture&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:blue;"   &gt;public&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:blue;"   &gt;class&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;A_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;[&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;Test&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:blue;"   &gt;public&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt; &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:blue;"   &gt;void&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:100%;color:black;"   &gt; Success()&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;         &lt;/span&gt;{ }&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/p&gt;                  &lt;p class="MsoNormal"  style="font-family:courier new;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;TestFixture&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;class&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Bad_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Test&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;void&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; Failure()&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;                 &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Assert&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;.IsTrue(&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;false&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;            &lt;p class="MsoNormal"  style="font-family:courier new;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;   &lt;/o:p&gt;&lt;span style=""&gt;       &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Test&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;void&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; Success()&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                      &lt;p class="MsoNormal"  style="font-family:courier new;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;span style=""&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;TestFixture&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;     &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;DependsOn&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;(&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;typeof&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;(&lt;/span&gt;&lt;span style="font-size:100%;"&gt;A_Fixture&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;))]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;     &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;DependsOn&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;(&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;typeof&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;(&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Bad_Fixture&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;))]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;class&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;B_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt;     &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;           &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Test&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;void&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; Success()&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;           &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;           &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                    &lt;p class="MsoNormal"  style="font-family:courier new;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;span style=""&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;TestFixture&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;DependsOn&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;(&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;typeof&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;(&lt;/span&gt;&lt;span style="font-size:100%;"&gt;B_Fixture&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;))]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;class&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;B_Child_Fixture&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;span style=""&gt; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;[&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Test&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;public&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; &lt;/span&gt;&lt;span style=";font-size:100%;color:blue;"  &gt;void&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt; Success()&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;          &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;You can see that B_Child_Fixture depends o&lt;/span&gt;&lt;span style=";font-size:100%;color:black;"  &gt;n B_Fixture. B_Fixture at the same time depends on A_Fixture and Bad_Fixture.&lt;span style=""&gt;  &lt;/span&gt;As you can see one of the tests in Bad_Fixture will fail.&lt;span style=""&gt;  &lt;/span&gt;As a result B_Fixture and B_Child will not run.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:verdana;"&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;Here's the result in the MbUnit GUI.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" face="verdana"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_t5VWTGBrHaM/RhKjZ218e1I/AAAAAAAAAAU/BOvJu7HnKd0/s1600-h/DependsOn.png"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_t5VWTGBrHaM/RhKjZ218e1I/AAAAAAAAAAU/BOvJu7HnKd0/s320/DependsOn.png" alt="" id="BLOGGER_PHOTO_ID_5049277796849580882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=";font-size:100%;color:black;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-2096032971590329819?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/2096032971590329819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=2096032971590329819' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/2096032971590329819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/2096032971590329819'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/04/fixture-order-with-mbunit.html' title='Fixture order with MbUnit'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_t5VWTGBrHaM/RhKjZ218e1I/AAAAAAAAAAU/BOvJu7HnKd0/s72-c/DependsOn.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-8756547154071025453</id><published>2007-04-01T09:55:00.000-04:00</published><updated>2007-04-01T11:03:03.461-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>AddressAccessDeniedException, Vista &amp; Orcas</title><content type='html'>I just started playing with &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF&lt;/a&gt;. I created a simple service with VS 2005 on Vista and everything worked fine. Then I tried to use the same example on the same machine but use VS “Orcas” instead of VS 2005. Ooops. I got AddressAccessDeniedException. Thanks to Google I was able to find this &lt;a href="http://blogs.msdn.com/amitlale/archive/2007/01/29/addressaccessdeniedexception-cause-and-solution.aspx"&gt;article by Amit Lale&lt;/a&gt; where he explains the reason why the service doesn’t have rights to &lt;code&gt;http://localhost:8000/&lt;/code&gt; namespace and how to resolve this problem. Using his suggestion to use netsh utility, I was able to get rid of the exception. It also became very clear why it worked for VS 2005 and not VS “Orcas”. To be able to run VS 2005 on Vista I had to run VS 2005 as Administrator and when press Ctrl-F5 or F5 the service also ran as Administrator. However, you don’t need to run VS “Orcas” as an Administrator and the service of course runs as VS user that doesn’t have rights to listen to http port 8000.&lt;br /&gt;&lt;br /&gt;I wonder how many security issues like this we’re going to have. Unfortunately security and convinience don’t go together and we have to learn how to live with this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-8756547154071025453?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/8756547154071025453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=8756547154071025453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/8756547154071025453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/8756547154071025453'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/04/addressaccessdeniedexception-vista.html' title='AddressAccessDeniedException, Vista &amp; Orcas'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7688168599091858865.post-3854316439002829618</id><published>2007-03-21T09:37:00.000-04:00</published><updated>2007-03-21T09:42:06.398-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VS2005'/><title type='text'>Copy and Paste in Visual Studio and MS SQL Server Managment Studio.</title><content type='html'>I realized that many people don’t know how easy VS 2005 allows us to copy, cut &amp; paste. I’m sure that many of you know that but if you don’t, please give it try I’m sure that you’ll save some time.&lt;br /&gt;&lt;br /&gt;Even my mother knows Ctrl-C, Ctrl-X, &amp;amp; Ctrl-V shortcuts to copy, cut, &amp; paste. But do you know that you don’t need to select a line to copy/cut it. Just move cursor to the line you want to copy/cut and press Ctrl-C or Ctrl-X, the whole line will be in the clipboard.&lt;br /&gt;We copied a line, now we can paste it. The line always will be posted above the line where you cursor is. And you cursor can be in any position on that line; I repeat ANY position of the line.&lt;br /&gt;Do you know that you can cycle through the clipboard ring? Here’s the example where we going to swap ‘var1’ and ‘var2’ words:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;public void foo()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;string s1 = "var1";&lt;br /&gt;&amp;nbsp;&amp;nbsp;string s2 = "var2"&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;First double click on word ‘var1’, to select it and then press Ctrl-C, to put the selection into the clipboard.&lt;br /&gt;Next double click on word ‘var2 and press Ctrl-C again. Now we have both selections in the clipboard.&lt;br /&gt;Now double click on word ‘var1’ again and replace it with ‘var2’ by pressing Ctrl-V. So far nothing new.&lt;br /&gt;Last, double click on word ‘var2’ on the next line where we’re declaring variable s2 and press Ctrl-Shift-V twice (it means two times :) ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7688168599091858865-3854316439002829618?l=vadim-net.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://vadim-net.blogspot.com/feeds/3854316439002829618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7688168599091858865&amp;postID=3854316439002829618' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/3854316439002829618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7688168599091858865/posts/default/3854316439002829618'/><link rel='alternate' type='text/html' href='http://vadim-net.blogspot.com/2007/03/copy-and-paste-in-visual-studio-and-ms.html' title='Copy and Paste in Visual Studio and MS SQL Server Managment Studio.'/><author><name>Vadim</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
