【问题标题】:Calling a code activity compiled as x86 from a work flow in TFS build 2010从 TFS 构建 2010 中的工作流调用代码活动编译为 x86
【发布时间】:2011-01-19 15:01:22
【问题描述】:
背景
我们需要或至少希望调用一个仅在从编译为 x86 的 .Net 程序集调用时才加载/运行的第 3 方 DLL。为了兼容性,我们通常将 .Net 程序编译为 x86,所以这在过去不是问题。我正在考虑获得一个 x64 版本,但它看起来并不乐观。
真正的问题
当我将我们的代码活动编译为 x86 而不是“任何 CPU”时,构建代理会抛出一个错误,指出它找不到我们的代码活动。
问题
【问题讨论】:
标签:
workflow-foundation
tfsbuild
【解决方案1】:
TFS Build 2010 是 64 位,这可能会导致问题。
但是为什么要将团队构建使用的代码活动编译为 x86 程序集?该代码活动是否使用第 3 方 dll?
【解决方案2】:
我们遇到了同样的问题,即我们的工作流程中的一个代码活动为文档目的进行了一些程序集加载和反射(同时在 TFS 2012 中:))。
我们为命令行 exe 创建了一个小型解决方案,可链接到所有需要的代码活动 cs 文件。在 exe 中,我们使用以下内容调用活动:
CreateSpecs createSpecsAction = new CreateSpecs();
var Arguments = new Dictionary<string, object>
{
{"BinariesDirectory",BinariesDirectory},
{"FileMask",FileMask},
{"ExcludeFiles",ExcludeFiles},
{"ResultFilePath",ResultFilePath}
};
var output = WorkflowInvoker.Invoke(createSpecsAction, Arguments);
在我们的工作流模板中,我们在构建 x86 时调用 exe,否则对活动进行正常调用。为了调试活动,我们切换到 AnyCPU。