首页 > 解决方案 > 如何安装 nuget 包 teamcity cloud?

问题描述

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

标签: nugetcloudteamcity

解决方案


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

如果您的解决方案/存储库中的所有项目都是SDK 样式(例如 .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,而且还可以避免使用与您正在使用的 dotnet/msbuild 版本不完全兼容的 nuget.exe 版本。这种情况很少发生,据我所知,nuget.exe 从未破坏向后兼容性。但是由于 .NET 5 引入了net5.0-windows目标框架,因此对 NuGet 写入的中间文件进行了一些更改,即使客户没有使用 net5.0-windows,如果他们使用旧版本的 nuget 恢复,他们的构建也会中断.exe,但随后尝试使用新版本的 msbuild 进行构建。通过使用 msbuild 或 dotnet 进行还原和构建,您知道版本始终是同步的。

如果您确实需要 nuget.exe,安装 NuGet 客户端工具文档有一个 URL,您可以在其中下载它,还有一个 json 文件,其中列出了您可以在脚本中使用的所有 nuget.exe 版本。但是请记住,您可以发挥创造力,例如,如果您托管自己的 CI 代理,您可以在机器映像上预安装 nuget.exe,或者在与代理相同的网络上拥有自己的“CDN”,因此它总是从本地网络。您自己的创造力(以及与 IT 部门合作的能力)是您的极限!


推荐阅读