It’s becoming more and more eminent to understand under which CLR version (1.0, 1.1 or 2.0) the BizTalk runtime, In-Process host is running. I’ve explained in my previous post the various factors that influence loading appropriate CLR versions and also how you can make use of the config file to force a specific version of CLR is always loaded.
There is one more query raised, what happens if you install .NET Framework 3.0 on your BizTalk server (both 2004 and 2006)? The effect of installing .NET 3.0 doesn’t introduce that much behavior difference when compared to installing .NET 2.0 on a BizTalk 2004 machine (built using .NET 1.1 with CLR 1.0). Because .NET 3.0 is still based on .NET 2.0 and shares the same compilers and Common Language Runtime (CLR 2.0). See the following posts from Somasegar and Jason Zanders (comments are more interesting on the both the posts)to see the effect of .NET 3.0.
With all this confusions around different versions of .NET and different versions of BizTalk and different Service Packs, there will certainly be a situation where developers and administrators need to figure out the version of CLR under which the BizTalk Runtime is running. This is where Process Explorer comes to our rescue.
Process explorer’s top window shows a list of currently active processes, and the bottom windows shows either the handles opened by the selected process or it shows the DLL’s and memory mapped files that the selected process has loaded. You need to set the appropriate mode from the menu item “View-> Lower Pane View”. In our case we need to figure out the version of Common Language Runtime core dll (mscorwks.dll) loaded into the BizTalk runtime process (BtsNtSvc.exe). So, we’ll set the “Lower Pane View” to DLL’s (or Ctrl + D).
Also, make sure the following columns are visible Description, Image Path, and Version. To do so, click on “View” menu and select “Select Columns” and in the “Process Image” tab select appropriate columns.
The following screen shot is taken from a machine running BizTalk 2006. You can see clearly from the bottom pane the version of CLR running is 2.0 and physical dll is loaded from the location “C:WINDOWSMicrosoft.NETFrameworkv2.0.50727mscorwks.dll”. BTW, .NET 3.0 is installed in this particular machine, which also proves .NET 3.0 still uses CLR 2.0. In BizTalk 2006 box its quite straight forward it’s all .NET 2.0. Things will become more interesting in BizTalk 2004 scenario.