【问题标题】:In the TeamCity "NuGet Pack" runner type, how can I avoid that the BasePath option is used?在 TeamCity“NuGet Pack”运行器类型中,如何避免使用 BasePath 选项?
【发布时间】:2013-10-17 11:33:12
【问题描述】:

我目前正在使用 Teamcity 7.x,我们还没有准备好升级。

对于我们的内部 NuGet 包,我的规范是相对于 nuspec 文件的位置(默认情况下),但在 NuGet Pack 运行器中运行时,它们必须相对于构建检出目录。

例如,我应该有一个包含以下内容的 nuspec:

<files>
  <file src="Content\**" target="content" />
</files>

但这在 TeamCity 中不起作用,因为它会自动添加 BasePath 选项,所以我必须将我的 nuspec 更改为:

<files>
  <file src="Source\Project\Content\**" target="content" />
</files>

如何避免这种情况?我可以更改我的规范,但我在一个构建步骤中创建了许多包,我正在尝试使用新的 -IncludeReferencedProjects 选项,但由于它看起来在错误的位置而失败。

BasePath 选项是不需要的,为什么默认是build checkout 目录呢?

【问题讨论】:

    标签: teamcity nuget nuget-package teamcity-7.0


    【解决方案1】:

    根据以下文档,步骤 2,项目符号 3: http://confluence.jetbrains.com/display/TCD7/NuGet+Pack

    • 指定基目录,nuspec文件中定义的文件所在的目录 位于(路径所在的目录) nuspec 被解析,通常是一些 bin 目录)。如果留空, TeamCity 将使用 build checkout 目录作为基本目录。

    您可以尝试将此设置调整为项目的根目录(理论上与您的 nuspec 文件的位置相同),而不是构建检出目录(默认)。

    【讨论】:

    • 这不是我的问题。我的问题是它应该始终使用 nuspec 文件的位置,如果没有指定 -BasePath 选项,这是默认行为。它总是在 NuGet 打包程序中指定的事实是问题所在。理论上我可以通过为每个包添加一个 NuGet 包构建步骤来解决这个问题,但是看到我们的解决方案有超过 20 个包,这实际上是不可维护的。
    【解决方案2】:

    也许你可以尝试使用 octopack,
    源代码:https://github.com/OctopusDeploy/OctoPack
    安装方法:http://octopusdeploy.com/documentation/integration/teamcity

    您不需要使用章鱼部署。您只能使用 octopack 来创建 nuget 包。此插件直接上传您的包本机 teamcity nuget 服务器。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多