我在 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。即使您使用与以前相同的文件,这似乎也算作一次触摸。