如何安装 nuget 包 teamcity 云?

how to installing nuget packages teamcity cloud?

我是 CI/CD 的新手,想在 TeamCity 云上设置我们的 .net 项目。当我添加构建步骤时,如何安装 NuGet?云版没有安装选项?

假设您想要恢复包,NuGet 内置于 dotnet cli 和 MSBuild 中。我假设“安装 NuGet”是指获取 nuget.exe。对于最常见的场景(恢复、配置在 CI 上与开发框、MSBuild 包不同的源),nuget.exe 是不必要的。

如果您 solution/repo 中的所有项目都是 SDK style(例如 .NET Core、.NET Standard 或 .NET 5 或更高版本。但有一种误解认为 .NET Framework 项目可以' 是 SDK 风格;他们可以)。你可以使用这个:

dotnet restore

如果您的项目不是 SDK 样式(使用 Visual Studio 的“.NET Framework”版本的项目模板创建),并且您使用 PackageReference 作为 NuGet 引用,您可以使用:

msbuild -t:restore

如果您的项目使用 packages.config,那么在 MSBuild/Visual Studio 16.3 及更高版本中,您可以使用:

msbuild -t:restore -p:RestorePackagesConfig=true

这样,您不仅不需要 nuget.exe,而且还可以避免使用与 [=30= 版本不完全兼容的 nuget.exe 版本] 你正在使用。这种情况很少发生,据我所知 nuget.exe 从未破坏向后兼容性。但自从 .NET 5 引入了 net5.0-windows 目标框架后,对 NuGet 写入的中间文件进行了一些更改,即使客户没有使用 net5.0-windows,他们的构建也会中断如果他们使用旧版本 nuget.exe 恢复,但随后尝试使用新版本的 msbuild 进行构建。通过使用 msbuild 或 dotnet 进行还原和构建,您知道版本始终同步。

如果确实需要nuget.exe,可以在脚本中使用Installing NuGet client tools documentation has a URL where you can download it, and there's also a json file with all versions of nuget.exe listed。但请记住,您可以发挥创意,比如如果您托管自己的 CI 代理,您可以在机器映像上预安装 nuget.exe,或者在与代理相同的网络上拥有自己的“CDN”,所以它总是从本地网络下载。您自己的创造力(以及与 IT 部门合作的能力)是您的极限!