在TeamCity构建步骤中运行Package Manager命令

时间:2016-05-17 17:53:33

标签: teamcity nuget-package teamcity-9.0

描述

我需要在构建项目之前签署nuget包(MathNet.Numerics),为此,我正在使用Nivot.StrongNaming包,并在包中运行以下命令经理控制台

Install-Package Nivot.StrongNaming
$root = join-path (split-path $dte.solution.filename) packages
$solution = (split-path $dte.solution.filename)
$key = Import-StrongNameKeyPair -KeyFile $solution\MuProjectFolder\Key.snk
dir -rec  $root\MathNet.Numerics.3.11.0\*.dll | where { -not (Test-StrongName $_) } | Set-StrongName -KeyPair $key -Verbose

(注意我不能使用已签名的软件包版本,因为这是一个共享项目,它会破坏其他项目...)

问题

有没有办法在尝试构建解决方案之前将这些步骤添加到TeamCity?这将确保我们签署它。

如何在Team City项目的构建步骤中运行某些Package Manager控制台命令(Visual Studio)?

我可以将其作为命令行运行吗?

1 个答案:

答案 0 :(得分:2)

我已经这样做了,假设Nivot.StrongNaming不是packages.config中的引用包 - 如果它只是忽略安装包的相关步骤。

我还固定了版本号,因此导入powershell模块文件更容易 - 最终您可能需要修改路径以使其在您的环境中运行,但从概念上讲它很好。

  1. 将以下脚本保存到.ps1并将其添加到版本控制中 - 这样您就知道它将在您需要时在构建代理上。 sign-assembly-using-nivot.ps1

  2. 使用命令行步骤创建构建配置以安装Nivot.StrongNaming(可选,具体取决于我的假设)和PowerShell步骤以运行脚本。我正在安装MathNet.Numerics,因为我没有解决方案。

  3. enter image description here

    命令行运行器,以便在需要时安装Nivot.StrongNaming enter image description here

    PowerShell runner to bootstrap script enter image description here

    1. 现在创建这些变量,以便您轻松调整环境所需的路径。
    2. enter image description here

      您的构建日志应该看起来像这样

      enter image description here

      希望这有帮助。