【问题标题】:Building dotnet core: Please run "dotnet restore" to generate a new lock file构建 dotnet core:请运行“dotnet restore”以生成新的锁定文件
【发布时间】:2017-02-28 21:41:59
【问题描述】:

我的解决方案中有多个项目。我正在尝试为我的构建服务器创建构建定义。我的核心项目与以下 project.json 没有依赖关系:

 {
  "version": "1.0.0-*",

  "frameworks": {
    "netcoreapp1.0": {}
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.1"
  }
}

我正在尝试恢复然后构建这个项目,但它抱怨与它无关的其他项目。

恢复

PS C:\Program Files (x86)\TeamCity\buildAgent\work\3c13246440f9a264\src\Compas.Core> dotnet restore
log  : Restoring packages for C:\Program Files (x86)\TeamCity\buildAgent\work\3c13246440f9a264\src\Compas.Core\project.json...
log  : Writing lock file to disk. Path: C:\Program Files (x86)\TeamCity\buildAgent\work\3c13246440f9a264\src\Compas.Core\project.lock.json
log  : C:\Program Files (x86)\TeamCity\buildAgent\work\3c13246440f9a264\src\Compas.Core\project.json
log  : Restore completed in 2071ms.

构建

PS C:\Program Files (x86)\TeamCity\buildAgent\work\e5c291e45d6e2691\src\Compas.Core> dotnet build
Project Microsoft.Extensions.Caching.Abstractions does not have a lock file. Please run "dotnet restore" to generate a new lock file.
Project Microsoft.Extensions.Caching.Abstractions does not have a lock file. Please run "dotnet restore" to generate a new lock file.

我的解决方案中有“Microsoft.Extensions.Caching.Abstractions”,但为什么构建 Core 需要该锁定文件。

【问题讨论】:

  • 尝试删除文件 C:\Program Files (x86)\TeamCity\buildAgent\work\e5c291e45d6e2691\src\Compas.Core\project.lock.json(如果存在)并重新运行恢复。
  • 我已经这样做了
  • 好的。您可以尝试的另一个技巧是:在 project.json 中添加一些随机依赖项,​​您可以稍后将其删除,这将强制写入锁定文件。
  • 它已经为 Compas.Core 项目创建了锁定文件,但它抱怨其他项目。
  • 如果您有项目引用,您需要恢复所有项目。最简单的方法是转到解决方案/repo 根目录并在那里运行dotnet restore

标签: msbuild asp.net-core .net-core project.json


【解决方案1】:

您的项目依赖于Microsoft.EntityFrameworkCore.SqlServer,而Microsoft.Extensions.Caching.Abstractions 又依赖于Microsoft.Extensions.Caching.Abstractions(不是直接依赖,而是在树的后面)。由于您的解决方案中有该项目 - 可能是因为您在 global.json 中有一个引用 - 它会尝试使用该项目而不是 NuGet 包。

但是,要使项目引用正常工作,它需要project.lock.json,因此它会抱怨恢复项目的包。

要么从您的解决方案中删除该项目(我想知道为什么它首先存在),要么确保它的包已恢复。

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 2016-08-21
    • 2017-07-10
    • 1970-01-01
    相关资源
    最近更新 更多