我在 BizTalk 2010 中有一个使用自定义 XSLT 路径文件的地图。
在 Visual Studio 中对 .xsl 文件中的转换进行更改后,我使用内置工具测试地图文件(右键单击 .btm 文件并选择Test Map)。
这一切都按预期工作,并在 Visual Studio 中生成所需的输出文件。
但是,在将程序集部署到 BizTalk 时,我发现我的任何转换更改都没有反映出来。重新启动主机实例、终止活动实例等都无法解决问题。
为什么我的更改不能进入 BizTalk?
我在 BizTalk 2010 中有一个使用自定义 XSLT 路径文件的地图。
在 Visual Studio 中对 .xsl 文件中的转换进行更改后,我使用内置工具测试地图文件(右键单击 .btm 文件并选择Test Map)。
这一切都按预期工作,并在 Visual Studio 中生成所需的输出文件。
但是,在将程序集部署到 BizTalk 时,我发现我的任何转换更改都没有反映出来。重新启动主机实例、终止活动实例等都无法解决问题。
为什么我的更改不能进入 BizTalk?
同意这是 Visual Studio 中的一个烦恼。
最适合我的是在地图项目上“显示所有文件”以便.btm.cs
文件可见,然后删除.btm.cs
与已更改的地图关联的那些文件。然后重建将强制 VS 重新生成.btm.cs
文件并拉出新的 xslt。
BizTalk 映射文件本身 (.btm) 是被编译的。更改转换时,实际上只编辑了 .xsl 文件,因此 Visual Studio 没有意识到需要重新编译程序集。
要解决此问题,您需要确保 .btm 文件也被编辑。这将迫使全部重新编译。
在BizTalk 2009中,只需打开 .btm 文件并点击Ctrl+S来保存地图似乎就可以解决问题,因为它会更新文件底层 XML 中的时间戳。
但是,在BizTalk 2010中,这似乎不起作用,因为时间戳不再存在。似乎强制重新编译的最简单方法是删除对自定义 .xsl 文件的引用,然后再次将其重新添加,如本博客评论中所建议的那样。
还有一个建议是执行重建可以解决问题,但我个人并没有用这种方法取得任何成功。
在 BizTalk 2010 中,您只需将路径重新粘贴到要在地图属性窗口的自定义 XSLT 路径中使用的 XSLT。即使您使用与以前相同的文件,这似乎也算作一次触摸。