我有一个BizTalk解决方案,它分为三个项目:业务流程,地图和架构。我的一些地图,我不得不在Orchestrations项目中构建,因为它们需要多个输入模式,而且我发现只有BizTalk Mapper才能实现这一点。一旦我让它们工作,我就把它们移到我的Maps项目中。但是当我尝试构建该项目时,每个移动的地图(所有地图上的相同地点)都会出现以下错误:
错误意外标识符:'ÿþ'(第2行,第2列)
错误意外令牌:'<' (第2行,第4栏)
我无法在地图中的任何位置找到这些值,也无法在任何地方找到它们。我尝试以不同的格式保存地图,复制和粘贴到一个新文档,消除第2行(这只是文档创建时自动生成的注释),将地图移回Orchestration项目,所有内容都是从头开始完全重新创建地图。
有没有人见过这个,知道出了什么问题?
谢谢! 斯蒂芬妮
答案 0 :(得分:1)
正如您所知,没有简单的方法可以直接从BizTalk Mapper创建具有多个输入或多个输出的地图。确实这样做是通过BizTalk业务流程实现的。
之后不需要移动生成的地图的一种方法是在地图项目中创建一个空的业务流程。当不再需要时,可以丢弃此编排。
但是,如果您必须将地图从一个项目移动到另一个项目,请注意以下几点:
导入的架构位置
创建地图时,输入和输出模式的位置将记录在生成的.btm文件中。但是,此位置采用两种形式,具体取决于地图相对于导入模式位置的位置。
如果映射使用在引用的程序集中声明的模式,则该位置看起来像生成的.net类型的完全限定名称。如果您从Orchestrations项目生成了地图,但它引用了Schemas和Maps项目中的模式,那么情况就是如此。
如果地图使用在同一项目/程序集中声明的模式,则该位置将记录为相对路径名。
将地图从一个BizTalk项目移动到另一个项目时,必须恢复声明架构位置的正确方法。在文本编辑器中打开.btm文件,并将完全限定名称更改为相对路径,如下所示:
".\imported_schema.xsd"
.Net命名空间
另外,如果您已将地图从一个项目移动到另一个项目,则可能需要更新其.Net命名空间。在创建时,.net名称空间与您的地图相关联,并与其生成的项目中的名称对应。
您可以从Visual Studio Solution Explorer中的.btmp文件属性更改此命名空间。这样,您将始终在同一项目的所有工件中进行一致的命名。
答案 1 :(得分:0)
我对BizTalk一无所知。完全没有。
但是从上面的错误中我推断出有一些文件看起来像这样:
BOM的目的是成为UTF-16编码文件的前两个字节。
因此,该文件看起来像是一个UTF-16编码的XML文件,但在文件的开头有一些空格。
我不知道应该的文件格式是什么,也不知道引入空格的位置,也不知道应该修复的位置。但也许这种分析有帮助。
答案 2 :(得分:0)
与marnix一样,我对'''的第一反应也是Unicode。 也许您的文件以某种方式以不同的格式保存。
尝试在工作和非工作地图文件上执行以下操作:
在Visual Studio中
File > Open > File ... >
Select your map file > Open With ... (the small dropdown on the Open button) >
Binary Editor > OK
也许您可以发现文件之间的差异。
另一种尝试是使用
在Visual Studio中打开您的地图文件 ...(as above)... > Open With ... >
XML Editor > OK
然后
File > Advanced Save Options
现在看看那里显示的是什么编码。也许您只需要在这里更改非工作地图文件的编码(例如,从UTF-16到UTF-8)并再次保存它们以使BizTalk的构建引擎满意。