我在我的工作项目中发现了这个问题,想知道是否有任何方法可以避免这种情况,而不是改变我的项目命名空间:
以下是重复此问题的简单步骤:
创建一个biztalk项目,将项目的默认名称空间更改为'CorpName.EDI.Testing'。
在项目中添加对Microsoft.BizTalk.Edi.BaseArtifacts的引用
创建一个新的业务流程,简单地删除一个接收锐利,将其设置为Activate = True,将其过滤表达式设置为(EDI.ST01 ==“997”)
创建端口/消息需要使业务流程看起来有效。
生成。您将看到如下构建错误:
名称空间'CorpName.EDI'中不存在类型或命名空间名称'ST01'(您是否缺少程序集引用?)
从业务流程生成的cs代码如下所示:
new System.Type[] {
typeof(EDI.ST01)
},
new Microsoft.XLANGs.BaseTypes.EXLangPredicateOperator[] {
Microsoft.XLANGs.BaseTypes.EXLangPredicateOperator.eOpEqual
},
显然。如果您自己的项目命名空间具有“EDI”,则编译器将尝试使用您自己的项目命名空间在业务流程中解析表达式“EDI.ST01”,并且它将失败,因为您的项目中没有ST01。
答案 0 :(得分:3)
您所遇到的是一种众所周知的行为'自BizTalk Server 2004以来的业务流程设计器。
没有办法解决它,抱歉。
唯一的解决方案是不使用" EDI"在您的解决方案的命名空间中。
它不是特定于" EDI",如果您尝试使用" BTS"别处。