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团队将很乐意帮助您解决问题。