构建dotnet core:请运行"dotnet restore"生成新的锁文件

Building dotnet core: Please run "dotnet restore" to generate a new lock file

我的解决方案中有多个项目。我正在尝试为我的构建服务器创建构建定义。我的核心项目不依赖于以下 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\workc13246440f9a264\src\Compas.Core> dotnet restore
log  : Restoring packages for C:\Program Files (x86)\TeamCity\buildAgent\workc13246440f9a264\src\Compas.Core\project.json...
log  : Writing lock file to disk. Path: C:\Program Files (x86)\TeamCity\buildAgent\workc13246440f9a264\src\Compas.Core\project.lock.json
log  : C:\Program Files (x86)\TeamCity\buildAgent\workc13246440f9a264\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 需要那个锁文件。

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

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

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