TeamCity 中的“dotnet 恢复”与“nuget 恢复”

2024-03-07

我有一个 ASP.NET Core 项目,可以使用 Visual Studio 正确构建,但不能在 MSBuild 下构建。

它没有找到所有公共库(系统等)。

我正在使用 TeamCity,构建过程的一部分是nuget restore.

我尝试执行与 TeamCity 相同的步骤,但使用 MSBuild 手动执行,但失败了,没有找到库。

我添加了一个dotnet restore步骤然后就成功了。

那么,a 和 a 有什么区别nuget restore and a dotnet restore?


Both nuget restore and dotnet restore大致相同:它们执行 NuGet 恢复操作。

唯一的区别:dotnet restore是一个方便调用的包装器dotnet msbuild /t:Restore它调用 MSBuild 集成的恢复。这仅适用于包含 NuGet 的 MSBuild 发行版,例如 Visual Studio 2017(完整的 Visual Studio、构建工具)或 Mono 5.2+(=>msbuild /t:Restore)和提供此便利命令的 .NET Core SDK。

目前,有两种方法可以在项目中使用 NuGet 包(实际上是三种,但让我们忽略project.json目前在 UWP 上):

  • packages.config:引用 NuGet 包的“经典”方式。这假设 NuGet 是一个单独的工具,并且 MSBuild 对 NuGet 一无所知。 NuGet 客户端,例如nuget.exe或 Visual Studio 集成工具可以看到packages.config文件并在还原时将引用的包下载到本地文件夹中。包安装会修改项目以引用此本地文件夹中的资源。所以恢复一个packages.config项目仅下载文件。
  • PackageReference:该项目包含引用 NuGet 包的 MSBuild 项。不像packages.config,仅列出直接依赖项,项目文件不直接引用包外的任何资产(DLL 文件、内容文件)。恢复时,NuGet 通过评估直接依赖项和传递依赖项来计算依赖关系图,确保所有包都下载到用户的全局包缓存中(不是解决方案本地的,因此只下载一次)并将资产文件写入obj文件夹,其中包含项目使用的所有包和资产的列表,以及其他 MSBuild 目标(如果任何包包含需要添加到项目的生成逻辑)。因此,如果包尚未位于全局缓存中,NuGet 还原可能会下载包并创建此资产文件。除了包引用之外,该项目还可以引用 CLI 工具,这些工具是 NuGet 包,其中包含可用于dotnet在项目目录中。

msbuild 集成恢复仅适用于PackageReference类型项目(默认为 .NET Standard、.NET Core,但任何 .NET 项目都可以选择加入),而不是packages.config项目。如果您使用新版本nuget.exe(例如4.3.0),它能够恢复两种项目类型。

关于缺少类型的错误有点更有趣:“引用程序集”(作为输入传递给编译器的库)未安装在系统上,而是通过 NuGet 包提供。因此,只要全局包缓存或obj/project.assets.json文件尚未由恢复操作生成,基本类型如System.Object编译器将无法使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TeamCity 中的“dotnet 恢复”与“nuget 恢复” 的相关文章

  • DotNetOpenId —“此消息已被处理”错误(第 2 部分)

    这已经被问过Here https stackoverflow com questions 727838 dotnetopenid this message has already been processed error 但不是我做的 OP
  • 给 MVVM 中的 View 一些命令

    假设我有一些用户控制权 用户控件有一些子窗口 用户控制用户想要关闭某种类型的子窗口 用户控制代码后面有一个方法 public void CloseChildWindows ChildWindowType type 但我无法调用此方法 因为我
  • 如何配置 Teamcity 以忽略某些测试

    有没有办法配置 Teamcity 忽略某些测试 我只需要在本地运行这些测试 当它们在 Teamcity 中运行时 必须被忽略 我正在使用 nunit 这可以是指令 属性等 您可以通过向测试中添加测试类别来做到这一点 Category Loc
  • DownloadProgressChangedEventHandler 多久被调用一次

    我正在使用 Webclient 异步下载文件 我想知道多久一次 DownloadProgressChangedEventHandler 被调用吗 用户可以控制吗 以下内容适用于完整的 NET Framework 因为您的问题被标记为 ASP
  • 集合已修改;枚举操作可能无法执行 - 为什么?

    我正在枚举一个实现 IList 的集合 并且在枚举期间我正在修改该集合 我收到错误 集合已修改 枚举操作可能无法执行 我想知道为什么在迭代期间修改集合中的项目时会出现此错误 我已经将 foreach 循环转换为 for 循环 但我想知道发生
  • 流行的“易失性轮询标志”模式被打破了吗?

    假设我想使用布尔状态标志来进行线程之间的协作取消 我意识到人们最好应该使用CancellationTokenSource反而 这不是这个问题的重点 private volatile bool stopping public void Sta
  • 检查输出是否重定向

    我有一个用 C 编写的控制台应用程序 它处理一些数据然后打印结果 在结果可用之前 会有一个小动画 和不断更新的进度百分比 xx 显然 如果用户重定向我的应用程序的输出 这将被打印到输出重定向到的文本文件中 如果可能的话我想避免这种情况 那么
  • 在对具有多个对应名称的枚举值调用 ToString() 时,什么决定选择哪个名称?

    呼叫时选择哪个名字由什么决定ToString on an enum value which has multiple corresponding names 以下是问题的长期解释 我已确定这不是由以下任何一个唯一决定的 字母顺序 报关单 也
  • .NET:为什么不检查枚举的范围/值?

    这一直困扰着我 也许对 NET 内部结构有一定了解的人可以向我解释一下 假设我定义一个枚举如下 public enum Foo Eenie 1 Meenie 2 Miney 3 Moe 4 现在 还假设我的代码中的某处有以下代码 int b
  • CLR 内部字符串常量吗?

    最近我一直在阅读字符串实习生池的工作原理 然而我一直没能找到这个问题的答案 如果我声明一个常量字符串变量 例如const string STR foo 这是否也会添加到实习生表中 只是为了澄清事情 CLR 不参与字符串驻留 Internin
  • 使用 ServiceStack JsonSerializer 反序列化包含 Dictionary 属性的类型

    下面的代码片段显示了我可以实现此目的的两种方法 第一个是使用MsgPack https github com msgpack msgpack cli第二个测试是使用ServiceStack 的 JSONSerializer https gi
  • 使用 MemoryCache 而不是普通的旧 Dictionary 的令人信服的理由是什么

    我刚刚遇到内存缓存 http msdn microsoft com en us library system runtime caching memorycache aspx这是 NET 4 中的新增功能 我知道如果你想的话它会很有用 限制
  • 获取上下文菜单的控制

    我有一个如下所示的上下文菜单 A 1 2 3 选择 1 2 或 3 后 我需要访问调用上下文菜单的对象 意思是如果这是 textbox1 的上下文菜单 那么我需要访问该对象 我该怎么做 忘了说了 这是一个WPF应用程序 所以我使用 Syst
  • 在网络共享或 Intranet 项目上编译网站时请求“System.Web.AspNetHostingPermission”类型的权限失败

    我已经使用 Windows 7 一段时间了 但自从升级以来 我还没有必要使用特定的旧版 Intranet 应用程序 不幸的是 该应用程序被设置为托管在 Intranet 服务器上的 ASP NET 网站项目 当我在 Visual Studi
  • AppHarbor 一步构建以及如何部署我的数据库[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我终于达到了我的解决方案完成构建步骤
  • 未找到源,但无法搜索部分或全部事件日志

    我收到以下异常 我已在注册表编辑中的事件日志上授予对 Asp net 帐户的完全控制权 SecurityException 未找到源 但部分或全部事件 无法搜索日志 无法访问的日志 安全 System Diagnostics EventLo
  • 如何使用 C# 在 .NET 中获取格式化 JSON?

    我正在使用 NET JSON 解析器 并希望序列化我的配置文件 以便它可读 所以而不是 blah v blah2 v2 我想要一些更好的东西 比如 blah v blah2 v2 我的代码是这样的 using System Web Scri
  • AutoMapper 无法识别特定于配置文件的前缀

    我正在尝试使用 AutoMapper 从属性名称之前有前缀的类中获取数据 并将其映射到没有这些前缀的第二个类 但是 我不一定希望它always删除该前缀 我只想让它为这个特定的映射执行此操作 我的源类如下所示 public class Ad
  • 将参数传递给 .NET 定义的命令

    我需要在 Autocad 2000i 的命令行上编写一个命令 并且希望 autocad 提示输入参数 然后我的 vb net 程序将根据收到的参数进行操作 基本上我想我的解决方案都在这里 http through the interface
  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的

随机推荐

  • 在 EF 查询中添加 DateTime 和 TimeSpan 的代码示例

    我正在寻找这个问题的代码示例 将 DateTime Add TimeSpan 与 LINQ 结合使用 https stackoverflow com questions 16781587 using datetime addtimespan
  • 将“浮动”内容放置在文本段落的右下角

    这是代码 http jsfiddle net ym2GQ http jsfiddle net ym2GQ p background lightblue end background orange float right display in
  • Firebase 存储的上传/下载速度非常慢

    故事 我在应用程序中使用 Firebase Storage 将大文件上传到 Firebase 存储中 文件大多是视频 有时甚至超过 2 GB 我做了什么 这就是我所做的 UploadTask originalUpload originalD
  • Python 根据另一个列表对一个列表进行排序

    我有两个列表 第一个列表是键顺序 第二个列表是元组列表 colorOrder red blue yellow green tupleList 111 red 222 pink 333 green 请注意 这两个列表不是一对一的关系 有些颜色
  • 从表中显示 MySQL 数据的 C++executeQuery() 错误

    我需要一些帮助 我有这段代码 如下 将数据添加到 MySQL 表 然后返回同一个表 代码运行良好 当我运行它时 它将列添加到 MySQL 表中 但它停止了 并出现错误 SQL error Error message 字面意义上的空白 如果我
  • C 为什么函数指针作为参数而不是仅仅作为函数?

    我一直在阅读有关以函数作为参数的函数 特别是在 C 中 它们使用函数指针 假设我想实现牛顿拉夫森方法 以简单的方式 来计算非线性方程中的零点 double derivative double f double double x double
  • 如何在 React 中播放 blob 对象的音频?

    我正在尝试使用 ReactJS 创建一个录音机应用程序 我使用了 npm 包反应麦克风 https www npmjs com package react mic服务于目的 但录音被保存为blob object 如何在浏览器中播放录制的文件
  • 断言可以用在常量表达式中吗?

    The assert 宏来自
  • 使用 Knockout 将任何键(通过键码)绑定到操作

    我正在寻找一种方法将许多不同的键绑定到我的视图模型中的不同操作 功能 我找到了这个example http geekswithblogs net michelotti archive 2011 10 11 knockoutjs custom
  • 如何在 Python 中交错字符串? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何在 Python 中交错字符串
  • ANT 有没有一种方法可以从 JAR 中提取一个类文件并将其放入另一个 JAR 中?

    我的 ANT 构建脚本使用名为 createEJBStubs 的 WebSphere 命令 该命令生成一个 JAR 文件 其中包含所有内容以及一个新生成的类 即 com myapp services User Service Stub cl
  • 批处理脚本 - 对目录中的每个文件运行命令

    我需要将一些 xls 文件转换为 xlsx 文件 我可以通过在 cmd 提示符 Windows 中运行以下命令成功地将一个 xls 文件转换为 xlsx ssconvert inputFileName xls outputFileName
  • 由于新的 couchbase 安装,将数据恢复到 couchbase

    我们有一个 couchbase 服务器 不知何故进行了全新安装 并且我们在那里的所有数据都丢失了 我已经设法备份了 opt couchbase var lib couchbase data 现在 当我尝试将数据复制回来时 它没有显示 cou
  • 自动选择毒理学部分中的平台(或其他)条件

    我想专门运行某个有毒部分 然后在特定平台上自动决定 如果我刚刚运行 下面的示例代码片段可以正常工作tox e ALL 然后平台条件可以很好地找出正确的平台 然而 我想only地址并运行特定部分 例如类似的内容tox e other not
  • 如何使用 C# 裁剪图像

    我有一张用相机拍摄的文档照片 现在我要做的就是从该图像中仅裁剪文档 请任何人建议我如何最好地做到这一点 或者首先是否可能 Edit 欲了解更多信息 我的下一个问题如何获取图像的边缘坐标 https stackoverflow com que
  • Bittorrent 协议如何处理数据块?

    BitTorrent 协议中如何处理数据块 当客户想要下载时 例如Linux 发行版中 跟踪器是否返回对等点列表 然后客户端连接到该列表并向每个对等点请求块 或者跟踪器是否返回对等点列表以及哪个对等点具有哪些数据的信息 数据块在哪里管理或处
  • 多维动态数组中什么需要最终确定?

    我经常使用动态数组 并且对 SetLength 和 Finalize 过程没有任何问题 我最近有理由使用动态数组 其中每个数组元素本身可以包含可变数量的元素 声明是这样的 TScheduleArray array of array of a
  • 使用 Sharepoint Word Automation 进行文本替换

    我正在使用 sharepoint 2010 我想做的是采用一个 word 文档模板 对几个关键字进行替换 例如 替换 ClientID 与客户端的 ID 并以特定名称将其保存在共享点上的库中 我已经弄清楚如何使用 word interop
  • ASP.NET登录页面问题

    Q The login page是任何网站的起点 也是验证用户身份的最重要的事情 当我开始构建任何网络应用程序时 我花了很多时间思考如何设计一个具有灵活界面且安全的登录页面 我的问题是 Is当我开始构建这个特殊页面时 有任何常见的建议 提示
  • TeamCity 中的“dotnet 恢复”与“nuget 恢复”

    我有一个 ASP NET Core 项目 可以使用 Visual Studio 正确构建 但不能在 MSBuild 下构建 它没有找到所有公共库 系统等 我正在使用 TeamCity 构建过程的一部分是nuget restore 我尝试执行