nuget - 如何安装 nuget 包 teamcity cloud?
问题描述
我是 CI/CD 的新手,想在 TeamCity 云上建立我们的 .net 项目。当我添加构建步骤时,如何安装 NuGet?云版没有安装选项吗?
解决方案
假设您要还原包,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 部门合作的能力)是您的极限!
推荐阅读
- javascript - 我的 Heroku 构建一直失败,我不知道为什么
- git - 拉取时如何自动更改客户端上的 git 存储库域?
- ios - 在 Swift 中添加分钟
- javascript - 如何识别排序条件中的逻辑矛盾?
- c# - Windows 10 LTSB 和 C# Winforms - 线程问题
- c++ - 执行安装 Socket.IO C++ 客户端的步骤 3 时收到错误
- php - Wordpress 页面编辑在 wordpress 更新后停止工作
- ibm-watson - 在 IBM Watson Conversation 中将动态上下文变量与实体进行比较
- java - 使用类作为名称的参数化类的原始使用
- github - Github 拉取请求差异