首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OctoPack未在nuspec文件中填充占位符

OctoPack未在nuspec文件中填充占位符
EN

Stack Overflow用户
提问于 2018-03-07 14:49:17
回答 2查看 358关注 0票数 1

我有一个包含许多项目的解决方案,其中大约有十几个项目安装了Octopack,当TeamCity运行msbuild /p:RunOctoPack=true /p:OctoPackEnforceAddingFiles=true时,软件包被正确地生成。从p:/OctoPackEnforceAddingFiles标志可以看出,安装了Octopack的每个项目都有一个nuspec文件。

我们遇到的问题是,Octopack没有遵守https://learn.microsoft.com/en-gb/nuget/reference/nuspec#replacement-tokens中指定的nuspec占位符。我们现在要使用的是$id$,它应该等于正在打包的项目的程序集名称。相反,当我们运行Octpack时,这个$id$令牌是空的。

我可以在https://octopus.com/docs/packaging-applications/creating-packages/nuget-packages/using-octopack#UsingOctoPack-Replacementtokens上看到Octopack允许手动重写这些令牌,但这无助于我,因为Octopack是在解决方案上运行,但是我需要打包的项目的名称。

我能做些什么来解决这个问题呢?目前,我们基本上已经在nuspec文件中硬编码了项目名称,但是这个名称变得脆弱和难以处理,我们想要修复它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 11:08:36

通过将以下内容添加到csproj文件中,我就可以做到这一点

代码语言:javascript
复制
  <PropertyGroup>
      <OctoPackNuGetProperties>id=$(AssemblyName)</OctoPackNuGetProperties>
  </PropertyGroup>

这将程序集名称通过as id传递给Octo.exe,后者将通过其-Properties参数将其传递给NuGet.exe。

票数 2
EN

Stack Overflow用户

发布于 2018-03-08 10:25:05

您试过而不是在NuSpec中提供$id$部分吗?Octopack应该尝试并生成它(它知道它被应用于什么?)?

另一种方法可以是使用$(ProjectName)宏的预构建事件来更新相关的nuspecs。在您的情况下,取决于您的构建过程,可能会坚持解决方案范围的预构建过程来更新所有nuspec。

我个人放弃使用八达通,目前使用的是假的(F# Make)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49154721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档