<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Paulo Morgado : VisualStudio</title><link>http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx</link><description>Tags: VisualStudio</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Compiling .NET 1.1 Projects In Visual Studio 2008</title><link>http://msmvps.com/blogs/paulomorgado/archive/2009/10/26/compiling-net-1-1-projects-in-visual-studio-2008.aspx</link><pubDate>Sun, 25 Oct 2009 23:09:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1735161</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1735161</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1735161</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2009/10/26/compiling-net-1-1-projects-in-visual-studio-2008.aspx#comments</comments><description>&lt;p align="justify"&gt;After having put my &lt;strong&gt;&lt;a title="Microsoft .NET Framework" href="https://www.microsoft.com/net/" target="_blank"&gt;.NET&lt;/a&gt; 1.1&lt;/strong&gt; application running on the &lt;strong&gt;.NET 2.0&lt;/strong&gt; runtime (&lt;a title="Running .NET 1.1 Applications On .NET 2.0" href="http://msmvps.com/blogs/paulomorgado/archive/2009/10/20/running-net-1-1-applications-on-net-2-0.aspx" target="_blank"&gt;^&lt;/a&gt;), I’m planning on migrating it to &lt;strong&gt;.NET 2.0&lt;/strong&gt;, but not all at once.&lt;/p&gt;  &lt;p align="justify"&gt;Because I don’t want to have 2 solutions (one on &lt;strong&gt;Visual Studio 2003&lt;/strong&gt; for the &lt;strong&gt;.NET 1.1&lt;/strong&gt; assemblies and another on &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; for the &lt;strong&gt;.NET 2.0&lt;/strong&gt; assemblies) I decide to try using &lt;a title="MSBuild Extras - Toolkit for .NET 1.1" href="http://www.codeplex.com/MSBee" target="_blank"&gt;MSBee&lt;/a&gt; and have only one &lt;a title="Microsoft Visual Studio" href="http://www.microsoft.com/visualstudio/default.mspx" target="_blank"&gt;Visual Studio&lt;/a&gt; 2008 solution.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;MSBee&lt;/strong&gt; has a &lt;a title="Project Hosting for Open Source Software" href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt; project. You can download it from there or from &lt;a title="MSBuild Extras - Toolkit for .NET 1.1" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=E0D0776F-25C4-444A-A6B9-71D06826F5B4"&gt;Microsoft Downloads&lt;/a&gt;. Because the build on Microsoft Downloads seemed to be the most stable one, that was the one I downloaded and installed. The package comes with a &lt;a title="Microsoft Office Word" href="http://office.microsoft.com/word/default.aspx" target="_blank"&gt;Word&lt;/a&gt; document that explains all that needs to be done.&lt;/p&gt;  &lt;p align="justify"&gt;Before you can install and use &lt;strong&gt;MSBee&lt;/strong&gt; you’ll need to install the &lt;a title=".NET Framework SDK Version 1.1" href="http://www.microsoft.com/downloads/details.aspx?familyid=9B3A2CA6-3647-4070-9F41-A333C6B9181D" target="_blank"&gt;.NET 1.1 SDK&lt;/a&gt;.&lt;/p&gt;  &lt;p align="justify"&gt;Having everything installed, I just opened the &lt;strong&gt;Visual Studio 2003&lt;/strong&gt; solution in &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; and let it convert the solution and projects (near 30).&lt;/p&gt;  &lt;p align="justify"&gt;After the conversion, for building the projects with the &lt;strong&gt;.NET 1.1&lt;/strong&gt; &lt;a title="Visual C# Developer Center" href="http://msdn.microsoft.com/vcsharp/default.aspx" target="_blank"&gt;C#&lt;/a&gt; compiler, the project files need to be edited to add the override the default targets with the &lt;strong&gt;MSBee&lt;/strong&gt; ones by adding the &lt;strong&gt;MSBee&lt;/strong&gt; imports after the default imports for the language: &lt;/p&gt;  &lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Import &lt;/span&gt;&lt;span style="color:red;"&gt;Project&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(MSBuildBinPath)\Microsoft.CSharp.targets&lt;/span&gt;&amp;quot; &lt;span style="color:blue;font-size:larger;font-weight:bold;"&gt;/&amp;gt;
&lt;span&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Import &lt;/span&gt;&lt;span style="color:red;"&gt;Project&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.CSharp.targets&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Another change needed (for &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; - I don&amp;#39;t know if it was needed for &lt;strong&gt;Visual Studio 2005&lt;/strong&gt;) is the tools version. &lt;strong&gt;MSBee&lt;/strong&gt; needs version 2.0. To change that you&amp;#39;ll have to change the ToolsVersion attribute of the project’s root element:&lt;/p&gt;

&lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Project &lt;/span&gt;&lt;span style="color:red;"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Build&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;font-size:larger;font-weight:bold;text-decoration:underline;"&gt;2.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;&lt;strong&gt;MSBee&lt;/strong&gt; likes has own idea about output paths and I had set up custom output paths on my project. There’s information about this on the documentation but I decided to simply comment that out of the &lt;span style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;"&gt;$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.Common.targets&lt;/span&gt; file:&lt;/p&gt;

&lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Paulo
&amp;lt;Choose&amp;gt;
  &amp;lt;When Condition=&amp;quot; &amp;#39;$(BaseFX1_1OutputPath)&amp;#39; == &amp;#39;&amp;#39; &amp;quot;&amp;gt;
    &amp;lt;PropertyGroup&amp;gt;
      &amp;lt;OutputPath&amp;gt;bin\FX1_1\&amp;lt;/OutputPath&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;
  &amp;lt;/When&amp;gt;
  &amp;lt;Otherwise&amp;gt;
    &amp;lt;PropertyGroup&amp;gt;
      &amp;lt;OutputPath&amp;gt;$(BaseFX1_1OutputPath)&amp;lt;/OutputPath&amp;gt;
      &amp;lt;OutputPath Condition=&amp;quot; !HasTrailingSlash(&amp;#39;$(OutputPath)&amp;#39;) &amp;quot;&amp;gt;$(OutputPath)\&amp;lt;/OutputPath&amp;gt;
    &amp;lt;/PropertyGroup&amp;gt;
  &amp;lt;/Otherwise&amp;gt;
&amp;lt;/Choose&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;

&amp;lt;!-- &lt;/span&gt;&lt;span style="color:green;"&gt;Paulo
&amp;lt;PropertyGroup&amp;gt;
  &amp;lt;BaseIntermediateOutputPath&amp;gt;obj\FX1_1\&amp;lt;/BaseIntermediateOutputPath&amp;gt;
  &amp;lt;IntermediateOutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; == &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(BaseIntermediateOutputPath)$(Configuration)\&amp;lt;/IntermediateOutputPath&amp;gt;
  &amp;lt;IntermediateOutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; != &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\&amp;lt;/IntermediateOutputPath&amp;gt;

  &amp;lt;OutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; == &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(OutputPath)$(Configuration)\&amp;lt;/OutputPath&amp;gt;
  &amp;lt;OutputPath Condition=&amp;quot; &amp;#39;$(PlatformName)&amp;#39; != &amp;#39;AnyCPU&amp;#39; &amp;quot;&amp;gt;$(OutputPath)$(PlatformName)\$(Configuration)\&amp;lt;/OutputPath&amp;gt;
  
  &amp;lt;- Once OutputPath is determined, set OutDir to its value. -&amp;gt;
  &amp;lt;OutDir&amp;gt;$(OutputPath)&amp;lt;/OutDir&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;
&lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;This all seemed to work fine on my old Windows XP machine without any third party Visual Studio plug-ins, but when I tried it on my Windows Vista X64 machine, I came across some problems:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;div align="left"&gt;License Compiler&lt;/div&gt;

    &lt;p align="justify"&gt;Because I&amp;#39;m using &lt;a title="Infragistics - User Interface Components" href="http://www.infragistics.com/" target="_blank"&gt;Infragistics&lt;/a&gt;&amp;#39; controls, there&amp;#39;s a licences.licx file and the build will compile it. And that proved to be a problem.&lt;/p&gt;

    &lt;p align="justify"&gt;MSBee copies all the files it needs to the build process to a temporary folder, builds it in there and then copies the result to the output path.&lt;/p&gt;

    &lt;p align="justify"&gt;LC.exe seemed to never be able to find all the assemblies it needed. Searching seemed to me to be an old issue (even from the .NET 1.1 times) and the solution always pointed to not compile the license file. So, I commented that part out of the &lt;span style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;"&gt;$(MSBuildExtensionsPath)\MSBee\MSBuildExtras.FX1_1.Common.targets&lt;/span&gt; file:&lt;/p&gt;

    &lt;pre style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Target
    &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;CompileLicxFiles&lt;/span&gt;&amp;quot;&amp;#160; &lt;span style="color:red;"&gt;Condition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;#39;@(_LicxFile)&amp;#39;!=&amp;#39;&amp;#39;&lt;/span&gt;&amp;quot;
    &lt;span style="color:red;"&gt;DependsOnTargets&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(CompileLicxFilesDependsOn)&lt;/span&gt;&amp;quot;
    &lt;span style="color:red;"&gt;Inputs&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(MSBuildAllProjects);@(_LicxFile);@(ReferencePath);@(ReferenceDependencyPaths)&lt;/span&gt;&amp;quot;
    &lt;span style="color:red;"&gt;Outputs&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;$(IntermediateOutputPath)$(TargetFileName).licenses&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;

  &amp;lt;!--
  &lt;/span&gt;&lt;span style="color:green;"&gt;&amp;lt;LC
      Sources=&amp;quot;@(_LicxFile)&amp;quot;
      LicenseTarget=&amp;quot;$(TargetFileName)&amp;quot;
      OutputDirectory=&amp;quot;$(IntermediateOutputPath)&amp;quot;
      OutputLicense=&amp;quot;$(IntermediateOutputPath)$(TargetFileName).licenses&amp;quot;
      ReferencedAssemblies=&amp;quot;@(ReferencePath);@(ReferenceDependencyPaths)&amp;quot;
      ToolPath=&amp;quot;$(TargetFrameworkSDKDirectory)bin\&amp;quot;&amp;gt;

    &amp;lt;Output TaskParameter=&amp;quot;OutputLicense&amp;quot; ItemName=&amp;quot;CompiledLicenseFile&amp;quot;/&amp;gt;
    &amp;lt;Output TaskParameter=&amp;quot;OutputLicense&amp;quot; ItemName=&amp;quot;FileWrites&amp;quot;/&amp;gt;

  &amp;lt;/LC&amp;gt;
  &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Target&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
    &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;
    &lt;div align="left"&gt;Resource Generator&lt;/div&gt;

    &lt;p align="justify"&gt;Although this worked fine on the command line, inside &lt;strong&gt;Visual Studio&lt;/strong&gt; &lt;span style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;"&gt;ResGen.exe&lt;/span&gt; would throw some error and needed to be closed.&lt;/p&gt;

    &lt;p align="justify"&gt;Looking at the &lt;a title="Windows Application Log" href="http://technet.microsoft.com/library/ms157312.aspx" target="_blank"&gt;Windows Application Log&lt;/a&gt; I found out this:&lt;/p&gt;

    &lt;div align="justify"&gt;
      &lt;p style="font-family:consolas, &amp;#39;Courier New&amp;#39;, courier, monospace;overflow:auto;" class="code"&gt;Faulting application Resgen.exe, version 1.1.4322.573, time stamp 0x3e559b5f, faulting module MockWeaver.dll, version 0.0.0.0, time stamp 0x4adb072e, exception code 0xc0000005, fault offset 0x00018fac, process id 0x4a50, application start time 0x01ca53c14488a2fb. &lt;/p&gt;
    &lt;/div&gt;

    &lt;p align="justify"&gt;&lt;strong&gt;MockWeaver.dll&lt;/strong&gt; belongs to &lt;a title="Typemock Isolator - Isolate any .NET dependencies to make unit testing easy" href="http://www.typemock.com/" target="_blank"&gt;Isolator&lt;/a&gt; and I just disable it when building inside &lt;strong&gt;Visual Studio&lt;/strong&gt;. I was hoping to start using Isolator on this project, but, for now, I can&amp;#39;t.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p align="justify"&gt;I hope this can be of some help and, if you need more, you’ll probably find it at the &lt;strong&gt;MSBee&lt;/strong&gt;’s &lt;strong&gt;CodePlex&lt;/strong&gt; forum.&lt;/p&gt;

&lt;p align="justify"&gt;The bottom line is: &lt;strong&gt;You don’t need Visual Studio 2003!&lt;/strong&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1735161" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2008/default.aspx">VisualStudio2008</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET2.0/default.aspx">.NET2.0</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET1.1/default.aspx">.NET1.1</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSBuild/default.aspx">MSBuild</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2003/default.aspx">VisualStudio2003</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSBee/default.aspx">MSBee</category></item><item><title>Help Typemock Launch Its New Visual Basic .NET Friendly API And You Might Get A Free License</title><link>http://msmvps.com/blogs/paulomorgado/archive/2009/01/13/help-typemock-launch-its-new-visual-basic-net-friendly-api-and-you-might-get-a-free-license.aspx</link><pubDate>Tue, 13 Jan 2009 21:32:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1661503</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1661503</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1661503</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2009/01/13/help-typemock-launch-its-new-visual-basic-net-friendly-api-and-you-might-get-a-free-license.aspx#comments</comments><description>&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;&lt;a title="Typemock - Simplify Unit Testing!" href="http://cli.gs/Typemock" target="_blank"&gt;Typemock&lt;/a&gt; is announcing today a new version of Typemock Isolator (5.2).&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;One of the coolest features in the new version is the inclusion of a new &lt;a title="Unit Testing VB.NET" href="http://cli.gs/1DbBzH"&gt;VB .NET unit testing API&lt;/a&gt;. This &amp;#39;VB friendly&amp;#39; API was designed and written in VB.NET, for VB.NET developers. It uses the strengths of the VB.NET language to allow easy and intuitive use of the isolation API, for easier unit tests on any piece of .NET code.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;If you are you a blogger, webmaster, or internet columnist, you can get your free personal license by helping Typemock launch their new 5.2 version for Isolator - the best tool to unit test VB.NET applications.&lt;/p&gt;
&lt;p align="justify"&gt;Although this version is targeted to unit test VB.NET applications, &lt;a title="Visual C#" href="http://cli.gs/vcsharp" target="_blank"&gt;C#&lt;/a&gt; applications with unit tests built using &lt;a title="Microsoft Visual Studio" href="http://cli.gs/vstudio" target="_blank"&gt;Visual Studio&lt;/a&gt; 2005 can also benefit from this API.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;&lt;strong&gt;How can you get the free license?&lt;/strong&gt;&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;Post the text below on your blog (as is, with links) and &lt;a href="mailto:vb@typemock.com" target="_blank"&gt;tell them about it&lt;/a&gt; . If you are in the first 25 to mail them after posting, your license will be on its way!&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;If you have a &lt;strong&gt;VB.NET dedicated blog&lt;/strong&gt;, you&amp;#39;ll get a license automatically (even if more than 25 submit) during the first week of this announcement.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;A few simple requirements:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div align="justify"&gt;You must own a website, blog space or internet column, older than 2 months, or get permission from the owner of such a site. &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Your post must include the text below (including the links) between &lt;strong&gt;*Begin*&lt;/strong&gt; and &lt;strong&gt;*End*&lt;/strong&gt;. &lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p&gt;_&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;*Begin*&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvb"&gt;Programming Visual Basic&lt;/a&gt; applications?&lt;/p&gt;
&lt;p&gt;Typemock have released a new version of their &lt;a href="http://www.typemock.com/?utm_source=hp&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvb"&gt;unit testing&lt;/a&gt; tool, Typemock Isolator 5.2. &lt;br /&gt;This version includes a new friendly &lt;a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvb"&gt;VB.NET&lt;/a&gt; API which makes Isolator the best Isolation tool for &lt;a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvb"&gt;unit testing A Visual Basic (VB) .NET application&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Isolator now allows unit testing in VB or C# for many ‘hard to test’ technologies such as &lt;a href="http://typemock.com/sharepointpage.php?utm_source=spp&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvb"&gt;SharePoint&lt;/a&gt;, ASP.NET MVC, partial support for Silverlight, WPF, LINQ, WF, Entity Framework, &lt;a href="http://www.typemock.com/wcfpage.php?utm_source=wcfp&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvb"&gt;WCF unit testing&lt;/a&gt; and more.&lt;/p&gt;
&lt;p&gt;Note that the first 25 bloggers who blog this text in their blog and tell us about it, will get a &lt;strong&gt;Free Full Isolator license&lt;/strong&gt; (worth $139). If you post this in a &lt;strong&gt;VB.NET dedicated blog&lt;/strong&gt;, you&amp;#39;ll get a license automatically (even if more than 25 submit) during the first week of this announcement.&lt;/p&gt;
&lt;p&gt;Go ahead, click the following link for &lt;a href="http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html?utm_source=vb_blog&amp;amp;utm_medium=typeblog&amp;amp;utm_campaign=isolatorvbblog"&gt;more information&lt;/a&gt; on how to get your free license.&lt;/p&gt;
&lt;p&gt;_&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;*End*&lt;/strong&gt;&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;Once you post this in your site, just drop them a line at &lt;a href="mailto:vb@typemock.com"&gt;vb@typemock.com&lt;/a&gt; with your name and the post URL to get your free license.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;Hurry up – this offer is limited to the first 25 general bloggers, or to VB.NET dedicated bloggers who will post this in the first week.&lt;/p&gt;
&lt;p align="justify"&gt;--&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; This is an offer from &lt;a title="Typemock - Simplify Unit Testing!" href="http://www.typemock.com/" target="_blank"&gt;Typemock&lt;/a&gt; as announced at &lt;a title="http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html" href="http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html"&gt;http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html&lt;/a&gt;. I’m just a fan.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1661503" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualBasic/default.aspx">VisualBasic</category></item><item><title>Improving Debugging And Testing Through Assertions</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/12/03/improving-debugging-and-testing-through-assertions.aspx</link><pubDate>Wed, 03 Dec 2008 02:56:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1655603</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1655603</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1655603</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/12/03/improving-debugging-and-testing-through-assertions.aspx#comments</comments><description>&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Reading through the &lt;a title="The Typemock Insider" target="_blank" href="http://blog.typemock.com/"&gt;The Typemock Insider&lt;/a&gt; blog, I came across &lt;a title="Can Debugging Be Improved?" target="_blank" href="http://blog.typemock.com/2008/11/can-debugging-be-improved.html"&gt;this post&lt;/a&gt; from &lt;a title="Gil Zilberfeld" target="_blank" href="http://www.blogger.com/profile/18210181375618736629"&gt;Gil Zilberfeld&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;I myself tend to fall in Gil’s practice (&amp;quot;binary search&amp;quot; debugging), but I don’t think &lt;a title="Kent Beck" target="_blank" href="http://threeriversinstitute.org/Kent%20Beck.htm"&gt;Kent Beck&lt;/a&gt; has the right &lt;a title="Hit &amp;#39;em High, Hit &amp;#39;em Low" target="_blank" href="http://www.threeriversinstitute.org/HitEmHighHitEmLow.html"&gt;solution&lt;/a&gt;.&lt;/p&gt; &lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Gil’s suggestion of using &lt;a title="Typemock Isolator - Serious Development" target="_blank" href="http://www.typemock.com/Product.html"&gt;Isolator&lt;/a&gt; is tempting (I don’t miss an opportunity to use it), but still not my favorite one.&lt;/p&gt; &lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;I prefer to use &lt;a title="Assertions in Managed Code" target="_blank" href="http://msdn.microsoft.com/library/70ab2522-6486-4076-a1a9-e0f11cd0f3a1.aspx"&gt;debug assertions&lt;/a&gt;. Debug assertions can be used when running a debug version of the application to pop-up assertion messages and when running unit tests to fail tests.&lt;/p&gt; &lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;In order to use debug assertions in unit tests a “special” &lt;a title="Trace Listeners" target="_blank" href="http://msdn.microsoft.com/library/444b0d33-67ea-4c36-9e94-79c50f839025.aspx"&gt;trace listener&lt;/a&gt; is needed to make the test fail when its &lt;a title="TraceListener..::.Fail Method" target="_blank" href="http://msdn.microsoft.com/library/66a83512-a8fa-c745-bb43-a94518148fa4.aspx"&gt;Fail method&lt;/a&gt; is called.&lt;/p&gt; &lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;UnitTestTraceListener &lt;/span&gt;: &lt;span style="color:blue;"&gt;global&lt;/span&gt;::System.Diagnostics.&lt;span style="color:#2b91af;"&gt;DefaultTraceListener
&lt;/span&gt;{
     &lt;span style="color:blue;"&gt;public &lt;/span&gt;UnitTestTraceListener() : &lt;span style="color:blue;"&gt;base&lt;/span&gt;()
    {
        &lt;span style="color:blue;"&gt;this&lt;/span&gt;.Name = &lt;span style="color:#a31515;"&gt;&amp;quot;UnitTest&amp;quot;&lt;/span&gt;;
        &lt;span style="color:blue;"&gt;this&lt;/span&gt;.AssertUiEnabled = &lt;span style="color:blue;"&gt;false&lt;/span&gt;;
    }

    &lt;span style="color:blue;"&gt;public override void &lt;/span&gt;Fail(&lt;span style="color:blue;"&gt;string &lt;/span&gt;message, &lt;span style="color:blue;"&gt;string &lt;/span&gt;detailMessage)
    {
        Microsoft.VisualStudio.TestTools.UnitTesting.&lt;span style="color:#2b91af;"&gt;Assert&lt;/span&gt;.Fail(&lt;span style="color:#a31515;"&gt;&amp;quot;Debug.Assert Failed: &amp;quot; &lt;/span&gt;+ message + &lt;span style="color:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ detailMessage);
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Now, all you need to do is register it.&lt;/p&gt;
&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;Registering the trace listener can either be done in code:&lt;/p&gt;
&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;

&lt;pre class="code"&gt;System.Diagnostics.&lt;span style="color:#2b91af;"&gt;Trace&lt;/span&gt;.Listeners.Remove(&lt;span style="color:#a31515;"&gt;&amp;quot;Default&amp;quot;&lt;/span&gt;);
System.Diagnostics.&lt;span style="color:#2b91af;"&gt;Trace&lt;/span&gt;.Listeners.Add(&lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;UnitTestTraceListener&lt;/span&gt;());&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;or configuration:&lt;/p&gt;
&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.diagnostics&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;assert &lt;/span&gt;&lt;span style="color:red;"&gt;assertuienabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;trace&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;listeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;clear&lt;/span&gt;&lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;UnitTest&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;UnitTestTraceListener&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;listeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;trace&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.diagnostics&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;

&lt;p align="justify"&gt;And if I’m using Isolator I have the take in account the accesses made in the call to the Assert method. More fun to me.&lt;/p&gt;
&lt;a href="http://PauloMorgad.NET/"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1655603" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Debugging/default.aspx">Debugging</category></item><item><title>The Future Of C#</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/12/03/the-future-of-c.aspx</link><pubDate>Wed, 03 Dec 2008 01:17:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1655592</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1655592</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1655592</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/12/03/the-future-of-c.aspx#comments</comments><description>&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;If you were able to attend this session at &lt;a title="Microsoft PDC" target="_blank" href="http://microsoftpdc.com/"&gt;PDC&lt;/a&gt; or &lt;a title="Tech-Ed EMEA Developers 2008" target="_blank" href="http://www.microsoft.com/emea/teched2008/developer/"&gt;Tech-Ed EMEA Developers&lt;/a&gt;, you were presented with a first class presentation of the future of &lt;a title="Visual C#" target="_blank" href="http://msdn.microsoft.com/vcsharp/"&gt;C#&lt;/a&gt;, presented, respectively, by Anders Hejlsberg and &lt;a title="The Mellow Musings of Dr. T" target="_blank" href="http://blogs.msdn.com/madst/"&gt;Mads Torgersen&lt;/a&gt;.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;For the near future (&lt;a title=".NET Framework Developer Center" target="_blank" href="http://msdn.microsoft.com/netframework/"&gt;.NET&lt;/a&gt; 4.0) C# will have:&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Dynamically Typed Objects&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Optional and Named Parameters&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Improved COM Interoperability&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;Co- and Contra-variance&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;A preview of the compiler as a service was shown, but that’s not for the .NET 4.0 / Visual Studio 2010 timeframe. Probably, not even for the next.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;Starting with .NET 4.0, C# and &lt;a title="Visual Basic Developer Center" target="_blank" href="http://msdn.microsoft.com/vbasic/"&gt;Visual Basic&lt;/a&gt; will converge in terms of features and follow a path of co-evolution going into the future.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;No! That doesn’t mean that XML literals will be in C# in a foreseeable future. What that means is that the above list also applies to Visual Basic.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;p align="justify"&gt;Talking of Visual Basic evolution, the &lt;strong&gt;_&lt;/strong&gt; line continuation character has been retired. If you have any use for the underscore, please visit &lt;a title="http://www.unemployedunderscores.com/" href="http://www.unemployedunderscores.com/"&gt;http://www.unemployedunderscores.com/&lt;/a&gt;.&lt;/p&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;h4&gt;Resources:&lt;/h4&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a title="C# Future" target="_blank" href="http://code.msdn.microsoft.com/csharpfuture"&gt;C# Future&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a title="Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP)" target="_blank" href="https://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814"&gt;Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview (CTP)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a title="Charlie Calvert&amp;#39;s Community Blog" target="_blank" href="http://blogs.msdn.com/charlie/"&gt;Charlie Calvert&amp;#39;s Community Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;PDC Session: TL16 - The Future of C#&lt;/div&gt;
&lt;div align="justify"&gt;Presenter: Anders Hejlsberg &lt;/div&gt;
&lt;div align="justify"&gt;&lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/TL16.pptx"&gt;PPTX&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL16.wmv"&gt;WMV-HQ&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV/TL16.wmv"&gt;WMV&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/ZUNE/TL16.wmv"&gt;Zune&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/MP4/TL10.mp4"&gt;MP4&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div align="justify"&gt;PDC Session: &lt;a title="Future Directions for Microsoft Visual Basic" target="_blank" href="http://channel9.msdn.com/pdc2008/TL12/"&gt;TL12 - Future Directions for Microsoft Visual Basic&lt;/a&gt;&lt;/div&gt;
&lt;div align="justify"&gt;Presenter(s): Paul Vick, Lucian Wischik&lt;/div&gt;
&lt;div align="justify"&gt;&lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/PPTX/TL12.pptx"&gt;PPTX&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV-HQ/TL12.wmv"&gt;WMV-HQ&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/WMV/TL12.wmv"&gt;WMV&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/ZUNE/TL12.wmv"&gt;Zune&lt;/a&gt; | &lt;a href="http://mschnlnine.vo.llnwd.net/d1/pdc08/MP4/TL10.mp4"&gt;MP4&lt;/a&gt; &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://paulomorgado.net/"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1655592" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PDC/default.aspx">PDC</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechEd2008/default.aspx">TechEd2008</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualBasic/default.aspx">VisualBasic</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PDC2008/default.aspx">PDC2008</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2010/default.aspx">VisualStudio2010</category></item><item><title>PDC And Tech-Ed Wrap-Up</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/12/02/pdc-and-tech-ed-wrap-up.aspx</link><pubDate>Tue, 02 Dec 2008 00:15:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1655515</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1655515</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1655515</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/12/02/pdc-and-tech-ed-wrap-up.aspx#comments</comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;(It might seem a bit late for this, but, lately, I’ve been having a lot on my mind. So here it goes.)&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;This was my first &lt;a title="Microsoft PDC" target="_blank" href="http://microsoftpdc.com/"&gt;PDC&lt;/a&gt;. It was just as I had been told.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;For those who don’t know, the PDC is all about the future. The near future (&lt;a title=".NET Framework Developer Center" target="_blank" href="http://msdn.microsoft.com/netframework/"&gt;.NET&lt;/a&gt; 4.0 and Windows 7) and the further future (&lt;a title="Azure Services Platform" target="_blank" href="https://www.microsoft.com/azure/"&gt;Windows Azure&lt;/a&gt;, &lt;a title="&amp;quot;Oslo&amp;quot; Developer Center" target="_blank" href="http://msdn.microsoft.com/oslo/"&gt;“Oslo”&lt;/a&gt;, &lt;a title="Windows Server Application Server Roadmap" target="_blank" href="https://www.microsoft.com/net/Dublin.aspx"&gt;“Dublin”&lt;/a&gt;, “Geneva”).&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Next year’s PDC (Yes! Apparently, there’ll be one next year) will be also held in Los Angeles from November 17 to 20, and (I suspect) will be the commercial launch of the Azure Services Platform and a better story to tell about “Oslo”.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Tech-ED EMEA Developers, on the other hand, is more about the present and the near future. But, this year, attendees were able to have a sneak peek at what had bee shown at the PDC.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Next year’s Tech-ED EMEA Developers will be held in Berlin from November 2 to 6. Probably, like in 2006, it will be the launch of .NET 4.0 and &lt;a title="Microsoft Visual Studio" target="_blank" href="http://msdn.microsoft.com/vstudio/"&gt;Visual Studio&lt;/a&gt; 2010.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;And I intend to attend both.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1655515" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Events/default.aspx">Events</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechEd/default.aspx">TechEd</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PDC/default.aspx">PDC</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechEd2008/default.aspx">TechEd2008</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PDC2008/default.aspx">PDC2008</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PDC2009/default.aspx">PDC2009</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Windows7/default.aspx">Windows7</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WindowsAzure/default.aspx">WindowsAzure</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2010/default.aspx">VisualStudio2010</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/_2200_Geneva_2200_/default.aspx">"Geneva"</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechEd2009/default.aspx">TechEd2009</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/_2200_Dublin_2200_/default.aspx">"Dublin"</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/_2200_Oslo_2200_/default.aspx">"Oslo"</category></item><item><title>MSDN Ramp Up Program</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/11/07/msdn-ramp-up-program.aspx</link><pubDate>Fri, 07 Nov 2008 00:53:35 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1653334</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1653334</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1653334</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/11/07/msdn-ramp-up-program.aspx#comments</comments><description>    &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="center"&gt;         &lt;a href="http://www.MyRampUp.com"&gt;             &lt;img title="" border="0" alt="MSDN Ramp Up Program" src="http://i.msdn.microsoft.com/bb352986.RampUp_logo.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="justify"&gt;         I just came across this: &lt;a title="MSDN Ramp Up Program" href="http://www.MyRampUp.com"&gt;             www.MyRampUp&lt;/a&gt;&lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="justify"&gt;         Ramp Up is a free, online, community-based program that can help users save time         in learning Microsoft technology.&lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="justify"&gt;         The easy-to-access content (provided by subject-matter gurus) is specifically tailored         to the Ramp Up program, and offered in a variety of forms (whitepaper, v-lab, codecast         and slidecast).&lt;/p&gt;     &lt;p align="center"&gt;         &lt;a href="http://www.MyRampUp.com"&gt;             &lt;img title="" border="0" alt="Program Guide" src="http://i.msdn.microsoft.com/bb352986.program_guide.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="justify"&gt;         The currently available routes are:&lt;/p&gt;     &lt;p align="center"&gt;         &lt;a href="http://msdn.microsoft.com/rampup/dd221355.aspx"&gt;             &lt;img title="SharePoint for Developers track - learn more" border="0" alt="SharePoint for Developers track - learn more" src="http://i.msdn.microsoft.com/bb352986.track_blue_out.jpg" /&gt;&lt;/a&gt; &lt;a href="http://PauloMorgado.NET/"&gt;                 &lt;/a&gt;     &lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="center"&gt;         &lt;a href="http://msdn.microsoft.com/rampup/cc562987.aspx"&gt;             &lt;img title="Visual Studio 2008 track - learn more" border="0" alt="Visual Studio 2008 track - learn more" src="http://i.msdn.microsoft.com/bb352986.track_yellow2_out.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="center"&gt;         &lt;a href="http://msdn.microsoft.com/rampup/bb421265.aspx"&gt;             &lt;img title="Aspiring Developer - learn more" border="0" alt="Aspiring Developer - learn more" src="http://i.msdn.microsoft.com/bb352986.track_green_out.jpg" /&gt;&lt;/a&gt;     &lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="center"&gt;         &lt;a href="http://msdn.microsoft.com/rampup/bb421266.aspx"&gt;             &lt;img title="Success with Java and C# - learn more" border="0" alt="Success with Java and C# - learn more" src="http://i.msdn.microsoft.com/bb352986.track_yellow_out.jpg" /&gt;&lt;/a&gt;     &lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="center"&gt;         &lt;a href="http://msdn.microsoft.com/rampup/bb421267.aspx"&gt;             &lt;img title="Next Level Visual Basic - learn more" border="0" alt="Next Level Visual Basic - learn more" src="http://i.msdn.microsoft.com/bb352986.track_orange_out.jpg" /&gt;&lt;/a&gt;     &lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="center"&gt;         &lt;a href="http://msdn.microsoft.com/rampup/bb421268.aspx"&gt;             &lt;img title="Next Level Microsoft.NET - learn more" border="0" alt="Next Level Microsoft.NET - learn more" src="http://i.msdn.microsoft.com/bb352986.track_purple_out.jpg" /&gt;&lt;/a&gt;     &lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;     &lt;p align="justify"&gt;         Currently, there are no assessments in the program, so it&amp;#39;s quicker than ever to         graduate and receive the reward (25% off on certification and 50% off on e-Learning         - only for graduates of Ramp Up).&lt;/p&gt;     &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1653334" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Training/default.aspx">Training</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualBasic/default.aspx">VisualBasic</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2008/default.aspx">VisualStudio2008</category></item><item><title>Clone Detective For Visual Studio</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/08/28/clone-detective-for-visual-studio.aspx</link><pubDate>Thu, 28 Aug 2008 22:41:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1646133</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1646133</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1646133</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/08/28/clone-detective-for-visual-studio.aspx#comments</comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="center"&gt;&lt;a title="Clone Detective for Visual Studio" href="http://www.codeplex.com/CloneDetectiveVS" target="_blank"&gt;&lt;img title="Clone Detective for Visual Studio" alt="Clone Detective for Visual Studio" src="http://www.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=CloneDetectiveVS&amp;amp;DownloadId=41494" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;&lt;a title="Clone Detective for Visual Studio" href="http://www.codeplex.com/CloneDetectiveVS" target="_blank"&gt;Clone Detective&lt;/a&gt; is a tool that integrates with &lt;a title="Microsoft Visual Studio" href="http://msdn.microsoft.com/vstudio/" target="_blank"&gt;Visual Studio&lt;/a&gt; and uses the &lt;a title="ConQAT (Continuous Quality Assessment Toolkit)" href="http://conqat.cs.tum.edu/" target="_blank"&gt;ConQAT&lt;/a&gt; (&lt;strong&gt;Con&lt;/strong&gt;tinuous &lt;strong&gt;Q&lt;/strong&gt;uality &lt;strong&gt;A&lt;/strong&gt;ssessment &lt;strong&gt;T&lt;/strong&gt;oolkit) to analyze &lt;a title="Visual C#" href="http://msdn.microsoft.com/vcsharp/" target="_blank"&gt;C#&lt;/a&gt; projects and search for duplicated source code.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p align="justify"&gt;Watch the &lt;a title="Clone Detective Videos" href="http://www.codeplex.com/CloneDetectiveVS/Wiki/View.aspx?title=Videos" target="_blank"&gt;videos&lt;/a&gt; and see if this is the tool you were looking for.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1646133" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodePlex/default.aspx">CodePlex</category></item><item><title>Typemock Isolator 5.0 Is Out With Its New AAA API</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/08/20/typemock-isolator-5-0-is-out-with-its-new-aaa-api.aspx</link><pubDate>Wed, 20 Aug 2008 21:33:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1645278</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1645278</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1645278</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/08/20/typemock-isolator-5-0-is-out-with-its-new-aaa-api.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Typemock - Simplify Unit Testing!" href="http://www.typemock.com/" target="_blank"&gt;Typemock&lt;/a&gt; has released version 5.0 of its unit testing tool: &lt;a title="Typemock Isolator - Serious Development" href="http://www.typemock.com/Product.html" target="_blank"&gt;Isolator&lt;/a&gt;. Check out the &lt;a title="Typemock Isolator 5.0 Released" href="http://blog.typemock.com/2008/08/typemock-isolator-50-released.html" target="_blank"&gt;release notes&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This new version comes with a new API: &lt;strong&gt;A&lt;/strong&gt;rrange&lt;strong&gt; A&lt;/strong&gt;ct &lt;strong&gt;A&lt;/strong&gt;ssert:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="Isolator AAA API - The Basics" href="http://blog.typemock.com/2008/08/isolator-aaa-api-basics.html" target="_blank"&gt;Isolator AAA API - The Basics&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="Isolator AAA: Creating Fakes" href="http://blog.typemock.com/2008/08/isolator-aaa-creating-fakes.html" target="_blank"&gt;Isolator AAA: Creating Fakes&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’ll have to say that I liked &lt;strong&gt;Isolator&lt;/strong&gt; better over &lt;strong&gt;Isolate&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;Also new in this version is the inclusion of the help file in the installation package.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1645278" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category></item><item><title>.NET 3.5 SP1, VS2008 SP1 And TFS2008 SP1 Released</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/08/12/net-3-5-sp1-vs2008-sp1-and-tfs2008-sp1-released.aspx</link><pubDate>Tue, 12 Aug 2008 00:20:32 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1644322</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1644322</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1644322</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/08/12/net-3-5-sp1-vs2008-sp1-and-tfs2008-sp1-released.aspx#comments</comments><description>&lt;p&gt;&lt;a title="Microsoft .NET Framework 3.5 Service Pack 1" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ab99342f-5d1a-413d-8319-81da479ab0d7" target="_blank"&gt;Microsoft .NET Framework 3.5 Service Pack 1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Microsoft Visual Studio 2008 Service Pack 1 (iso)" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61" target="_blank"&gt;Microsoft Visual Studio 2008 Service Pack 1 (iso)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Visual Studio 2008 Team Foundation Server Service Pack 1" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9e40a5b6-da41-43a2-a06d-3cee196bfe3d" target="_blank"&gt;Visual Studio 2008 Team Foundation Server Service Pack 1&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1644322" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2008/default.aspx">VisualStudio2008</category></item><item><title>Visual Studio 2008 Service Pack 1 Expected Next Week</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/08/08/visual-studio-2008-service-pack-1-expected-next-week.aspx</link><pubDate>Fri, 08 Aug 2008 00:26:40 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1643853</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1643853</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1643853</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/08/08/visual-studio-2008-service-pack-1-expected-next-week.aspx#comments</comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;According to the &lt;a title="MSDN Subscriptions home page" href="http://msdn.microsoft.com/subscriptions/default.aspx" target="_blank"&gt;MSDN Subscriptions home page&lt;/a&gt;, we should expect &lt;a title="Microsoft Visual Studio 2008" href="http://msdn.microsoft.com/vstudio/" target="_blank"&gt;Visual Studio 2008&lt;/a&gt; Service Pack 1 availability after August 11, 2008.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1643853" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio2008/default.aspx">VisualStudio2008</category></item><item><title>Using Random Values For Unit Testing</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/06/24/using-random-values-for-unit-testing.aspx</link><pubDate>Mon, 23 Jun 2008 23:40:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1637133</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1637133</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1637133</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/06/24/using-random-values-for-unit-testing.aspx#comments</comments><description>&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;When writing my unit tests I don’t like to use hard coded fixed values because I either end up using the same values or, because of that, tests may succeed by coincidence.&lt;/p&gt; &lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;  &lt;p&gt;Over time, I have developed an helper class to generate random values for testing.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;namespace &lt;/span&gt;PauloMorgado.VisualStudio.TestTools.UnitTesting
{
    &lt;span style="color:blue;"&gt;public static class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;RandomGenerator
    &lt;/span&gt;{
        &lt;span style="color:blue;"&gt;public static bool &lt;/span&gt;Boolean();
        &lt;span style="color:blue;"&gt;public static string &lt;/span&gt;String();
        &lt;span style="color:blue;"&gt;public static string &lt;/span&gt;String(&lt;span style="color:blue;"&gt;string &lt;/span&gt;prefix);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int8();
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int8(&lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int8(&lt;span style="color:blue;"&gt;short &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int16();
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int16(&lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static short &lt;/span&gt;Int16(&lt;span style="color:blue;"&gt;short &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;short &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static int &lt;/span&gt;Int32();
        &lt;span style="color:blue;"&gt;public static int &lt;/span&gt;Int32(&lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static int &lt;/span&gt;Int32(&lt;span style="color:blue;"&gt;int &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum Enum&amp;lt;TEnum&amp;gt;();
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum EnumFlagsWith&amp;lt;TEnum&amp;gt;(TEnum flagsToAdd);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum EnumFlagsWithout&amp;lt;TEnum&amp;gt;(TEnum flagsToRemove);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum Enum&amp;lt;TEnum&amp;gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;TEnum Enum&amp;lt;TEnum&amp;gt;(&lt;span style="color:blue;"&gt;int &lt;/span&gt;minValue, &lt;span style="color:blue;"&gt;int &lt;/span&gt;maxValue);
        &lt;span style="color:blue;"&gt;public static &lt;/span&gt;System.&lt;span style="color:#2b91af;"&gt;Guid &lt;/span&gt;Guid();
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p&gt;This is something that I would like to find on mock frameworks (like &lt;a title="Typemock Isolator - Serious Development" href="http://www.typemock.com/Product.html" target="_blank"&gt;Typemock Isolator&lt;/a&gt;, &lt;a title="Rhino.Mocks" href="http://www.ayende.com/projects/rhino-mocks.aspx" target="_blank"&gt;Rhino.Mocks&lt;/a&gt; or &lt;a title="MoQ" href="http://code.google.com/p/moq/" target="_blank"&gt;MoQ&lt;/a&gt;).&lt;/p&gt;
&lt;a href="http://PauloMorgado.NET/"&gt;&lt;/a&gt;

&lt;p&gt;It’s still a work in progress, but if you want to try it, it’s on &lt;a title="Paulo Morgado&amp;#39;s MSDN Code Gallery" href="http://code.msdn.microsoft.com/PauloMorgado" target="_blank"&gt;my MSDN Code Gallery&lt;/a&gt;: &lt;a title="Paulo Morgado - Random Generator For Unit Testing" href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=PauloMorgado&amp;amp;ReleaseId=1196" target="_blank"&gt;Random Generator For Unit Testing&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1637133" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category></item><item><title>Microsoft Source Analysis for C# (aka StyleCop)</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/06/05/microsoft-source-analysis-for-c-aka-stylecop.aspx</link><pubDate>Wed, 04 Jun 2008 23:12:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1631418</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1631418</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1631418</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/06/05/microsoft-source-analysis-for-c-aka-stylecop.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’ve learned from a &lt;a title="Hugo Ribeiro" href="http://www.arquitecturadesoftware.org/blogs/hugoribeiro/default.aspx" target="_blank"&gt;fellow&lt;/a&gt; &lt;a title="Grupo de Arquitectura de Software Português" href="http://www.arquitecturadesoftware.org/" target="_blank"&gt;GASP&lt;/a&gt;er of the release of &lt;a title="Announcing the release of Microsoft Source Analysis for C#" href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx" target="_blank"&gt;Microsoft Source Analysis for C# (aka StyleCop)&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It’s still a work in progress but it’s already very useful.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1631418" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>Typemock Isolator v4.2.4 Released</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/05/19/typemock-isolator-v4-2-4-released.aspx</link><pubDate>Sun, 18 May 2008 23:37:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1624206</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1624206</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1624206</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/05/19/typemock-isolator-v4-2-4-released.aspx#comments</comments><description>&lt;p&gt;&lt;a title="Typemock - Simplify Unit Testing!" href="http://www.typemock.com/" target="_blank"&gt;Typemock&lt;/a&gt; released version 4.2.4 of its &lt;a title="Typemock Isolator - Serious Development" href="http://www.typemock.com/Product.html" target="_blank"&gt;Isolator mock framework&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You can check out the release notes in &lt;a title="The Typemock Insider blog" href="http://blog.typemock.com/2008/05/typemock-isolator-v424-released.html" target="_blank"&gt;The Typemock Insider blog&lt;/a&gt; and download it from the &lt;a title="Typemock Isolator Download page" href="http://www.typemock.com/Downloads.php" target="_blank"&gt;Typemock Isolator Download page&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1624206" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category></item><item><title>Stretching Type Inference</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/04/22/stretching-type-inference.aspx</link><pubDate>Tue, 22 Apr 2008 00:35:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1598814</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1598814</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1598814</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/04/22/stretching-type-inference.aspx#comments</comments><description>&lt;p&gt;&lt;u&gt;&lt;strong&gt;Note:&lt;/strong&gt; Code in &lt;em&gt;italics&lt;/em&gt; is not actual C# 3.0 syntax.&lt;/u&gt;&lt;/p&gt;
&lt;h4&gt;Local Variable Type Inference&lt;/h4&gt;
&lt;p&gt;&lt;a title="Visual C#" href="http://msdn2.microsoft.com/library/kx37x362.aspx" target="_blank"&gt;C# 3.0&lt;/a&gt; brought us local variable type inference mainly because of &lt;a title="Language-Integrated Query (LINQ)" href="http://msdn2.microsoft.com/library/bb397926.aspx" target="_blank"&gt;LINQ&lt;/a&gt;. The output of a query can vary from an &lt;a class="" href="http://msdn2.microsoft.com/library/6201cf3a-7201-f0c7-c36d-81905a027d15.aspx" target="_blank"&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/a&gt; or an &lt;a class="" href="http://msdn2.microsoft.com/library/6201cf3a-7201-f0c7-c36d-81905a027d15.aspx" target="_blank"&gt;IQueryable&amp;lt;T&amp;gt;&lt;/a&gt; to a single instance of T where T can even be a projection which means that its type is an anonymous type.&lt;/p&gt;
&lt;p&gt;Take the following query as an example:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;from &lt;/span&gt;p &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;persons
&lt;span style="COLOR:blue;"&gt;select new &lt;/span&gt;{ Name = p.FirstName + &lt;span style="COLOR:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ p.LastName, Age = p.Age };&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;If persons is an &lt;font face="Consolas"&gt;&lt;strong&gt;IEnumerable&amp;lt;Person&amp;gt;&lt;/strong&gt;&lt;/font&gt;, the output of the query will be an &lt;font face="Consolas"&gt;&lt;strong&gt;IEnumerable&amp;lt;T&amp;gt;&lt;/strong&gt;&lt;/font&gt; where &lt;font face="Consolas"&gt;&lt;strong&gt;T&lt;/strong&gt;&lt;/font&gt; is an anonymous type.&lt;/p&gt;
&lt;p&gt;Now the question that arises is: How do I declare a variable to receive the output of the query?&lt;/p&gt;
&lt;p&gt;The solution was the introduction of the new &lt;a title="var (C# Reference)" href="http://msdn2.microsoft.com/library/0777850a-2691-4e3e-927f-0c850f5efe15.aspx" target="_blank"&gt;var keyword&lt;/a&gt; that instructs the compiler to determine the type of the output of the query. Now, all it takes to declare a variable to receive the output of the query is:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;var &lt;/span&gt;q =
    &lt;span style="COLOR:blue;"&gt;from &lt;/span&gt;p &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;persons
    &lt;span style="COLOR:blue;"&gt;select new &lt;/span&gt;{ Name = p.FirstName + &lt;span style="COLOR:#a31515;"&gt;&amp;quot; &amp;quot; &lt;/span&gt;+ p.LastName, Age = p.Age };&lt;/pre&gt;
&lt;p&gt;Since the compiler can infer the type of something that looks so complex, it&amp;#39;s obvious that it can infer the type of something so straightforward as:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;var &lt;/span&gt;v = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;&amp;gt;();&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;It&amp;#39;s obvious that this is the same as:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;&amp;gt; v = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;&amp;gt;();&lt;/pre&gt;
&lt;p&gt;with less typing and margin for typing errors.&lt;/p&gt;
&lt;h4&gt;Field Type Inference&lt;/h4&gt;
&lt;p&gt;The same technique could be applied to field inference:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;class &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Class
&lt;/span&gt;{
&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;private&lt;/span&gt; someDicionary = &lt;span style="COLOR:blue;"&gt;new &lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;&lt;/span&gt;();&lt;/em&gt;

    &lt;span style="COLOR:green;"&gt;// ...
&lt;/span&gt;}&lt;/pre&gt;
&lt;p&gt;with the same benefits of less typing and margin for typing errors.&lt;/p&gt;
&lt;p&gt;If field type inference were to be applied to public fields, one constraint must be enforced though: the inferenced type cannot be or have as a type parameter an anonymous type.&lt;/p&gt;
&lt;p&gt;But I wouldn&amp;#39;t recommend that because it would be easy and not obvious that a small change in the field initialization could bring unobvious changes to the public interface of the class.&lt;/p&gt;
&lt;h4&gt;Method Output&amp;nbsp; And Parameter Type Inference&lt;/h4&gt;
&lt;p&gt;Since type inference would be possible outside of methods, should it be allowed on method output and parameter values? Something like this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;class &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;SomeClass
&lt;/span&gt;{
&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;private &lt;/span&gt;listOfStuff = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Stuff&lt;/span&gt;&amp;gt;();&lt;/em&gt;

    &lt;span style="COLOR:blue;"&gt;public void &lt;/span&gt;DoIt()
    {
        &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(CreateList(&lt;span style="COLOR:blue;"&gt;out this&lt;/span&gt;.listOfStuff))
        {
            ProcessList(&lt;span style="COLOR:blue;"&gt;ref this&lt;/span&gt;.listOfStuff);

            &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.listOfStuff = TransformList(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.listOfStuff);
        }
    }

&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;private bool &lt;/span&gt;CreateList(&lt;font color="#0000ff"&gt;var&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;out &lt;/span&gt;list)&lt;/em&gt;
    {
        list = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Stuff&lt;/span&gt;&amp;gt;();
        &lt;span style="COLOR:blue;"&gt;return true&lt;/span&gt;;
    }

&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;private void &lt;/span&gt;ProcessList(&lt;font color="#0000ff"&gt;var&lt;/font&gt; &lt;span style="COLOR:blue;"&gt;ref &lt;/span&gt;list)&lt;/em&gt;
    {
        &lt;span style="COLOR:green;"&gt;// ... &lt;/span&gt;
    }

&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;private &lt;/span&gt;&lt;font color="#0000ff"&gt;var&lt;/font&gt; TransformList(&lt;font color="#0000ff"&gt;var&lt;/font&gt; list)&lt;/em&gt;
    {
        &lt;span style="COLOR:blue;"&gt;return &lt;/span&gt;list;
    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;which look very strange and confusing, to say the least. We shouldn&amp;#39;t go there.&lt;/p&gt;
&lt;h4&gt;Constructor Inference&lt;/h4&gt;
&lt;p&gt;Every since I saw local variable type inference the first time, I have the feeling that more could have been done.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s look at this hypothetical set of declarations:&lt;/p&gt;&lt;pre class="code"&gt;&lt;em&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;&amp;gt; v = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;();
&lt;span style="COLOR:#2b91af;"&gt;Point &lt;/span&gt;p = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;(1, 2);&lt;/em&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;It&amp;#39;s as easy to the compiler or a human reading the code that this is the same as:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;&amp;gt; v = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Stack&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;Person&lt;/span&gt;&amp;gt;&amp;gt;();
&lt;span style="COLOR:#2b91af;"&gt;Point &lt;/span&gt;p = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Point&lt;/span&gt;(1, 2);&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;And this can be more powerful than local variable type inference and used in a lot more scenarios:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;class &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Class
&lt;/span&gt;{
&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;private &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; someDicionary = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;();&lt;/em&gt;
    &lt;span style="COLOR:blue;"&gt;private &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Point &lt;/span&gt;p;

    &lt;span style="COLOR:blue;"&gt;public &lt;/span&gt;Class()
    {
&lt;em&gt;        &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.p = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;(1, 1);&lt;/em&gt;
    }

    &lt;span style="COLOR:blue;"&gt;public void &lt;/span&gt;SomeMethod()
    {
&lt;em&gt;        AnotherMethod(&lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;());&lt;/em&gt;
    }

    &lt;span style="COLOR:blue;"&gt;private void &lt;/span&gt;AnotherMethod(&lt;span style="COLOR:#2b91af;"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt; arg)
    {
        &lt;span style="COLOR:green;"&gt;// ...
    &lt;/span&gt;}
}&lt;/pre&gt;
&lt;h5&gt;Where To Stop?&lt;/h5&gt;
&lt;p&gt;The compiler could as easily infer the type of a local variable in this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;public void &lt;/span&gt;SomeMethod()
{
&lt;em&gt;    &lt;span style="COLOR:blue;"&gt;var &lt;/span&gt;v = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;();
    AnotherMethod(v);&lt;/em&gt;
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Do we want to go there? I don&amp;#39;t think so.&lt;/p&gt;
&lt;h5&gt;Ambiguities&lt;/h5&gt;
&lt;p&gt;&lt;a title="Visual C#" href="http://msdn2.microsoft.com/library/kx37x362.aspx" target="_blank"&gt;C# 3.0&lt;/a&gt; also brought &lt;a title="Object and Collection Initializers (C# Programming Guide)" href="http://msdn2.microsoft.com/library/c58f3db5-d7d4-4651-bd2d-5a3a97357f61.aspx" target="_blank"&gt;object initializers&lt;/a&gt;. Instead of this:&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings &lt;/span&gt;settings = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings&lt;/span&gt;();
settings.CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;;
settings.IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;

&lt;span style="COLOR:#2b91af;"&gt;XmlReader &lt;/span&gt;reader = &lt;span style="COLOR:#2b91af;"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;someURI&amp;quot;&lt;/span&gt;, settings);&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;we can just write this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings &lt;/span&gt;settings = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings&lt;/span&gt;() { CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;, IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true &lt;/span&gt;};

&lt;span style="COLOR:#2b91af;"&gt;XmlReader &lt;/span&gt;reader = &lt;span style="COLOR:#2b91af;"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;someURI&amp;quot;&lt;/span&gt;, settings);&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;or this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReader &lt;/span&gt;reader = &lt;span style="COLOR:#2b91af;"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;someURI&amp;quot;&lt;/span&gt;,&amp;nbsp; &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings&lt;/span&gt;() { CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;, IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true &lt;/span&gt;});&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Wouldn&amp;#39;t it be nice to just write:&lt;/p&gt;&lt;pre class="code"&gt;&lt;em&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings &lt;/span&gt;settings = &lt;span style="COLOR:blue;"&gt;new&lt;/span&gt;() { CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;, IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true &lt;/span&gt;};&lt;/em&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;a title="Visual C#" href="http://msdn2.microsoft.com/library/kx37x362.aspx" target="_blank"&gt;C# 3.0&lt;/a&gt; &lt;a title="Object and Collection Initializers (C# Programming Guide)" href="http://msdn2.microsoft.com/library/c58f3db5-d7d4-4651-bd2d-5a3a97357f61.aspx" target="_blank"&gt;object initializers&lt;/a&gt; also allow constructor parenthesis to be omitted:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings &lt;/span&gt;settings = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings &lt;/span&gt;{ CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;, IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true &lt;/span&gt;};&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;which would lead to:&lt;/p&gt;&lt;pre class="code"&gt;&lt;em&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReaderSettings &lt;/span&gt;settings = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;{ CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;, IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true &lt;/span&gt;};&lt;/em&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;which looks exactly like an anonymous object creation expression and could lead to some confusion and ambiguities.&lt;/p&gt;
&lt;p&gt;But it would be nice to just write:&lt;/p&gt;&lt;pre class="code"&gt;&lt;em&gt;&lt;span style="COLOR:#2b91af;"&gt;XmlReader &lt;/span&gt;reader = &lt;span style="COLOR:#2b91af;"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;someURI&amp;quot;&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;{ settings.CheckCharacters = &lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;, settings.IgnoreWhitespace = &lt;span style="COLOR:blue;"&gt;true &lt;/span&gt;});&lt;/em&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Wouldn&amp;#39;t it?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1598814" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category></item><item><title>Web Authoring Component install fails when installing Visual Studio 2008</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/03/23/web-authoring-component-install-fails-when-installing-visual-studio-2008.aspx</link><pubDate>Sat, 22 Mar 2008 23:46:28 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1550587</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>17</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1550587</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1550587</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/03/23/web-authoring-component-install-fails-when-installing-visual-studio-2008.aspx#comments</comments><description>&lt;p&gt;While trying to install Visual Studio 2008 Team Suite in my Windows XP Professional system it kept failing when installing Visual Studio because it couldn&amp;#39;t find the Web Authoring Component (after installing having just successfully installed it).&lt;/p&gt;  &lt;p&gt;I&amp;#39;ve looked around for occurrences of this problem but I didn&amp;#39;t find anyone with such a problem.&lt;/p&gt;  &lt;p&gt;I tried to install Visual Studio several times, successfully installing the Web Authoring Component (you can find it on the DVD - \WCU\WebDesignerCore\WebDesignerCore.EXE) before, but it always failed in the same step and for the same reason as before. And, even more strangely, after that, the Web Authoring Component was no longer installed.&lt;/p&gt;  &lt;p&gt;I went through the install log file (%temp%\dd_depcheck_VS_VSTS_90.txt) and found this:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre class="code" style="overflow:auto;"&gt;Microsoft Visual Studio Web Authoring Component ==&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; This component uses the FileRegVerCheck version check method. It will compare a given version against the version of a regkey on your machine.
    Registry key being interrogated: HKLM,SOFTWARE\Microsoft\Web Designer Tools\1033; Value: InstalledVersion; Version: 12.0.4518.1066.
    Version on user&amp;#39;s machine:&amp;#160;&amp;#160;&amp;#160; 12.0.4518.1064
    Version to be installed:&amp;#160;&amp;#160;&amp;#160; 12.0.4518.1066
Microsoft Visual Studio Web Authoring Component == Component to be installed.&lt;/pre&gt;

&lt;p&gt;I went to the registry and changed the value of the installed version to the one expected by Visual Studio installer and it installed it with no problems. And looks like it&amp;#39;s working fine.&lt;/p&gt;

&lt;p&gt;What strikes me as the most strange is not the fact that the component on the DVD has the wrong version. What strikes me the most is the fact that I had already installed Visual Studio using the same DVD without any problems.&lt;/p&gt;

&lt;table cellspacing="0" cellpadding="2" align="center"&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Good System&lt;/strong&gt;&lt;/td&gt;

      &lt;td&gt;&lt;strong&gt;Bad System&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
  
    &lt;tr&gt;
      &lt;td&gt;Windows Vista Ultimate 64bit with SP1 (clean install)&lt;/td&gt;

      &lt;td&gt;Windows XP Professional with SP2&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;Office 2007 with SP1 (clean install)&lt;/td&gt;

      &lt;td&gt;Office 2007 with SP1 (upgraded from Office 2003)&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;&amp;#160;&lt;/td&gt;

      &lt;td&gt;Visual Studio 2003&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;&amp;#160;&lt;/td&gt;

      &lt;td&gt;Visual Studio 2005 with SP1&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;&amp;#160;&lt;/td&gt;

      &lt;td&gt;Expression Web&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;The Web Authoring Component installer uses a Office 2007 wrapper. I wonder if that was the problem.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1550587" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category></item><item><title>TypeMock Isolator 4.2 Released</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/03/03/typemock-isolator-4-2-released.aspx</link><pubDate>Mon, 03 Mar 2008 00:40:33 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1531383</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1531383</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1531383</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/03/03/typemock-isolator-4-2-released.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;a title="Typemock - Simplify Unit Testing!" href="http://www.typemock.com/" target="_blank"&gt;TypeMock&lt;/a&gt; has released version 4.2 of its mocking framework: TypeMock Insulator. Check out the &lt;a title="Typemock Isolator 4.2 release notes" href="http://www.typemock.com/Docs/UserGuide/index.php?topic=ReleaseNotes42.html" target="_blank"&gt;release notes&lt;/a&gt;.&lt;/p&gt; &lt;p align="justify"&gt;My four favorite new features in this release are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;a target="_self"&gt;Improved mock chaining&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;a target="_self"&gt;Debugger evaluation doesn&amp;#39;t change the test behavior&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;a target="_self"&gt;The debugger can be run inside a recording block without confusing the test&lt;/a&gt;&lt;/div&gt; &lt;li&gt; &lt;div align="justify"&gt;&lt;a target="_self"&gt;When you step in the debugger into a mocked method, the mocked method will be painted&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;&lt;a name="52FA3BA977474f4e8E34732EF0826075"&gt;&lt;/a&gt;Improved mock chaining&lt;/h3&gt; &lt;p&gt;(If you want to learn more about chains, read this &lt;a title="Chains, Part I: Chain-Challenged" href="http://blog.typemock.com/2008/02/chains-part-i-chain-challenged.html" target="_blank"&gt;post&lt;/a&gt; from &lt;a title="Gil Zilberfeld, Typemock Team" href="http://www.typemock.com/community/viewtopic.php?p=2764#2764" target="_blank"&gt;Gil&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;Take this class to be tested:&lt;/p&gt;&lt;pre style="border-right:thin outset;padding-right:10px;border-top:thin groove;padding-left:10px;background:#ffffff;overflow-x:auto;padding-bottom:10px;border-left:thin groove;padding-top:10px;border-bottom:thin outset;font-family:consolas;"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TestedClass1
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;gt; Dictionary
    {
        &lt;span style="color:blue;"&gt;get &lt;/span&gt;{ &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;(); }
    }

    &lt;span style="color:blue;"&gt;public object &lt;/span&gt;Method(&lt;span style="color:blue;"&gt;bool &lt;/span&gt;cond)
    {
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(cond)
        {
            &lt;span style="color:blue;"&gt;return &lt;/span&gt;Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;];
        }
        &lt;span style="color:blue;"&gt;else
        &lt;/span&gt;{
            &lt;span style="color:blue;"&gt;return &lt;/span&gt;Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;];
        }
    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The following test:&lt;/p&gt;&lt;pre style="border-right:thin outset;padding-right:10px;border-top:thin groove;padding-left:10px;background:#ffffff;overflow-x:auto;padding-bottom:10px;border-left:thin groove;padding-top:10px;border-bottom:thin outset;font-family:consolas;"&gt;[&lt;span style="color:#2b91af;"&gt;TestMethod&lt;/span&gt;]
[&lt;span style="color:#2b91af;"&gt;VerifyMocks&lt;/span&gt;]
&lt;span style="color:blue;"&gt;public void &lt;/span&gt;TestMethod1()
{
    &lt;span style="color:blue;"&gt;object &lt;/span&gt;trueObject = &lt;span style="color:blue;"&gt;new object&lt;/span&gt;();
    &lt;span style="color:blue;"&gt;object &lt;/span&gt;falseObject = &lt;span style="color:blue;"&gt;new object&lt;/span&gt;();

    &lt;span style="color:#2b91af;"&gt;TestedClass1 &lt;/span&gt;target = &lt;span style="color:#2b91af;"&gt;RecorderManager&lt;/span&gt;.CreateMockedObject&amp;lt;&lt;span style="color:#2b91af;"&gt;TestedClass1&lt;/span&gt;&amp;gt;();

    &lt;span style="color:blue;"&gt;using &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;RecordExpectations &lt;/span&gt;recorder = &lt;span style="color:#2b91af;"&gt;RecorderManager&lt;/span&gt;.StartRecording())
    {
        recorder.DefaultBehavior.CheckArguments();

        recorder.ExpectAndReturn(target.Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;], trueObject);
        recorder.FailWhenCalled(target.Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;]);
    }

    &lt;span style="color:blue;"&gt;object &lt;/span&gt;value = target.Method(&lt;span style="color:blue;"&gt;true&lt;/span&gt;);
    &lt;span style="color:#2b91af;"&gt;Assert&lt;/span&gt;.AreEqual(trueObject, value);
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Would simply fail with:&lt;/p&gt;&lt;pre style="border-right:thin outset;padding-right:10px;border-top:thin groove;padding-left:10px;background:#ffffff;overflow-x:auto;padding-bottom:10px;border-left:thin groove;padding-top:10px;border-bottom:thin outset;font-family:consolas;"&gt;Test method TestProject1.UnitTest1.TestMethod1 threw exception:  TypeMock.VerifyException: 
TypeMock Verification: Method TestProject1.TestedClass1.get_Dictionary() has 1 more expected calls
.&lt;/pre&gt;
&lt;p&gt;Now, it just passes.&lt;/p&gt;
&lt;h3&gt;&lt;a name="4AE00CEA88244120AD5592D9F5A29700"&gt;&lt;/a&gt;Debugger evaluation doesn&amp;#39;t change the test behavior&lt;/h3&gt;
&lt;p align="justify"&gt;Now you can debug your code without having to change your tests. You can query mocked values without influencing your tests.&lt;/p&gt;
&lt;p align="justify"&gt;You can do this and still have the test passing:&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://msmvps.com/blogs/paulomorgado/WindowsLiveWriter/8abca5b71786_14C3B/debugger%20support%5B5%5D.jpg" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="171" alt="Debugger Support" src="http://msmvps.com/blogs/paulomorgado/WindowsLiveWriter/8abca5b71786_14C3B/debugger%20support%5B5%5D_thumb.jpg" width="260" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;&lt;a name="1E103F2BC92E4e7398CF5BDB8CB0ADBA"&gt;&lt;/a&gt;The debugger can be run inside a recording block without confusing the test&lt;/h3&gt;
&lt;p align="justify"&gt;You can now step into the recording block and debug it without affecting the recording process and the test.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://msmvps.com/blogs/paulomorgado/WindowsLiveWriter/8abca5b71786_14C3B/Recording%20Block_2.jpg" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="57" alt="Recording Block" src="http://msmvps.com/blogs/paulomorgado/WindowsLiveWriter/8abca5b71786_14C3B/Recording%20Block_thumb.jpg" width="260" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3&gt;&lt;a name="DEE27B7B05BD40559B05BDB47500279D"&gt;&lt;/a&gt;When you step in the debugger into a mocked method, the mocked method will be painted&lt;/h3&gt;
&lt;p&gt;When you step into a mocked method (or property) I&amp;#39;ll see that it&amp;#39;s mocked.&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://msmvps.com/blogs/paulomorgado/WindowsLiveWriter/8abca5b71786_14C3B/Visual%20Studio%20Cues_2.jpg" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="102" alt="Visual Studio Cues" src="http://msmvps.com/blogs/paulomorgado/WindowsLiveWriter/8abca5b71786_14C3B/Visual%20Studio%20Cues_thumb.jpg" width="260" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1531383" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category></item><item><title>Web Client Software Factory 2.0 shipped</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/02/29/web-client-software-factory-2-0-shipped.aspx</link><pubDate>Fri, 29 Feb 2008 01:54:51 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1527570</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1527570</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1527570</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/02/29/web-client-software-factory-2-0-shipped.aspx#comments</comments><description>&lt;div style="border-right:1px solid;border-top:1px solid;border-left:1px solid;width:550px;border-bottom:1px solid;text-align:center;"&gt; &lt;p&gt;&lt;img src="http://msdn2.microsoft.com/en-us/library/Bb264518.pponline(en-us,MSDN.10).gif" alt="" /&gt; &lt;/p&gt; &lt;p style="text-align:center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size:22pt;color:black;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;Web Client Software Factory 2.0&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p style="text-align:center;" align="center"&gt;&lt;b&gt;&lt;span style="color:black;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;February 2008 Release&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size:12pt;color:black;font-family:&amp;#39;Verdana&amp;#39;,&amp;#39;sans-serif&amp;#39;;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p align="left"&gt;&lt;b&gt;Resources&lt;/b&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;MSDN site: &lt;a href="http://msdn.microsoft.com/webclientfactory" target="_blank"&gt;http://msdn.microsoft.com/webclientfactory&lt;/a&gt; &lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;Community site: &lt;a href="http://www.codeplex.com/websf" target="_blank"&gt;http://www.codeplex.com/websf&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; &lt;p&gt;&lt;b&gt;About the Deliverable&lt;/b&gt; &lt;/p&gt; &lt;p align="justify"&gt;The Web Client Software Factory (WCSF) provides a set of guidance for architects and developers building enterprise Web applications. The factory includes samples, reusable code and a guidance package which automates key development tasks from within Visual Studio. &lt;/p&gt; &lt;p align="justify"&gt;Using the Web Client Software Factory assets, developers can create &lt;a title="Composite Web Clients" href="http://www.codeplex.com/websf/Wiki/View.aspx?title=Composite%20Web%20Clients&amp;amp;referringTitle=Home" target="_blank"&gt;Composite Web&lt;/a&gt; applications composed of independently developed and deployed modules. These modules are dynamically brought together at runtime into a common shell. Additionally the factory includes support for ASP.NET AJAX thus providing users with a richer and more responsive user experience. &lt;/p&gt; &lt;p&gt;&lt;b&gt;New In This Release&lt;/b&gt; &lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt; &lt;p align="justify"&gt;The February 2008 release of the Web Client Software Factory has the following improvements to the June 2007 release. &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;Full support for Visual Studio 2008 and .NET Framework 3.5 &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Added ASP.NET AJAX extenders for Context Sensitive Autocomplete, AJAX Validation, and Real Time Search that can be used in existing ASP.NET sites and ASP.NET sites built using the Composite Web Application Block. &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Added UI Composition capability through extending our dependency injection mechanism to support Pages, User Controls and Master Pages. &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Added Dependency Injection on ASMX Web Services and JSON services. &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Added a new set of Quickstarts and How-To topics on MVP, Modularity and the new AJAX extenders &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Added a new Order Entry Reference application that demonstrates all of the new functionality. &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="justify"&gt;In addition, this release of WCSF has the following community issues and fixes: &lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="justify"&gt;42 Workitems closed including the top-voted items on CodePlex &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Add ASP.NET AJAX Support (97 votes) &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Web Client Software Factory Support for Enterprise Library 3.1 (62 votes) &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Services through configuration (32 votes) &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Support for using the Validation Application Block (16 votes) &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Recipe support for Visual Basic .NET (20 votes) &lt;/div&gt;&lt;/li&gt; &lt;li&gt; &lt;div align="justify"&gt;Added Presenter support for Master Pages (11 votes)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1527570" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Web/default.aspx">Web</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/WCSF/default.aspx">WCSF</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PnP/default.aspx">PnP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftwareFactories/default.aspx">SoftwareFactories</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/PageFlow/default.aspx">PageFlow</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/AJAX/default.aspx">AJAX</category></item><item><title>Techdays Portugal 2008 - For A World 2.0</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/02/06/techdays-portugal-2008-for-a-world-2-0.aspx</link><pubDate>Wed, 06 Feb 2008 21:45:52 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1500150</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1500150</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1500150</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/02/06/techdays-portugal-2008-for-a-world-2-0.aspx#comments</comments><description>&lt;div style="overflow:auto;width:900px;"&gt; &lt;div&gt;&lt;a title="TechDays 2008 | For a World 2.0" href="http://www.techdays.pt/" target="_blank"&gt;&lt;img src="http://www.techdays.pt/images/banner_topo.jpg" alt="" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;div&gt;&lt;a title="TechDays 2008 | For a World 2.0" href="http://www.techdays.pt/" target="_blank"&gt;&lt;img style="padding-right:10px;float:left;" src="http://www.techdays.pt/images/mini_mrec.jpg" alt="" /&gt;&lt;/a&gt; &lt;/div&gt; &lt;p style="padding-right:10px;padding-left:10px;padding-bottom:10px;margin:10px;padding-top:10px;" align="justify"&gt;&lt;a title="Microsoft Portugal" href="http://www.microsoft.com/portugal/" target="_blank"&gt;Microsoft Portugal&lt;/a&gt; will be hosting &lt;a title="TechDays 2008 | For a World 2.0" href="http://www.Techdays.pt/" target="_blank"&gt;Techdays 2008&lt;/a&gt; from Mars 12&lt;sup&gt;nd&lt;/sup&gt; to 14&lt;sup&gt;th&lt;/sup&gt;, right after the Portuguese launch of &lt;a href="http://msdn2.microsoft.com/en-us/vstudio/default.aspx" target="_blank"&gt;Microsoft Visual Studio 2008&lt;/a&gt;, &lt;a href="http://www.microsoft.com/sql/2008/default.mspx" target="_blank"&gt;Microsoft SQL Server 2008&lt;/a&gt; and &lt;a href="http://www.microsoft.com/windowsserver2008/default.mspx" target="_blank"&gt;Microsoft Windows Server 2008&lt;/a&gt; on Mars 11&lt;sup&gt;th&lt;/sup&gt;.&lt;/p&gt; &lt;p style="padding-right:10px;padding-left:10px;padding-bottom:10px;margin:10px;padding-top:10px;" align="justify"&gt;This is the biggest and greatest tech event in Portugal and there will be lots of national and international speakers and contests.&lt;/p&gt; &lt;p style="padding-right:10px;padding-left:10px;padding-bottom:10px;margin:10px;padding-top:10px;" align="justify"&gt;I&amp;#39;ll be there. Come visit us.&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1500150" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Events/default.aspx">Events</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SQLServer/default.aspx">SQLServer</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Windows/default.aspx">Windows</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Techdays/default.aspx">Techdays</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TechdaysPT08/default.aspx">TechdaysPT08</category></item><item><title>Typemock Insulator Is Typemock Isolator</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/02/05/typemock-insulator-is-typemock-isolator.aspx</link><pubDate>Tue, 05 Feb 2008 00:07:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1496252</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1496252</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1496252</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/02/05/typemock-insulator-is-typemock-isolator.aspx#comments</comments><description>&lt;p&gt;&lt;a class="" title="TypeMock Insulator 4.2 Beta Publicly Available" href="http://msmvps.com/controlpanel/blogs/.NET;%20SoftDev;%20Tools;%20VisualStudio;%20Testing;%20UnitTests;%20TypeMock"&gt;Yesterday&lt;/a&gt; I made a mistake with the name of the next version of &lt;a class="" href="http://www.typemock.com/" target="_blank"&gt;TypeMock&lt;/a&gt;. The real name is TypeMock Isolator. Whatever the name is, you should try it out.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1496252" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category></item><item><title>TypeMock Insulator 4.2 Beta Publicly Available</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/02/03/typemock-insulator-4-2-beta-publicly-available.aspx</link><pubDate>Sun, 03 Feb 2008 22:16:17 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1494258</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1494258</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1494258</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/02/03/typemock-insulator-4-2-beta-publicly-available.aspx#comments</comments><description>&lt;p&gt;TypeMock (now called) Insulator 4.2 Beta is publicly available. Check out the &lt;a title="Typemock Insulator 4.2 release notes" href="http://www.typemock.com/Docs/UserGuide/index.php?topic=ReleaseNotes42.html" target="_blank"&gt;release notes&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;One of my favorite new features is the improved mock chaining.&lt;/p&gt; &lt;p&gt;Take this class to be tested:&lt;/p&gt;&lt;pre style="border-right:thin outset;padding-right:10px;border-top:thin groove;padding-left:10px;background:#ffffff;overflow-x:auto;padding-bottom:10px;border-left:thin groove;padding-top:10px;border-bottom:thin outset;font-family:consolas;"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TestedClass1
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IDictionary&lt;/span&gt;&amp;lt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;, &lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;gt; Dictionary
    {
        &lt;span style="color:blue;"&gt;get &lt;/span&gt;{ &lt;span style="color:blue;"&gt;throw new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;NotImplementedException&lt;/span&gt;(); }
    }

    &lt;span style="color:blue;"&gt;public object &lt;/span&gt;Method(&lt;span style="color:blue;"&gt;bool &lt;/span&gt;cond)
    {
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(cond)
        {
            &lt;span style="color:blue;"&gt;return &lt;/span&gt;Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;];
        }
        &lt;span style="color:blue;"&gt;else
        &lt;/span&gt;{
            &lt;span style="color:blue;"&gt;return &lt;/span&gt;Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;];
        }
    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The following test:&lt;/p&gt;&lt;pre style="border-right:thin outset;padding-right:10px;border-top:thin groove;padding-left:10px;background:#ffffff;overflow-x:auto;padding-bottom:10px;border-left:thin groove;padding-top:10px;border-bottom:thin outset;font-family:consolas;"&gt;[&lt;span style="color:#2b91af;"&gt;TestMethod&lt;/span&gt;]
[&lt;span style="color:#2b91af;"&gt;VerifyMocks&lt;/span&gt;]
&lt;span style="color:blue;"&gt;public void &lt;/span&gt;TestMethod1()
{
    &lt;span style="color:blue;"&gt;object &lt;/span&gt;trueObject = &lt;span style="color:blue;"&gt;new object&lt;/span&gt;();
    &lt;span style="color:blue;"&gt;object &lt;/span&gt;falseObject = &lt;span style="color:blue;"&gt;new object&lt;/span&gt;();

    &lt;span style="color:#2b91af;"&gt;TestedClass1 &lt;/span&gt;target = &lt;span style="color:#2b91af;"&gt;RecorderManager&lt;/span&gt;.CreateMockedObject&amp;lt;&lt;span style="color:#2b91af;"&gt;TestedClass1&lt;/span&gt;&amp;gt;();

    &lt;span style="color:blue;"&gt;using &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;RecordExpectations &lt;/span&gt;recorder = &lt;span style="color:#2b91af;"&gt;RecorderManager&lt;/span&gt;.StartRecording())
    {
        recorder.DefaultBehavior.CheckArguments();

        recorder.ExpectAndReturn(target.Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;], trueObject);
        recorder.FailWhenCalled(target.Dictionary[&lt;span style="color:#a31515;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;]);
    }

    &lt;span style="color:blue;"&gt;object &lt;/span&gt;value = target.Method(&lt;span style="color:blue;"&gt;true&lt;/span&gt;);
    &lt;span style="color:#2b91af;"&gt;Assert&lt;/span&gt;.AreEqual(trueObject, value);
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;Would simply fail with:&lt;/p&gt;&lt;pre style="border-right:thin outset;padding-right:10px;border-top:thin groove;padding-left:10px;background:#ffffff;overflow-x:auto;padding-bottom:10px;border-left:thin groove;padding-top:10px;border-bottom:thin outset;font-family:consolas;"&gt;Test method TestProject1.UnitTest1.TestMethod1 threw exception:  TypeMock.VerifyException: 
TypeMock Verification: Method TestProject1.TestedClass1.get_Dictionary() has 1 more expected calls
.&lt;/pre&gt;
&lt;p&gt;Now, it just passes.&lt;/p&gt;
&lt;p&gt;Visual Studio cues are nice too.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1494258" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/TypeMock/default.aspx">TypeMock</category></item></channel></rss>