【问题标题】:Project 'XXXXXX' does not have a lock file. Please run "dotnet restore" to generate a new lock file项目“XXXXXX”没有锁定文件。请运行“dotnet restore”以生成新的锁定文件
【发布时间】:2017-01-28 16:34:01
【问题描述】:

我有ASP.NET Core Web API 项目和.Net Core Library 项目。 Web API 引用库项目为target : project。库项目名称为Transformations
下面是两个项目的 project.json

用于 Web API 的 project.json

"dependencies": {
   "Microsoft.NETCore.App": {
    "version": "1.0.0",
    "type": "platform"
  },
   "Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
   "Microsoft.AspNetCore.Mvc": "1.0.0",
   "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
   "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
   "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
   "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0",
   "Microsoft.Extensions.Configuration.Json": "1.0.0",
   "Microsoft.Extensions.Logging": "1.0.0",
   "Microsoft.Extensions.Logging.Console": "1.0.0",
   "Microsoft.Extensions.Logging.Debug": "1.0.0",
   "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
   "Transformations": {
            "target": "project"
    },
   "Microsoft.Extensions.DependencyInjection": "1.0.0",
   "Serilog.Extensions.Logging": "1.3.0-dev-10125",
   "Serilog.Sinks.RollingFile": "3.0.0",
   "Serilog.Settings.Configuration": "2.1.0",
   "Microsoft.AspNetCore.Diagnostics": "1.0.0"
},

图书馆项目的project.json

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
  },

  "frameworks": {
    "netstandard1.6": {
      "imports": "dnxcore50"
    }
  },
  "configurations": {
    "Production": {},
    "Staging": {}
  }
}

在下面的构建服务器上是 Api & Transformation 项目的项目结构。

 D:\Jenkins\MyJenkinsProject\workspace\src\MySolution
                                                   \Api
                                                   \Transformation

在构建服务器上我执行了以下命令

  D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet restore

然后

  D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet build

我收到错误

Project Transformations 没有锁定文件。请运行 “dotnet restore”生成一个新的锁文件。

现在,如果我按顺序运行以下命令,那么一切正常。

  D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Transformation>dotnet restore
  D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet restore
  D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet build

问题
1>当库在API项目中被引用为项目时,为什么我需要为库项目单独运行dotnet restore?为什么不能 restores 隐式引用项目?

【问题讨论】:

  • @hobbs 我正在寻找为什么它不隐式恢复引用的项目。我错过了什么吗?如果我有几个从主 API 项目引用的库项目,那么我必须首先为每个库项目执行 dotnet restore。我希望我应该能够恢复主项目(在这种情况下即 API)。我也在构建服务器上这样做。所以现在当我添加新的库项目时,我还必须更新我的构建脚本以恢复新项目。

标签: asp.net-core asp.net-core-mvc asp.net-core-1.0 coreclr asp.net-core-webapi


【解决方案1】:

我相信你可以直接做一个dotnet build。它应该自动执行dotnet restore

【讨论】:

    【解决方案2】:

    From Zlatko Knezevic:

    此行为是设计使然。 [...] 如果您希望一次性恢复所有项目的所有依赖项,可以这么说,只需在解决方案的根目录下运行 dotnet restore(您有 global.json 文件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-03-29
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2015-04-14
      相关资源
      最近更新 更多