<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Gilles' WebLog : BizTalk 2006</title><link>http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx</link><description>Tags: BizTalk 2006</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>BizTalk Decompiler for Reflector 5 on CodePlex</title><link>http://blogs.msdn.com/gzunino/archive/2007/06/27/biztalk-decompiler-for-reflector-5-on-codeplex.aspx</link><pubDate>Thu, 28 Jun 2007 01:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3571246</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/3571246.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=3571246</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=3571246</wfw:comment><description>My BizTalk Decompiler only works with Reflector 4. The updated version for Reflector 5 has been available for a while on CodePlex: http://www.codeplex.com/reflectoraddins...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2007/06/27/biztalk-decompiler-for-reflector-5-on-codeplex.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3571246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/Code/default.aspx">Code</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>Date/Time tracked with BAM must be expressed in Universal Coordinated Time (UTC)</title><link>http://blogs.msdn.com/gzunino/archive/2006/07/18/670317.aspx</link><pubDate>Wed, 19 Jul 2006 02:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:670317</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/670317.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=670317</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=670317</wfw:comment><description>All date/time tracked by BAM must be expressed in UTC. BAM depends on this to provide accurate durations, among many other things. This is clearly explained here . It was also the case for BizTalk 2004 even if the documentation gave subtle hints instead...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/07/18/670317.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=670317" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BAM Portal Activity Search: "This action cannot be performed because one or more database(s) appears corrupted"</title><link>http://blogs.msdn.com/gzunino/archive/2006/07/12/663790.aspx</link><pubDate>Thu, 13 Jul 2006 00:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:663790</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/663790.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=663790</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=663790</wfw:comment><description>When using the BAM Portal Activity Search feature, you may be directed to an error page with the above error message. This error message means that there are instances with duplicate ID in the activity you were searching. If you look at the "Application"...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/07/12/663790.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=663790" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BizTalk Addin for Reflector</title><link>http://blogs.msdn.com/gzunino/archive/2006/06/09/623391.aspx</link><pubDate>Fri, 09 Jun 2006 19:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:623391</guid><dc:creator>gzunino</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/623391.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=623391</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=623391</wfw:comment><description>This is an addin for Reflector that allows you to list all BizTalk artifacts contained in an assembly and extract them. Installation Donwload the attached file and extract Reflector.BizTalkDecompiler.dll into the same directory as Reflector (otherwise...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/06/09/623391.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=623391" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/gzunino/attachment/623391.ashx" length="14643" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BizTalk Server 2006 Best Practices Analyzer has shipped!</title><link>http://blogs.msdn.com/gzunino/archive/2006/06/01/613617.aspx</link><pubDate>Fri, 02 Jun 2006 03:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:613617</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/613617.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=613617</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=613617</wfw:comment><description>The BizTalk Server 2006 Best Practices Analyzer automatically examines a BizTalk Server 2006 deployment and generate a list of issues pertaining to best practices standards for BizTalk Server deployments. The primary use of this tool is to examine BizTalk...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/06/01/613617.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=613617" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BAM Query Service: What is it and how can I use it?</title><link>http://blogs.msdn.com/gzunino/archive/2006/05/31/bam-query-service-what-is-it-and-how-can-i-use-it.aspx</link><pubDate>Thu, 01 Jun 2006 00:48:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:612294</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/612294.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=612294</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=612294</wfw:comment><description>If you have installed BAM (BizTalk Server 2004 or BizTalk Server 2006), you may have noticed that a web service called the "BAM Query Service" got installed. As its name hints, this web service allows the BAM Portal to retrieve BAM instance data without...(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/05/31/bam-query-service-what-is-it-and-how-can-i-use-it.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=612294" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>BizTalk Server Team Product Management has a Blog!</title><link>http://blogs.msdn.com/gzunino/archive/2006/03/21/557290.aspx</link><pubDate>Wed, 22 Mar 2006 01:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:557290</guid><dc:creator>gzunino</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/557290.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=557290</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=557290</wfw:comment><description>Visit it here . Kris, Steve, Michael and Mark share product updates, links to training materials and even employment opportunities ! I subscribed to their RSS feed....(&lt;a href="http://blogs.msdn.com/gzunino/archive/2006/03/21/557290.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=557290" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2004/default.aspx">BizTalk 2004</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item><item><title>Debugger Visualizer for BizTalk 2006: MessageContext</title><link>http://blogs.msdn.com/gzunino/archive/2006/03/20/555788.aspx</link><pubDate>Mon, 20 Mar 2006 21:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:555788</guid><dc:creator>gzunino</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/gzunino/comments/555788.aspx</comments><wfw:commentRss>http://blogs.msdn.com/gzunino/commentrss.aspx?PostID=555788</wfw:commentRss><wfw:comment>http://blogs.msdn.com/gzunino/rsscomments.aspx?PostID=555788</wfw:comment><description>&lt;P&gt;Visual Studio 2005 added support for &lt;A href="http://msdn2.microsoft.com/en-us/library/zayyhzts.aspx"&gt;Debugger Visualizers&lt;/A&gt;. With debugger visualizers, developers can&amp;nbsp;define what information (and in what form) is shown in the debugger for a specific type. There are many visualizers for various .NET types floating around.&amp;nbsp;Here is a small list of the most popular ones: &lt;A href="http://blog.bretts.net/?p=11"&gt;ASP.NET Cache&lt;/A&gt;, &lt;A href="http://regex.osherove.com/Articles/RegexKit.html"&gt;Regular Expression&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/howardvanrooijen/archive/2005/11/24/2424.aspx"&gt;XmlDocument (and other Xml related types)&lt;/A&gt;, a &lt;A href="http://www.rthand.com/DesktopModules/Articles/ArticlesView.aspx?tabID=0&amp;amp;alias=RightHand&amp;amp;lang=en-US&amp;amp;ItemID=15&amp;amp;mid=10244"&gt;powerful looking DataSet visualizer&lt;/A&gt; and there is even a &lt;A href="http://geekswithblogs.net/khanna/archive/2006/01/05/64903.aspx"&gt;WindowsIdentity visualizer&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;I am not going to explain in details how to write your own visualizer. You can find &lt;A href="http://msdn2.microsoft.com/en-us/library/ms164759(VS.80).aspx"&gt;step by step instructions on MSDN&lt;/A&gt;. Most existing debugger visualizers I mentionned in the previous paragraph also have home pages where you will find details on how to write your own or even source code.&lt;/P&gt;
&lt;P&gt;I'd like to share some tricks you might find useful when writing your own visualizers:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can write visualizers for public (obvious!) or&amp;nbsp;internal&amp;nbsp;or private types. The trick for non public types is to use the Assembly Qualified Name of the type you want to visualize. For instance, BizTalk 2006's MessageContext property is actually an internal type (see purple type name below):&lt;/LI&gt;&lt;/UL&gt;&lt;FONT size=2&gt;
&lt;BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;[assembly: &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;B&gt;&lt;FONT color=#000080 size=2&gt;DebuggerVisualizer&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;typeof&lt;/FONT&gt;&lt;FONT size=2&gt;(&amp;lt;type of visualizer&amp;gt; &lt;/FONT&gt;&lt;FONT size=2&gt;),&lt;/FONT&gt;&lt;/FONT&gt; &lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;typeof&lt;/FONT&gt;&lt;FONT size=2&gt;(&amp;lt;type of visualizer source&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;),&lt;/FONT&gt; &lt;FONT face="Courier New"&gt;TargetTypeName &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#808000 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;"Microsoft.BizTalk.Message.Interop.MessageContext_ManagedViewOfNative, Microsoft.BizTalk.Pipeline, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;,&lt;/FONT&gt; &lt;FONT face="Courier New"&gt;Description &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#808000 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#800080 size=2&gt;"&amp;lt;description&amp;gt;"&lt;/FONT&gt;&lt;FONT size=2&gt;)]&lt;/FONT&gt;&lt;/FONT&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;UL&gt;
&lt;LI&gt;Your visualizer code runs non JIT'ed. So make sure you do not perform too much work or it will be slow. If you do too much, the expression evaluator will time out and interrupt your visualizer with an "Expression Evaluation timed out exception". 
&lt;LI&gt;Use DataGrid instead of DataGridView. I know&amp;nbsp;I used a DataGridView in my visualizer, but the DataGrid is faster, especially when running non JIT'ed.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;To illustrate these points, I wrote a BizTalk 2006 MessageContext debugger visualiser. You can download the complete solution BTSVisualizers.zip below. It works with Visual Studio 2005 and BizTalk 2006 only.&lt;/P&gt;
&lt;P&gt;Load the visualizer solution in Visual Studio and build the release comfiguration.To install the MessageContext visualizer, shut down all instances of Visual Studio and copy BTSVisualizers.dll to &lt;FONT face="Courier New"&gt;%VS8ROOT%\Common7\Packages\Debugger\Visualizers&lt;/FONT&gt;. (If you installed Visual Studio at the default location, that would be &lt;FONT face="Courier New"&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\Packages\Debugger\Visualizers&lt;/FONT&gt;) That's it!&lt;/P&gt;
&lt;P&gt;The next time you debug a pipeline (by attaching to BTSNTSVC.exe), you can hover the mouse on the "Context" variable of the message and see all entries in the message context:&lt;/P&gt;
&lt;CENTER&gt;&lt;A href='/photos/gzunino/images/555793/original.aspx'&gt;&lt;IMG src="/photos/gzunino/images/555793/original.aspx" width=500&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;
&lt;CENTER&gt;&lt;A href='/photos/gzunino/images/555790/original.aspx'&gt;&lt;IMG src="/photos/gzunino/images/555790/original.aspx" width=500&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Unfortunately, this visualizer will not display anything useful unless you are debugging a BizTalk artifact by attaching to BTSNTSVC.exe. This is because most debugging tools (like pipeline.exe) do not populate the message context.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=555788" width="1" height="1"&gt;</description><enclosure url="http://blogs.msdn.com/gzunino/attachment/555788.ashx" length="26201" type="application/x-zip-compressed" /><category domain="http://blogs.msdn.com/gzunino/archive/tags/Code/default.aspx">Code</category><category domain="http://blogs.msdn.com/gzunino/archive/tags/BizTalk+2006/default.aspx">BizTalk 2006</category></item></channel></rss>