【发布时间】:2017-02-15 10:31:42
【问题描述】:
我希望我在这里忽略了一些东西,但我遇到了一个问题,我找不到一个快乐的解决方法。
我将 VSTS 用于我的 CI 解决方案。每次提交时,BizTalk 应用程序都会被提取到专用的构建服务器、编译并执行单元测试。
我不希望我的任何 BizTalk 解决方案程序集进入构建服务器上的 GAC,因为 Visual Studio 将使用这些而不是项目引用进行编译。
当构建代理尝试构建包含自定义 functoids 项目的解决方案时出现问题,我收到以下错误:
未找到 Functoid:guid (1d5de785-c639-4040-9704-c65a11127115) 和 functoid id (6003)。检查实现此 functoid 的程序集是否存在于 D:\Program Files (x86)\Microsoft BizTalk Server 2013 R2\Developer Tools\Mapper Extensions 中。如果 functoid 没有公开任何内联代码,请确保其程序集在 GAC 中也可用
那么,functoid 程序集需要在 GAC 中吗?麻烦的是,它引用了一个 common.components 程序集,这意味着它也需要经过 GAC 处理,这让我回到了我不想去的地方!这是一个问题,因为下次构建代理尝试构建一个引用 common.components 的项目时,它将使用恰好在 GAC 中出现的“旧”版本,而不是刚刚从 GAC 中提取的最新版本repo 并与依赖项目放在同一个解决方案中。
如果其他人遇到同样的问题,我很乐意听取您的意见。
【问题讨论】:
-
我要说正确的解决方案是更新 GAC,这是所有 BizTalk App 相关程序集应该始终存在的地方,这就是它的工作原理。 “似乎 BizTalk 项目将使用这些,而不是项目引用”,这就是 .Net 解决程序集的方式。与 BizTalk 没有任何关系。
-
感谢您的回答@Johns-305,我同意大会决议与 BizTalk (msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.110).aspx) 无关。但是,需要在 GAC 中的 functoid 是导致此问题的原因。没有自定义functoid,没问题!如果 common.components 在 GAC 中,那么每次提交触发自动构建时,都会在构建服务器上引用“旧”版本。构建代理将从远程仓库获取 common.components 的最新代码,但依赖项目将使用 GAC 中的任何版本构建
-
抱歉,我还是不明白这个问题。构建应该更新所有必要的东西。意思是,GAC 中不应该有任何东西的“旧”版本。它们也应该在构建时得到更新,无论是自然地还是作为特定的构建步骤。
-
啊,所以在 VS 中有一个后期构建步骤,用于 common.components 项目来更新 GAC。我认为这可以工作!我试试看
标签: biztalk