【发布时间】:2019-02-11 01:01:12
【问题描述】:
解决下述错误的解决方法是有效地删除七个标准 BizTalk Server 2016 数据库 functoid 提供的功能。希望能够不必这样做。
在构建项目时,我们收到此错误:
“MapperCompiler”任务意外失败。 System.ApplicationException:无法加载包装器:C:\Program Files (x86)\Microsoft BizTalk Server 2016\Developer Tools\Mapper Extensions\Microsoft.BizTalk.CrossReferencingFunctoids.dll。 ---> System.IO.FileNotFoundException: Mapper Compiler: Unable to load assembly from file or partial name C:\Program Files (x86)\Microsoft BizTalk Server 2016\Developer Tools\Mapper Extensions\Microsoft.BizTalk.CrossReferencingFunctoids.dll 在 Microsoft.BizTalk.Mapper.OM.FunctoidManager.AddWrapper(字符串引用) 在 Microsoft.BizTalk.Mapper.OM.FunctoidManager.LoadWrappers(字符串 [] 引用) --- 内部异常堆栈跟踪结束 --- 在 Microsoft.VisualStudio.BizTalkProject.Compiler.MapCompiler.Compile(BizTalkBuildSnapshot buildSnapshot,IEnumerable
1 mapFilesToCompile, IEnumerable1 schemaFiles,List1& generatedCodeFiles, List1& xsltFiles) 在 Microsoft.VisualStudio.BizTalkProject.BuildTasks.MapperCompiler.Execute() 在 Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute() 在 Microsoft.Build.BackEnd.TaskBuilder.d__26.MoveNext() {我的项目名称}
同时,在尝试打开现有地图或创建新地图时,我们会收到以下错误:
大会位置图片(显示其大小和 MS 发布日期):
至少从版本 2006 R2 开始,此程序集一直是 BizTalk Server 映射数据库 functoid 的库存组件。 BTS 的 MS 文档中描述了 functoid:
functoid 在 Visual Studio 的地图设计图面上如下所示:
这些 BizTalkMgmtDb 表是交叉引用 functoid 的目标:
仅供参考here 是我能找到的关于这个确切症状的最古老的帖子。未发布此帖子的解决方案:
这是我们可怕的解决方法:删除 Microsoft.BizTalk.CrossReferencingFunctoids.dll
从...位置删除程序集的影响
C:\Program Files (x86)\Microsoft BizTalk Server 2016\Developer Tools\Mapper Extensions
...是双重的:
- 错误(在构建具有地图的项目以及尝试创建新地图或显示现有地图时)消失了。
- 交叉引用 functoid 的用处不可用。这七个 functoid 仍然出现在映射设计图面的工具箱中,但如果您尝试使用其中一个,则会收到此消息(functoid 仍然出现在工具箱中 - 可能是因为程序集仍在 GAC 中):
注意:仅供参考,我无法在我的 Windows 10 电脑上出现任何这些症状,即使通过以下步骤将其配置为匹配服务器环境:
- 已安装 BTS 2016 累积更新 5
- 安装了与服务器上使用的相同的 .NET Framework 4.7.2(又名 4.7.03062)
问题的服务器环境:
- BizTalk Server 2016 包括累积更新 5
- BizTalk 安装在 Windows Server 2012 R2 Datacenter (x64) 上 - 特别是版本 6.3.9600 Build 9600。服务器是最新的补丁
- Visual Studio 2015(与 BTS 2016 配合使用所需的版本)
- SQL Server 2016 SP2(内部版本 1.3.0.5161.0)数据库位于单独的计算机上
【问题讨论】:
-
如果您将其从 GAC 中删除会怎样。将其保留在 Mapper Extensions 中并重新启动并刷新工具箱?
-
我确实尝试了你的建议,r3verse。结果与帖子的最后一张图片中显示的相同。我们还修复了 BizTalk;我什至在执行修复之前从 GAC 中删除了程序集的文件夹结构,以证明修复后的新副本是由修复创建的。此外,将程序集的两个副本(一个在 Program Files (x86)\... 中,一个在 GAC 中)替换为我的 Windows 10 PC 上的实际文件,该文件对此程序集没有问题。每次我在 GAC 中进行任何更改后都重新启动服务器。
-
确保您尝试使用新的 BizTalk 项目,而不是现有的项目。还要验证您是否将 .NET Framework 4.6 用于项目目标。此外,检查“选择工具箱项目”->“BizTalk Mapper Functoids”窗口,查看 functoid 的目录是否看起来不错。如果此时仍无法正常工作,请尝试删除一些与 .Net 框架相关的 Windows 更新。从删除您并不真正需要的框架版本开始(如 .NET Framework 4.7.2)。最近他们遇到了一些与此相关的问题,请参阅advisory。
-
是的 r3verse,我已经进行了这些练习(我用图片夸大了帖子,但我确实有一张展示选择工具箱项目例程的图片)。 .NET 版本为 4.7.2 的原因是管理层希望将此服务器设置为当前版本。我创建了针对 4.6 的全新 BTS 项目,甚至尝试过 x86。但这已经经历了很多次迭代,我会再试一次。此外,我们已经解决了 2018 年 7 月汇总问题,并且该服务器确实具有更新的 8 月汇总,其中包括对 7 月汇总的修复。
-
修复 BizTalk 安装。
标签: visual-studio-2015 biztalk biztalk-2016