运行 TeamCity 构建步骤中的包管理器命令

Run Package Manager commands in TeamCity build step

描述

我需要在构建我的项目之前签署 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 项目的构建步骤中 运行 一些包管理器控制台命令 (Visual Studio)?

我可以 运行 它作为命令行吗?

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

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

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

  2. 创建一个构建配置,其中包含用于安装 Nivot.StrongNaming 的命令行步骤(根据我的假设是可选的)和用于 运行 脚本的 PowerShell 步骤。我正在安装 MathNet.Numerics 只是因为我没有解决方案。

命令行 运行如果需要,可以安装 Nivot.StrongNaming

PowerShell 运行bootstrap 脚本

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

您的构建日志应如下所示

希望对您有所帮助。