<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Vincent's Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/vnicolas/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/vnicolas/feed.xml</link>
    <description>Dynamics AX developement tools</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:34:41 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Managed code development in AX2012 (cont.). Proxying kernel classes.</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/managed-code-development-in-ax2012-cont-proxying-kernel-classes</link>
      <pubDate>Fri, 10 Jun 2011 06:27:28 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2011/06/10/managed-code-development-in-ax2012-cont-proxying-kernel-classes/</guid>
      <description><![CDATA[In the video from my previous post, I showed how to create managed proxies for X++ classes with the...]]></description>
      <content:encoded><![CDATA[<p>In the video from my previous post, I showed how to create managed proxies for X++ classes with the new Microsoft Dynamics AX2012 Visual Studio toolset.</p>  <p>X++ managed proxies allow you to invoke X++ code from managed code</p>  <p>Here is a brief recap on how to do that:</p>  <p>In Visual Studio, simply create a class library. In Solution Explorer, right click on the project and select ‘Add&#160; a ClassLibrary to AOT’:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/7450.image_0D4D9343.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/7450.image_5F00_0D4D9343.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/7140.image_thumb_27AD865A.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/7140.image_5F00_thumb_5F00_27AD865A.png" width="407" height="368" /></a></p>  <p>Then open the Application Explorer, right-click on the class you want to proxy and select ‘Add to Project’</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/8117.image_45AB944E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/8117.image_5F00_45AB944E.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/3817.image_thumb_4EB81FCF.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/3817.image_5F00_thumb_5F00_4EB81FCF.png" width="328" height="294" /></a></p>  <p>This will add a proxy item to you project and give you full Intellisense on the proxied class from your managed code:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/0284.image_25CD0AC6.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/0284.image_5F00_25CD0AC6.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/7633.image_thumb_6B7194E4.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/7633.image_5F00_thumb_5F00_6B7194E4.png" width="632" height="319" /></a></p>  <p>Now what if you want to use a kernel class such as the TreeNode? The toolset does not offer any simple gesture to add such a class to your project, but here is what you can do:</p>  <p>Start by adding a random X++ class as explained above. In the solution explorer, select the added proxy item and rename it by using the context menu or F2:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/6560.image_02BC9956.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/6560.image_5F00_02BC9956.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/2766.image_thumb_61C926AE.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/2766.image_5F00_thumb_5F00_61C926AE.png" width="204" height="150" /></a></p>  <p>You can see that the actual name of the item is something like <strong>Class.&lt;SomeClassName&gt;.axproxy.</strong></p>  <p>Now replace &lt;SomeClassName&gt; with the name of the class you want to proxy. For example, if you want to proxy the TreeNode class, you should rename the item to <strong>Class.TreeNode.axproxy</strong>.</p>  <p>That’s it! You can verify that it worked by checking that the class shows up in the Intellisense:</p>  <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/7043.image_67A3CA47.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/7043.image_5F00_67A3CA47.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/0216.image_thumb_5B35A71E.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/0216.image_5F00_thumb_5F00_5B35A71E.png" width="593" height="235" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Managed code development in AX2012</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/managed-code-development-in-ax2012</link>
      <pubDate>Fri, 29 Apr 2011 07:37:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2011/04/29/managed-code-development-in-ax2012/</guid>
      <description><![CDATA[Microsoft Dynamics AX2012 has a lot of new development tools to help you create solutions using...]]></description>
      <content:encoded><![CDATA[<p>Microsoft Dynamics AX2012 has a lot of new development tools to help you create solutions using managed code. <br />In this video, I demonstrate a few applications of these tools, such as the Application Explorer (the AOT in Visual Studio), the managed proxies and the managed code deployment.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/4314.CarDemoCD.avi" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28/4314.CarDemoCD.avi" title="Download in HighRes (avi - 47 MB)"><img height="430" width="598" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/metablogapi/2548.MapService_384A5354.png" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28-metablogapi/2548.MapService_5F00_384A5354.png" alt="MapService" border="0" title="MapService" style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" /></a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/4314.CarDemoCD.avi" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28/4314.CarDemoCD.avi" title="Download in HighRes (avi - 47 MB)">Download in High Res (avi - 47 MB)</a></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/00/28/0383.CarLocationDemoHD.mp4" original-url="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-00-28/0383.CarLocationDemoHD.mp4">Download in Med Res (MP4 - 19 MB)</a></p>
<p><span style="font-size: xx-small;">&nbsp;</span></p>
<p><span style="font-size: xx-small;">This posting is provided "AS IS" with no warranties, and confers no rights.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Dynamics AX Tech Conference 2011</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/microsoft-dynamics-ax-tech-conference-2011</link>
      <pubDate>Sat, 15 Jan 2011 05:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2011/01/15/microsoft-dynamics-ax-tech-conference-2011/</guid>
      <description><![CDATA[Next week I&rsquo;ll be at the Microsoft Dynamics AX Technical Conference 2011. This is going to be...]]></description>
      <content:encoded><![CDATA[<p>Next week I&rsquo;ll be at the <a href="http://www.microsoft.com/dynamics/DynamicsAXtechnicalconference2011/">Microsoft Dynamics AX Technical Conference 2011</a>. <br />This is going to be a great event and you can look forward to many exiting presentations and cool demos.</p>
<p>At the breakout session on Wednesday at 7:30PM, you&rsquo;ll be able to see the new X++ editor I blogged about. <br />I&rsquo;ll be demo&rsquo;ing the new Visual Studio tooling and managed development for AX at the breakout session 13 on the same day at 10:30AM.</p>
<p>See you there&hellip;.</p>]]></content:encoded>
    </item>
    <item>
      <title>Other Dynamics AX blogs</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/other-dynamics-ax-blogs</link>
      <pubDate>Thu, 24 Jun 2010 01:29:47 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2010/06/24/other-dynamics-ax-blogs/</guid>
      <description><![CDATA[I have added a few links to some my colleagues blogs.
Check&nbsp;them out.]]></description>
      <content:encoded><![CDATA[<p>I have added a few links to some my colleagues blogs.</p>
<p>Check&nbsp;them out.</p>]]></content:encoded>
    </item>
    <item>
      <title>The new X++ editor in action</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/the-new-x-editor-in-action</link>
      <pubDate>Tue, 25 May 2010 09:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2010/05/25/the-new-x-editor-in-action/</guid>
      <description><![CDATA[Most of the new features of the new X++ editor are best show live, so I made this video....]]></description>
      <content:encoded><![CDATA[<p>Most of the new features of the new X++ editor are best show live, so I made this <a target="_blank" href="http://public.blu.livefilestore.com/y1p57KCejP2F3CmikKPQoAJqhob2n8ve8eUwh-UDzVlGOa8LmLIpTJAT0odSia4bXrvbtxewEETtkUCqmYMQpbJ7Q/editorDemo2.wmv?download&amp;psid=1">video</a>. Enjoy.</p>
<p>&nbsp;</p>
<p><span style="font-size: xx-small;">This posting is provided "AS IS" with no warranties, and confers no rights.</span> </p>]]></content:encoded>
    </item>
    <item>
      <title>The new X++ editor (part 2)</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/the-new-x-editor-part-2</link>
      <pubDate>Wed, 27 Jan 2010 03:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2010/01/27/the-new-x-editor-part-2/</guid>
      <description><![CDATA[A couple of improvements to look forward to in the Intellisense UI: 
In a completion session,...]]></description>
      <content:encoded><![CDATA[<p>A couple of improvements to look forward to in the Intellisense UI: </p>
<p>In a completion session, holding the ctrl key will make the drop-down dialog transparent, so you can see the code underneath:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001_2.jpg"><img height="297" width="353" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001_thumb.jpg" alt="clip_image001" border="0" title="clip_image001" style="display: inline; margin-left: 0px; margin-right: 0px; border: 0px;" /></a>&nbsp;&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image0014.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image0014.jpg"><img height="297" width="350" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image0014_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image0014_thumb.jpg" alt="clip_image001[4]" border="0" title="clip_image001[4]" style="display: inline; margin-left: 0px; margin-right: 0px; border: 0px;" /></a></p>
<p>The dorp down list is also filtered and your typing is displayed in the buffer:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion1.png" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion1.png"><img height="259" width="357" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion1_thumb.png" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion1_thumb.png" alt="FilteredCompletion1" border="0" title="FilteredCompletion1" style="display: inline; border: 0px;" /></a>&nbsp;&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion2.png" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion2.png"><img height="249" width="350" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion2_thumb.png" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/FilteredCompletion2_thumb.png" alt="FilteredCompletion2" border="0" title="FilteredCompletion2" style="display: inline; border: 0px;" /></a></p>
<p>Ctrl-Mouse wheel will allow you to zoom the code in and out:</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B2%5D.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B2%5D.jpg"><img height="293" width="356" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B2%5D_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B2%5D_thumb.jpg" alt="clip_image001[2]" border="0" title="clip_image001[2]" style="display: inline; border: 0px;" /></a>&nbsp; <a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B4%5D_1.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B4%5D_1.jpg"><img height="287" width="349" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B4%5D_thumb_1.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DynamicsAX6ThenewXeditorpart2_FEA0/clip_image001%5B4%5D_thumb_1.jpg" alt="clip_image001[4]" border="0" title="clip_image001[4]" style="display: inline; border: 0px;" /></a></p>
<p>&nbsp;</p>
<p><span style="font-size: xx-small;">This posting is provided "AS IS" with no warranties, and confers no rights.</span> </p>]]></content:encoded>
    </item>
    <item>
      <title>The new X++ editor</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/the-new-x-editor</link>
      <pubDate>Sun, 11 Oct 2009 08:59:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2009/10/11/the-new-x-editor/</guid>
      <description><![CDATA[I am currently working on the next version of Dynamics AX &ndash; AX6 and as part of the development...]]></description>
      <content:encoded><![CDATA[<p>I am currently working on the next version of Dynamics AX &ndash; AX6 and as part of the development experience improvement, my team has been working on a new editor for the X++ language. This editor is based on the same framework than the Visual Studio editor.</p>
<p>Here is how it looks like:</p>
<p>&nbsp;<a href="http://vxtmdg.blu.livefilestore.com/y1p6LKg5xZtB6JWD2uIz_kImLHqbJUIk6NjGa9DC_NeDp2cWrvZEzd468fs7OezVyBWdry5aGoEFV9y736pVwRWtA/editor_overview.png"><img height="390" width="446" src="http://vxtmdg.blu.livefilestore.com/y1p6LKg5xZtB6JWD2uIz_kImLHqbJUIk6NjGa9DC_NeDp2cWrvZEzd468fs7OezVyBWdry5aGoEFV9y736pVwRWtA/editor_overview.png" alt="editor_overview[1]" border="0" title="editor_overview[1]" style="display: inline; border-width: 0px;" /></a>&nbsp; </p>
<p>The line numbering and the gradient marking are the first visible signs of a new UI. The rendering is WPF based, so that gives some opportunities for cool graphics.</p>
<p>Here is little more exiting view:</p>
<p><a href="http://vxtmdg.blu.livefilestore.com/y1pe8LGDW8vUixCdYNbJo2KDrfaxUVMxUETI8Hu3JWevxYog37-hBSJxcPrYqhoxn9cBO6QMxmm38atAnC8qJKDzA/editor_syntax_col.png"><img height="466" width="451" src="http://vxtmdg.blu.livefilestore.com/y1pe8LGDW8vUixCdYNbJo2KDrfaxUVMxUETI8Hu3JWevxYog37-hBSJxcPrYqhoxn9cBO6QMxmm38atAnC8qJKDzA/editor_syntax_col.png" alt="editor_syntax_col[1]" border="0" title="editor_syntax_col[1]" style="display: inline; border-width: 0px;" /></a> </p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: small;">Things to notice, that are new relatively to the existing editor are: </span></span></span></p>
<ul>
<li>
<div><span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: small;">Support for multiple fonts and styles (comments are in a different font in italic). </span></span></span></div>
</li>
<li>
<div><span lang="EN-US" style="mso-ansi-language: en-us;"></span>&nbsp;<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: small;">Differentiated coloring of strings and numbers.</span></span></span></div>
</li>
<li>
<div><span lang="EN-US" style="mso-ansi-language: en-us;"></span>&nbsp;<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-family: Calibri;"><span style="font-size: small;">Operators coloring (in pink here, but don&rsquo;t worry I&rsquo;ll most likely change it before we release !). </span></span></span></div>
</li>
<li>
<div>&nbsp;<span lang="EN-US" style="mso-ansi-language: en-us;"><span style="font-size: small;"><span style="font-family: Calibri;">Change tacking margin. </span></span></span></div>
</li>
</ul>
<p>For other sneak previews at AX6, you might want to take a look at <a href="http://blogs.msdn.com/mfp/">mfp's blog</a></p>
<p><span style="font-size: xx-small;">This posting is provided "AS IS" with no warranties, and confers no rights.</span></p>]]></content:encoded>
    </item>
    <item>
      <title>WPF and Binary Resources</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/wpf-and-binary-resources</link>
      <pubDate>Thu, 13 Nov 2008 09:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2008/11/13/wpf-and-binary-resources/</guid>
      <description><![CDATA[Recently, I had to access binary resources from a WPF control and although it sounds like a straight...]]></description>
      <content:encoded><![CDATA[<P class=MsoNormal><SPAN lang=EN-US>Recently, I had to access binary resources from a WPF control and although it sounds like a straight forward thing to do, I found out that there were a couple of twists to it.</SPAN></P>
<H2>From the markup </H2>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>If you need to display an icon on your UI you would write something like that from the markup:<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">&lt;</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">Image</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Name</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="MyImage"</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> Source</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">="Resources/Icon1.ico" /&gt; </P>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>Beware, that by default, WPF resolves resources at run time, so you can refer to the icon file, provided you move it around with you app while preserving the relative directory structure. What you probably want to do, is to embed your resources in your assembly. <BR>The markup above works fine, if you add the icon file to the project and marked it as resource. So far so good.</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>If the resource is part of the project, you can also set the image source from the property sheet.</SPAN></P>
<P class=MsoNormal><SPAN style="mso-no-proof: yes; mso-ansi-language: da; mso-fareast-language: da"><A href="https://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/WPFandBinaryResources_DFF4/clip_image002_6.jpg" mce_href="https://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/WPFandBinaryResources_DFF4/clip_image002_6.jpg"><IMG title=clip_image002 style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=167 alt=clip_image002 src="https://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/WPFandBinaryResources_DFF4/clip_image002_thumb_1.jpg" width=244 border=0 mce_src="https://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/WPFandBinaryResources_DFF4/clip_image002_thumb_1.jpg" v:shapes="Picture_x0020_3"></A></SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>Then notice something interesting, the image source end up looking something like that:<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">&lt;</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">Image</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"> Name</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">="MyImage"</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"> Source</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">="/WpfApplication1;component/Resources/Icon1.ico"/&gt;</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"> </P>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>The weird path is actually a so called </SPAN><EM><SPAN lang=EN-US style="FONT-FAMILY: 'Trebuchet MS','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi">packed URI</SPAN></EM><SPAN lang=EN-US>. This URI scheme provides a way to refer resources embedded in files. For more details on the pack URIs see <A href="http://msdn.microsoft.com/en-gb/library/aa970069.aspx" mce_href="http://msdn.microsoft.com/en-gb/library/aa970069.aspx"><SPAN style="FONT-FAMILY: 'Trebuchet MS','sans-serif'">Pack URIs in Windows Presentation Foundation</SPAN></A> in the MSDN documentation.</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US><BR>Icon files can contain several bitmaps, and by referencing the resource in this way, you cannot control which one is used. You might for example want to pick the 16x16 icon rather that the 32x32 for a better rendering.</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>This can be done in the code behind:</SPAN></P>
<H2><SPAN lang=EN-US>From the code behind</SPAN></H2>
<P class=MsoNormal><SPAN lang=EN-US>First you need to create the URI. The simplest syntax, if the resource is embedded in the running assembly is<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">Uri resourceUri = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Uri</SPAN>(<SPAN style="COLOR: #a31515">@"Resources/Icon1.ico"</SPAN>, <SPAN style="COLOR: #2b91af">UriKind</SPAN>.Relative); </P>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>Notice that you need to specified that the URI is relative. The syntax for the absolute path is&nbsp; <BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">Uri</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"> resourceUri = </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">new</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"> </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">Uri</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">(</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">@"/WpfApplication1;component/Resources/Icon1.ico"</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'">); </P>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>But you'll notice that the name of the assembly is included in the URI. A more portable version is<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-bidi-font-size: 11.0pt">Uri</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes; mso-bidi-font-size: 11.0pt"> resourceUri = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">Uri</SPAN>(<SPAN style="COLOR: #a31515">@"pack://application:,,/Resources/icon1.ico"</SPAN>); </P>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>Anyway, once you have the Uri, the way to access the resource is to get hold of the corresponding stream:<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt">StreamResourceInfo</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt"> resourceInfo = </SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt">Application</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt">.GetResourceStream(resourceUri); <BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt">Stream</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: black; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt"> resourceStream = resourceInfo.Stream;</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: #2b91af; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-bidi-font-size: 11.0pt"> </P>
<P mce_keep="true"></SPAN><SPAN lang=EN-US>To iterate through the bitmaps in this stream, we can use the </SPAN><SPAN lang=EN-US style="COLOR: #2b91af; FONT-FAMILY: 'Courier New'">IconBitmapDecoder</SPAN><SPAN lang=EN-US style="COLOR: #2b91af"> </SPAN><SPAN lang=EN-US style="COLOR: black">helper class and look for the one which is 16x16:<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">// Look for the 16x16 icon <BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">if</SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"> (iconBitmapDecoder.Frames.Count &gt; 1) <BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">{<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">foreach</SPAN> (<SPAN style="COLOR: #2b91af">BitmapFrame</SPAN> bitmapFrame <SPAN style="COLOR: blue">in</SPAN> iconBitmapDecoder.Frames)&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">if</SPAN> (bitmapFrame.Height == 16 &amp;&amp; bitmapFrame.Width == 16)&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>{&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>MyImage.Source = bitmapFrame;&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">break</SPAN>;&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>}&nbsp;<BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp; </SPAN>} <BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes">}</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US>That's it! I buy you beer if you can do the same thing directly from the markup.</SPAN></P>
<P class=MsoNormal><SPAN lang=EN-US></P></SPAN>]]></content:encoded>
    </item>
    <item>
      <title>Debugging business logic in AX 2009 SSRS reports</title>
      <link>https://docs.microsoft.com/archive/blogs/vnicolas/debugging-business-logic-in-ax-2009-ssrs-reports</link>
      <pubDate>Sat, 30 Aug 2008 08:43:00 GMT</pubDate>
      <dc:creator><![CDATA[Vincent Nicolas - Dynamics AX]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/vnicolas/2008/08/30/debugging-business-logic-in-ax-2009-ssrs-reports/</guid>
      <description><![CDATA[Background
With AX2009 you are now able to do SSRS reports in Visual Studio. The typical process...]]></description>
      <content:encoded><![CDATA[<H3>Background</H3>
<P>With AX2009 you are now able to do SSRS reports in Visual Studio. The typical process for designing a report consist in creating a query and bind to it, code some business logic (BL) specific to the report and design the visual part.</P>
<P>This post will focus on debugging the report business logic. For more information on designing reports in general, see the <A href="http://msdn.microsoft.com/en-us/library/cc653472.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc653472.aspx">msdn documentation</A></P>
<P>There is also an excellent post on Channel 9 from my friend Manoj <A href="https://channel9.msdn.com/posts/benriga/Reporting-and-Analytics-in-Dynamics-AX-2009/" mce_href="https://channel9.msdn.com/posts/benriga/Reporting-and-Analytics-in-Dynamics-AX-2009/">here</A>.</P>
<H3>Debugging</H3>
<P>Let say you've designed a fancy report in VS and in order to make it do cool stuff, you had to write some pretty complex business logic. Unfortunately, your business logic does not do what you think it should be doing. You know that you've been working too late on too much caffeine, so you suspect that there might be a bug there and you need to do some debugging. </P>
<H4>The 'attach-to-the-server-process' approach</H4>
<P>One approach to debug your business logic consist of the following steps</P>
<P>· Rebuild the report in VS in debug mode</P>
<P>· Save it back to the AOD</P>
<P>· Redeploy the report</P>
<P>· Set a breakpoint at a strategic location in your business logic code</P>
<P>· Attach to the server process</P>
<P>· Invoke your report</P>
<P>· Hit the breakpoint and start debugging</P>
<P>While being perfectly valid, this approach has a rather long turn-around-time, especially considering the fact that during a debugging session, you will most likely need to ride the modify-code-rebuild-test carrousel several times.</P>
<P>Also you are an agile programmer and you know about the values of <A href="http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx">Test Driven Development</A> (TDD), so you are thinking: 'Damn, I wish I had developed this report using the good TDD methods and wrote some unit test for my business logic'. Well, don't despair, Visual Studio (professional edition and above) comes with several cool features that can help you do TDD and debugging on your reports. Let's see how.</P>
<H4>Creating unit test for SSRS based reports business logic</H4>
<P>Let's assume that you have created your report solution with its related report project</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image002_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image002_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image002_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=217 alt=clip_image002 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image002_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image002_thumb.jpg" width=199 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image002_thumb.jpg"></A></P>
<P>For the sake of simplicity, let's pretend that you have written the following dull BL method</P>
<P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier">public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: #2b91af">DataTable</SPAN> MyMethod() <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier">{&nbsp; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">DataTable</SPAN> result = <SPAN style="COLOR: blue">new</SPAN> <SPAN style="COLOR: #2b91af">DataTable</SPAN>();&nbsp; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>result.Columns.Add(<SPAN style="COLOR: #a31515">"Col1"</SPAN>);&nbsp; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>result.Columns.Add(<SPAN style="COLOR: #a31515">"Col2"</SPAN>);&nbsp; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>result.Columns.Add(<SPAN style="COLOR: #a31515">"Col3"</SPAN>);&nbsp; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>result.Columns.Add(<SPAN style="COLOR: #a31515">"Col4"</SPAN>);&nbsp; <BR><BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: blue">return</SPAN> result; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier">} </SPAN></P>
<P mce_keep="true">Now we are going to create a unit test for this method. But before doing so, we need to help Visual Studio a bit to resolve certain assemblies. In the business logic project, go the reference node, select the <B>Microsoft.Dynamics.Framework.Reports</B> assembly and set the property <B>'Copy Local</B>' to '<B>True</B>'.</P>
<P>Then, right-click in the editor and choose 'Create unit test...'. Browse to the folder where the business logic assembly is built (for example &lt;...&gt;\DynamicsReportsLibrary1\DynamicsReportsLibrary1\BusinessLogic\bin\debug\)</P>
<P>and select the <B>DynamicsReportsLibrary1.BusinessLogic.dll</B> assembly. Unfold the tree node and select the method you want to debug as shown below:<B></B></P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image004_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image004_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image004_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=156 alt=clip_image004 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image004_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image004_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image004_thumb.jpg"></A></P>
<P>You'll notice that Visual Studio will create test project for you if you don't have one. Alternatively, you can create one by right clicking on the solution and choosing 'Add project' and then select the test project template:</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image006_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image006_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image006_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=202 alt=clip_image006 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image006_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image006_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image006_thumb.jpg"></A></P>
<P>Then you can target this project when creating a unit test.</P>
<P>Visual Studio has generated the following unit test method : <BR><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier>[<SPAN style="COLOR: #2b91af">TestMethod</SPAN>()] <BR></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: " yes? mso-no-proof: new?; courier>public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier> <SPAN style="COLOR: blue">void</SPAN> MyMethodTest() <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier>{ <BR></SPAN><SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>DataTable</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier> expected = <SPAN style="COLOR: blue">null</SPAN>; <SPAN style="COLOR: green">// TODO: Initialize to an appropriate value <BR></SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">DataTable</SPAN> actual; <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>actual = <SPAN style="COLOR: #2b91af">Report1</SPAN>.MyMethod(); <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Assert</SPAN>.AreEqual(expected, actual); <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Assert</SPAN>.Inconclusive(<SPAN style="COLOR: #a31515">"Verify the correctness of this test method."</SPAN>); <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier>} 
<P mce_keep="true"></SPAN>In our example, as we use the <B>DataTable</B> type, we'll also need to add references to <B>System.Data</B> and <B>System.xml </B>in order to get your test project to build. Once you've done that, you should be able to build your solution and run the test. You can either do this from the test toolbar:</P>
<P><B><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image008_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image008_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image008_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=39 alt=clip_image008 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image008_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image008_thumb.jpg" width=232 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image008_thumb.jpg"></A></B></P>
<P>or from the test view, where you can select each unit test individually.</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image010_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image010_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image010_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=118 alt=clip_image010 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image010_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image010_thumb.jpg" width=197 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image010_thumb.jpg"></A></P>
<P>Now you can start rewriting the auto-generated test and do some real testing. For the sake of simplicity, I'll write a simple test, which checks that the created data table actually has 4 columns.</P>
<P class=MsoNormal style="MARGIN-BOTTOM: 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: " yes? mso-no-proof: new?; courier>public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier> <SPAN style="COLOR: blue">void</SPAN> MyMethodTest() <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier>{ <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">DataTable</SPAN> dataTable = <SPAN style="COLOR: #2b91af">Report1</SPAN>.MyMethod(); <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier><SPAN style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN><SPAN style="COLOR: #2b91af">Assert</SPAN>.AreEqual(dataTable.Columns.Count, 4, <SPAN style="COLOR: #a31515">"The data table must have 4 colums"</SPAN>); <BR></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: " yes? mso-no-proof: new?; courier>} <BR></SPAN>
<P>Running this test provides the following output:</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image012_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image012_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image012_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=83 alt=clip_image012 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image012_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image012_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image012_thumb.jpg"></A></P>
<H4>What about Debugging?</H4>
<P>That's what we initially wanted to achieve, wasn't it?. Well, that's just a few clicks away. Put a breakpoint at the beginning of your BL method and from the test view window, right-click on the test method and select '<B>Debug Selection'</B>.</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image014_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image014_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image014_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=215 alt=clip_image014 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image014_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image014_thumb.jpg" width=234 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image014_thumb.jpg"></A></P>
<P>Next thing you know, you are hitting your breakpoint and you can start, debugging your business logic:</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image016_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image016_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image016_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=107 alt=clip_image016 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image016_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image016_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image016_thumb.jpg"></A></P>
<H3>Code coverage</H3>
<P>As a freebie, you can get Visual Studio to calculate the code coverage for you. Simply edit the test configuration (Tools -&gt; Edit Test Run Configuration -&gt; Local Test Run) to enable the code coverage instrumentation on your BL assembly</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image018_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image018_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image018_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=174 alt=clip_image018 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image018_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image018_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image018_thumb.jpg"></A></P>
<P>Then re-run the test, and click on the '<B>Show Code Coverage Results' </B>icon in the toolbar of the Test Results window, which will give you the nice view below for free:</P>
<P><A href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image020_2.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image020_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image020_2.jpg"><IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=61 alt=clip_image020 src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image020_thumb.jpg" original-url="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image020_thumb.jpg" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/vnicolas/WindowsLiveWriter/DebuggingbusinesslogicinAX2009SSRSreport_CE0F/clip_image020_thumb.jpg"></A></P>
<H3>Conclusion</H3>
<P>The technique described above shows how to debug business logic for SSRS based AX 2009 reports with a quick turn-around time, following the <A href="http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx">Test Driven Development</A> methodology and providing code coverage measurement on the side. Beware that there might be some scenarios where attaching to the server process is the only way to track a specific bug. Some bugs might only show there ugly faces when the report in running in its deployment context on the server. But if you follow the good principles of <A href="http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa730844(VS.80).aspx">TDD</A> and use this local debugging approach, you might not need to go to these extends and you'll likely catch most of the errors at an early stage. Happy debugging :-).</P>]]></content:encoded>
    </item>
  </channel>
</rss>