- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ASP.NET Core 项目,可以使用 Visual Studio 正确构建,但无法在 MSBuild 下构建。
它没有找到所有公共(public)库(系统等)。
我正在使用 TeamCity,构建过程的一部分是 nuget 恢复
。
我尝试执行与 TeamCity 相同的步骤,但使用 MSBuild 手动执行,但失败了,没有找到库。
我添加了一个 dotnet Restore
步骤,然后它就起作用了。
那么,nuget 恢复
和 dotnet 恢复
之间有什么区别?
最佳答案
nuget restore
和 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 包的方式有两种(实际上是三种,但我们暂时忽略 UWP 上的 project.json
):
packages.config
:引用 NuGet 包的“经典”方式。这假设 NuGet 是一个单独的工具,并且 MSBuild 对 NuGet 一无所知。 NuGet 客户端(例如 nuget.exe
或 Visual Studio 集成工具)会看到 packages.config
文件,并在还原时将引用的包下载到本地文件夹中。包安装会修改项目以引用此本地文件夹中的资源。因此,恢复 packages.config
项目只会下载文件。PackageReference
:该项目包含引用 NuGet 包的 MSBuild 项。与 packages.config
不同,仅列出直接依赖项,项目文件不直接引用包外的任何 Assets (DLL 文件、内容文件)。恢复时,NuGet 通过评估直接依赖项和传递依赖项来计算依赖关系图,确保所有包都下载到用户的全局包缓存中(不是解决方案本地的,因此只下载一次)并将 Assets 文件写入 obj
文件夹其中包含项目使用的所有包和 Assets 的列表,以及其他 MSBuild 目标(如果任何包包含需要添加到项目中的生成逻辑)。因此,如果包尚未位于全局缓存中,NuGet 还原可能会下载包并创建此 Assets 文件。除了包引用之外,项目还可以引用 CLI 工具,这些工具是 NuGet 包,其中包含可用于项目目录中的 dotnet
的其他命令。msbuild 集成恢复仅适用于 PackageReference
类型项目(默认为 .NET Standard、.NET Core,但它是任何 .NET 项目的选择加入),不适用于 packages.config
项目。如果您使用新版本nuget.exe
(例如4.3.0),它可以恢复两种项目类型。
有关缺少类型的错误更有趣:“引用程序集”(作为输入传递给编译器的库)未安装在系统上,而是通过 NuGet 包提供。因此,只要全局包缓存中缺少 NuGet 包,或者恢复操作尚未生成 obj/project.assets.json
文件,编译器就无法使用 System.Object
等基本类型。
关于.net - “dotnet Restore”与 TeamCity 中的 'nuget restore',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45897271/
使用 TeamCity,我在一个项目中设置了多个构建。大多数时候我想将每个构建作为独立运行。但是,有时我想使用相同的参数集执行多个构建。这些构建都使用相同的模板,因此理论上,它们的所有参数都可以由单个
我希望能够将最后一个固定的内部版本号传递给我的 TeamCity 构建步骤。我没有看到可以传入的系统参数,就像我对当前内部版本号所做的那样。 有没有我没有看到的参数?或者有没有办法从 URL 获取版本
我真的无法理解 teamcity (7.1) 中快照依赖的概念。 我们有一个构建项目,它根据构建参数(数据库名称和文件)相应地部署数据库,我有一个构建项目,用于构建和部署我们的 Web 应用程序。 我
我无法从远程计算机浏览到我的团队城市 (JetBrains)。我已按照安装说明进行操作,并且安装进行得很顺利。我可以在服务器上本地浏览 to 应用程序,完全没问题。我将配置文件中的默认服务器 url
我正在尝试重置密码。我正在关注 instructions here .我试过关闭两个服务(TeamCity Build Agent Service 和 TeamCity Web Server)或两者的
我的构建有 10 个步骤。 构建经常在第 10 步失败,尝试将 rpm 部署到神器。 下次构建再次从 1 开始,我可以将构建配置为仅在该步骤失败时从 10step 开始吗? 谢谢 最佳答案 没有内置方
我的构建有 10 个步骤。 构建经常在第 10 步失败,尝试将 rpm 部署到神器。 下次构建再次从 1 开始,我可以将构建配置为仅在该步骤失败时从 10step 开始吗? 谢谢 最佳答案 没有内置方
我正在 TeamCity 中构建 nuget,并且希望在 checkin 触发构建时将后缀“-pre”附加到版本号。当手动触发构建时,我希望能够提供一个复选框,以确定此构建应该是预览版本还是适合生产。
我们在 TeamCity 中的一些构建是灰色的,就像它们被禁用一样。 原因通常并不明显。当我检查有关构建的详细信息时,我没有发现任何值得注意的地方。 这个颜色到底代表什么? 另外:如果像上图一样,在变
在我的组装版本中,我想设置前 3 位数字,第四位数字应通过 Teamcity 设置。 例子: 我在我的 Assambly 中设置了 2.0.1.0。 那么我的 Teamcity 应该这样做: 2.0.
我正在为我们的团队城市构建服务器设置安全性。我希望所有用户都能够查看所有构建,其中一些构建会生成包含敏感数据(连接字符串等)的工件。是否可以阻止特定角色查看构建工件? 最佳答案 可能有点变通,但如果您
在 TeamCity 8.1 中,我刚刚下载了我的源代码,我要做的第一件事是从我刚刚检索的内容中删除一堆子文件夹。 我不能在“结帐规则”中使用排除项,所以我想我需要一个单独的步骤来在检索源代码后立即运
TeamCity 作业当前失败,因为磁盘空间不足。通过 Administration => Disk usage,我发现构建日志数量过多: 我曾尝试通过 TeamCity UI 清理构建历史,删除最近
我正在开发 Team-city 9.x。我在其中一个发布项目中遇到了一些构建失败。虽然我们已经禁用了构建并且我们不想运行构建。 我正在尝试将构建移动到另一个项目(禁用构建),但我无法移动构建。 因为我
我正在尝试用新构建中的新标签替换添加到构建中的标签。 我可以使用以下命令创建标签: curl -v -H "Content-Type:text/plain" -d "latest" https:///
我的 TeamCity 服务器中有很多项目,用于构建和测试多个站点。我们每晚都使用 Selenium RC 来测试站点,我想重用一个步骤或配置,而不是在每个项目中都有副本。 我已经研究过使用模板,但它
我正在设置合适的 CI 环境,目前正在评估 TeamCity。 (所以我的 TeamCity 经验是不存在的。)。 我已经在干净的 Windows XP(目前)VM 中执行了 TeamCity 5.0
我已经建立了顶级项目一个 在 TeamCity 中。 项目一个 有一个名为 的构建配置A1 . 项目乙 是的子项目一个 . 项目乙 有一个名为 的构建配置B1 . 在这个构建配置中,我定义了两个参数:
我们有一个编译并创建工件的构建。然后我们有另一个 Build,它使用最后一个 Compile 构建并将其部署到适当的环境。完成后,我必须在 TC 中标记已推送到环境中的构建。有没有一种方法可以标记使用
我正要第一次自己设置teamcity。在我不得不说的大多数方面都非常好和简单。但是,我有一个问题无法解决,也无法找到任何相关信息。 当我想发布我的工件时,我想排除某些文件类型。 例子: %system
我是一名优秀的程序员,十分优秀!