【问题标题】:F# FAKE passing /gac to FxCopHelperF# FAKE 将 /gac 传递给 FxCopHelper
【发布时间】:2014-06-02 14:16:50
【问题描述】:

在我的构建脚本中,当我在本地机器(Win 8.1 x64)上运行它时,整个脚本运行良好。

当我在我的构建服务器(Jenkins,Server 2012 r2 x64)上运行它时,FxCop 任务失败,因为它无法解析我的某些第 3 方库所需的任何 System.* 程序集引用使用。

我很清楚正在使用的 FxCop (10.0) 的版本是相同的,因为它已签入项目的 git repo。

我不明白为什么它在我的本地机器上工作正常,而不是在构建服务器上,但根据我的谷歌搜索结果,我应该能够将 /gac 切换到 FxCop为了告诉它在扫描程序集时它应该查看那里以解析它需要的引用。

我只是不知道如何使用 FAKE 将该开关传递给 FxCop。

目标如下,但老实说和FAKE网站上的FxCop教程基本一样,我只是去掉了一些dll和exe的名称。

Target "FxCop" (fun _ ->
    !! (build @@ "**/*.dll")
        ++ (build @@ "**/*.exe")
        |> FxCop (fun p ->
            {p with
                ReportFileName = testResults + "FXCopResults.xml";
                ToolPath = "./tools/FxCop/FxCopCmd.exe" })
)

我查看了FxCopHelpersource,但我的 F# 不是那么好,而且(对我而言)似乎没有一种传递额外命令行选项的方式比已经指定的。

有人有什么建议吗?

【问题讨论】:

标签: jenkins f# f#-fake


【解决方案1】:

您要查找的参数是 UseGACSwitch,它是一个布尔值。 https://github.com/fsharp/FAKE/blob/master/src/app/FakeLib/FXCopHelper.fs#L77

更新您的示例:

Target "FxCop" (fun _ ->
    !! (build @@ "**/*.dll")
        ++ (build @@ "**/*.exe")
        |> FxCop (fun p ->
            {p with
                ReportFileName = testResults + "FXCopResults.xml";
                UseGACSwitch = true;
                ToolPath = "./tools/FxCop/FxCopCmd.exe" })
)

这应该可以让您的构建服务器满意。您可能已经发现了这一点或其他东西,但每个人都知道有选择是件好事。谢谢你。美好的一天。

【讨论】:

  • 由于我的问题,UseGACSwitch 被添加到 FAKE 中。请参阅我的问题上的 cmets 以查看实际的拉取请求。
猜你喜欢
  • 2018-10-24
  • 1970-01-01
  • 2019-04-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
相关资源
最近更新 更多