NuGet Pack – 针对nuspec或csproj打包的不同问题

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

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

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

有没有办法让两全其美? 我想要更新$version$ token(在使用csproj时有效),我希望依赖程序集包含在包中(使用nuspec时可以正常工作)。

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

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

    

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

摘要:
– TeamCity针对csproj文件构建
– nuspec文件有$ version $,它会更新
– nuspec文件指定要包含的文件(见上文)

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

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