Skip to content

Latest commit

 

History

History
103 lines (71 loc) · 9.11 KB

File metadata and controls

103 lines (71 loc) · 9.11 KB

Be.Stateless.BizTalk.Transforms

Build Pipelines

Latest Release

Release Preview

Overview

Be.Stateless.BizTalk.Transforms is part of the BizTalk.Factory Runtime Package. This component provides a transform class library for general purpose Microsoft BizTalk Server® development.

Debugging Composite Microsoft BizTalk Server® Maps with Extension Objects

Provided the map fixture class derives from TransformFixture base class and that both Be.Stateless.BizTalk.Transform.Unit and BizTalk.Server.2020.Utilities NuGet packages are referenced, it is possible to debug XSLT maps that make use of extension objects or combine other XSLT stylesheets through xsl:include or xsl:import top-level elements.

Notice that the URIs accepted by the href attribute of these top-level elements are resolved by the XslMapUrlResolver class and must conform to its prescribed grammar. Technically though, during a Microsoft Visual Studio®'s debugging session, it is the MapCustomXsltPathResolver helper class that will actually resolve these URIs, trying to locate an XSLT source file on disk instead of inlined in a TransformBase-derived type or embedded as a resource. This resolution will only succeed provided that:

  • The to-be-debugged XSLT stylesheet file is lying by convention next to the source .btm file —or equivalently, next to the generated .btm.cs file— in the case of a Microsoft BizTalk Server® map defined by a custom XSLT;

  • The to-be-debugged XSLT stylesheet file included or imported through a URI of the form map://type/<map strong type name> is lying next to the source .btm file of the included or imported map type;

  • The to-be-debugged XSLT stylesheet file included or imported through a URI of the form map://resource/<embedded resource name> is lying by convention in a folder, located relatively to the including or importing map, that corresponds to the resource name suffix starting right after what the resource name has in common with the including or importing map type's full name;

  • The to-be-debugged XSLT stylesheet file included or imported through a URI of the form c:\folder\file.xslt exists on disk.

Tips Run the following commands in an elevated session of the "Developer PowerShell for VS 2019" prompt should the error "Retrieving the COM class factory for component with CLSID {E6756135-1E65-4D17-8576-610761398C3C} failed due to the following error: 80040154 Class not registered." occurs while debugging map unit tests:

regsvr32 $(Join-Path $env:VSINSTALLDIR 'Common7\IDE\Remote Debugger\x64\msdia140.dll')
regsvr32 $(Join-Path $env:VSINSTALLDIR 'Common7\IDE\Remote Debugger\x86\msdia140.dll')

Do not forget to reference the BizTalk.Server.2020.Utilities NuGet package should the error "Could not load file or assembly Microsoft.VisualStudio.Dia.dll." occurs.

Customizing To-Be-Debugged XSLT File Resolution

Should the default resolution of the XSLT source file not be conclusive, due to other file layout conventions for instance, the map fixture's developer can control the resolution mechanism by overriding the TransformFixture.TryResolveXsltPath method, which will always have the precedence over the default resolution used during debugging sessions.

Developer Help

Detailed developer help has been provided as XML comments directly embedded in source code. Though developers usually browse through this documentation while developing thanks to, for instance, JetBrains ReSharper quick help —ctrl+shift+F1, an online version of this inlined help has also been provided here for greater reachability: