我在这里遇到了一些问题。我正在使用NuGet和TeamCity。我已尝试使用nuspec文件执行NuGet pack
,并且我也尝试过使用csproj文件。每个都有自己的问题:
在TeamCity中,如果我将 nuspec 文件与NuGet pack
一起使用,则nuspec文件中的$version$
令牌不会更新。
如果我使用 csproj 文件将TeamCity更改为NuGet pack
,则$version$
令牌会更新,但生成的包只包含EXE,并且所有依赖集会缺失。使用nuspec文件时不会发生此问题。
有没有办法让两全其美?我希望更新$version$
令牌(使用csproj时有效),和我希望将相关程序集包含在程序包中(可以使用当使用nuspec时。
注意:我希望有一个解决方案不涉及创建PowerShell脚本,或者将代码/项目与构建技术(TeamCity)相结合的东西。
答案 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团队将很乐意帮助您解决问题。