NuGet 包 - 针对 nuspec 或 csproj 打包的不同问题
NuGet Pack - Different Problems Packing Against nuspec or csproj
我 运行 在这里遇到了一些陷阱。我正在使用 NuGet 和 TeamCity。我试过 NuGet pack
使用 nuspec 文件,我也试过使用 csproj 文件。每个都有自己的问题:
在 TeamCity 中,如果我将 nuspec 文件与 NuGet pack
一起使用,则 nuspec 文件中的 $version$
标记不会更新。
如果我使用 csproj 文件将 TeamCity 更改为 NuGet pack
,$version$
令牌会更新,但是生成的包中只有 EXE ,并且所有依赖程序集都丢失了。使用 nuspec 文件时不会出现此问题。
有没有办法两全其美?我希望更新 $version$
令牌(在使用 csproj 时有效), 和 我希望将依赖程序集包含在包中(在使用 csproj 时有效)使用 nuspec).
注意:我希望有一个解决方案不涉及创建 PowerShell 脚本,或者将 code/project 与构建技术 (TeamCity) 相结合的解决方案。
我能够使用 $version$ 变量并将依赖程序集包含在包中来实现。它在 nuspec 文件中包含什么:
<files>
<file src=".\*.*" target="content" />
</files>
所以基本上 bin\release 中的所有内容最终都在包的内容文件夹中。我不确定内容文件夹是否在正确的位置,但至少它在那里。如果需要,我可以稍后更改目标。
总结:
- TeamCity 针对 csproj 文件构建
- nuspec 文件有 $version$,它得到更新
- nuspec 文件指定要包含的文件(见上文)
正确的方法是针对 csproj 进行打包,但有一个相应的 nuspec 文件,其中包含版本 nuspec 元数据的 $version$ 标记。 NuGet 更喜欢来自 nuspec 的元数据值,如果它们是未通过的标记,它将查看程序集元数据以适当地替换它。
也就是说,如果您发现这不是预期的行为,请在 https://github.com/nuget/home/issues 提交问题,NuGet 团队将很乐意帮助您解决问题。
我 运行 在这里遇到了一些陷阱。我正在使用 NuGet 和 TeamCity。我试过 NuGet pack
使用 nuspec 文件,我也试过使用 csproj 文件。每个都有自己的问题:
在 TeamCity 中,如果我将 nuspec 文件与 NuGet pack
一起使用,则 nuspec 文件中的 $version$
标记不会更新。
如果我使用 csproj 文件将 TeamCity 更改为 NuGet pack
,$version$
令牌会更新,但是生成的包中只有 EXE ,并且所有依赖程序集都丢失了。使用 nuspec 文件时不会出现此问题。
有没有办法两全其美?我希望更新 $version$
令牌(在使用 csproj 时有效), 和 我希望将依赖程序集包含在包中(在使用 csproj 时有效)使用 nuspec).
注意:我希望有一个解决方案不涉及创建 PowerShell 脚本,或者将 code/project 与构建技术 (TeamCity) 相结合的解决方案。
我能够使用 $version$ 变量并将依赖程序集包含在包中来实现。它在 nuspec 文件中包含什么:
<files>
<file src=".\*.*" target="content" />
</files>
所以基本上 bin\release 中的所有内容最终都在包的内容文件夹中。我不确定内容文件夹是否在正确的位置,但至少它在那里。如果需要,我可以稍后更改目标。
总结:
- TeamCity 针对 csproj 文件构建
- nuspec 文件有 $version$,它得到更新
- nuspec 文件指定要包含的文件(见上文)
正确的方法是针对 csproj 进行打包,但有一个相应的 nuspec 文件,其中包含版本 nuspec 元数据的 $version$ 标记。 NuGet 更喜欢来自 nuspec 的元数据值,如果它们是未通过的标记,它将查看程序集元数据以适当地替换它。
也就是说,如果您发现这不是预期的行为,请在 https://github.com/nuget/home/issues 提交问题,NuGet 团队将很乐意帮助您解决问题。