NuGet Pack - 针对nuspec或csproj的不同问题包装

时间:2018-01-20 19:05:14

标签: c# nuget teamcity

我在这里遇到了一些问题。我正在使用NuGet和TeamCity。我已尝试使用nuspec文件执行NuGet pack,并且我也尝试过使用csproj文件。每个都有自己的问题:

在TeamCity中,如果我将 nuspec 文件与NuGet pack一起使用,则nuspec文件中的$version$令牌不会更新。

如果我使用 csproj 文件将TeamCity更改为NuGet pack,则$version$令牌会更新,但生成的包只包含EXE,并且所有依赖集会缺失。使用nuspec文件时不会发生此问题。

有没有办法让两全其美?我希望更新$version$令牌(使用csproj时有效),我希望将相关程序集包含在程序包中(可以使用当使用nuspec时。

注意:我希望有一个解决方案不涉及创建PowerShell脚本,或者将代码/项目与构建技术(TeamCity)相结合的东西。

2 个答案:

答案 0 :(得分:0)

我能够使用$ version $变量并在程序包中包含依赖程序集。它在nuspec文件中包含了什么:

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

所以bin \ release中的所有东西都会在包中的内容文件夹中结束。我不确定内容文件夹是否是正确的位置,但至少它在那里。如果需要,我可以稍后更改目标。

要点:
- TeamCity根据csproj文件构建 - nuspec文件有$ version $,它会更新 - nuspec文件指定要包含的文件(见上文)

答案 1 :(得分:0)

这里的正确方法是打包csproj,但是对于Version nuspec元数据,有一个对应的nuspec文件和$ version $ token。 NuGet更喜欢来自nuspec的元数据值,如果它们是未通过的令牌,它将查看程序集元数据以适当地替换它。

如果您发现这不是预期的行为,请在https://github.com/nuget/home/issues提交问题,NuGet团队将很乐意帮助您解决问题。