【发布时间】:2014-04-17 14:17:53
【问题描述】:
我刚刚编写了工作流活动的第一个版本,它将在项目上运行 Resharper 的代码问题并解析输出以将问题显示为构建警告和错误。
起初,我打算只调用Resharper's command line 并手动解析生成的xml。在摆弄Resharper's SDK 中的 dll(主要通过反汇编)之后,我找到了一种使用它自己的公共类来解析结果的方法,我认为这是一种更优雅、更安全的方法。
我遇到的第一个问题是 nuget 包绝对是巨大。那里有 140mb 的文件,对我来说,这对于单个未分区的包来说是荒谬的。它们之间似乎存在如此严重的耦合,以至于通过仅使用几个模型类和解析器类,我不得不拖动十几个这样的 dll,其中一些似乎与我需要的主要 dll 无关.不过,这不是一个表演障碍,我现在正在为其他事情苦苦挣扎:
最后,我设法找到了 41 个程序集所需的依赖项(这又是疯狂的,但可惜)。最初,我尝试删除所有内容并一一添加缺少的引用,但结果证明这是不可靠的,即使编译成功,仍然缺少一些间接引用。然后,我决定编写一个小型控制台应用程序,以在我使用的主要 Resharper 程序集中查找所有引用的程序集,这给了我提到的 41 个引用。 This is the code I used 查找每个依赖项。
由于这些是我们正在讨论的自定义活动,我决定创建一个单元测试项目来验证它们。仅使用这 41 个参考,一切正常。
不过,当我将活动添加到构建工作流程并将构建控制器指向包含所需程序集的源代码控制文件夹时,每次我安排构建时,该过程都会失败,说明我需要一个来自 Resharper 的 SDK 的额外 dll。例如,这是它询问的第一个:
Could not load file or assembly 'AsyncBridge.Net35, PublicKeyToken=b3b1c0202c0d6a87' or one of its dependencies. The system cannot find the file specified. (type FileNotFoundException)
当我将此特定程序集添加到 TFS 文件夹时,我收到另一个 dll 的另一个类似错误,并且这种情况一直持续下去。
我想知道的是,我如何才能准确地知道工作流 XAML 需要哪些程序集才能正确运行?我的自定义活动 dll 有两个特定的 CodeActivities 和一个仅使用这两个的 XAML 活动。这个 XAML 活动是我在修改后的工作流模板中直接使用的。
我看到除了我的项目中的引用之外,XAML 活动还包含一个 TextExpression.ReferencesForImplementation 部分,其中包含一些程序集名称。我也对这些依赖项运行了依赖项查找程序,结果与 TFS 文件夹中已有的 41 个程序集相同。
同时,我会将整个 SDK 放入自定义程序集文件夹,但我真的希望以后避免这种情况,因为其中包含大量不需要的大 dll。
【问题讨论】:
标签: tfs resharper workflow-foundation-4 tfsbuild assembly-references