【问题标题】:Unable to resolve error when try dotnet restore multi project solution尝试 dotnet restore 多项目解决方案时无法解决错误
【发布时间】:2016-09-13 21:00:27
【问题描述】:

我有一个本地构建的解决方案,我创建了一个新的构建并添加了一个步骤

dotnet restore

我收到此错误消息:

    ... OTHER SUCCESSFUL INSTALLATIONS ...
    log  : Installing Microsoft.Extensions.FileProviders.Abstractions 1.0.0.
    log  : Installing Microsoft.Extensions.Configuration.Abstractions 1.0.0.
    log  : Installing Microsoft.Extensions.DependencyInjection.Abstractions 1.0.0.
    log  : Writing lock file to disk. Path: C:\a\1\s\Wedding.WebApp\project.lock.json
    log  : C:\a\1\s\Wedding.WebApp\project.json
    log  : Restore failed in 13722ms.
    Errors in C:\a\1\s\Wedding.WebApp\project.json
        Unable to resolve 'Wedding.Application' for '.NETFramework,Version=v4.6.1'.
        Unable to resolve 'Wedding.Common' for '.NETFramework,Version=v4.6.1'.
        Unable to resolve 'Wedding.WebApp.Setup' for '.NETFramework,Version=v4.6.1'.

它指的是我的主要 Web 项目引用的其他三个项目。

这是我的 project.json

    {
      "dependencies": {
        "Microsoft.AspNetCore.Diagnostics": "1.0.0",
        "Microsoft.AspNetCore.Mvc": "1.0.1",
        "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
        "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
        "Microsoft.AspNetCore.StaticFiles": "1.0.0",
        "Microsoft.Extensions.Configuration.Json": "1.0.0",
        "Microsoft.Extensions.Logging.Console": "1.0.0",
        "Microsoft.Extensions.Logging.Debug": "1.0.0"
      },

      "tools": {
        "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final",
        "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final"
      },

      "frameworks": {
        "net461": {
          "dependencies": {
            "Wedding.Application": {
              "target": "project"
            },
            "Wedding.Common": {
              "target": "project"
            },
            "Wedding.WebApp.Setup": {
              "target": "project"
            }
          }
        }
      },

      "buildOptions": {
        "emitEntryPoint": true,
        "preserveCompilationContext": true
      },

      "publishOptions": {
        "include": [
          "wwwroot",
          "web.config"
        ]
      },

      "scripts": {
        "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
      }
    }

有谁知道为什么这可能会出错?

【问题讨论】:

  • 作为一项主要工作,我发现我需要创建一个新的 WebApp 和一个新项目。然后,我将我的代码一点一点地移植到新项目中,并将其发布到新的 WebApp。每次检查是否发布正常后。在移植完所有内容后,我不知道是什么原因造成的,但我现在可以通过右键单击项目来发布。
  • 我发现了同样的事情。一个烦人的解决方法,但至少它摆脱了错误。
  • 你有没有试过把net461下的依赖移到dependencies节点下的地方?
  • 我没有,这对你有用吗?我已经从头开始重建我的项目,现在我能够发布我最初的目标项目。我之前在 TFS 中尝试过这样做
  • 我遇到了同样的问题。对我来说,唯一不改变我的 sln 结构的解决方案是用 NuGet 还原和 MSBuild 构建步骤替换还原 dotnet 核心和 Visual Studio 构建步骤。此外,您必须检查以下事项: 1) 确保在 Nuget 还原步骤高级配置中选择 3.4.4 或更高版本的 Nuget 版本。 2) 在 Nuget 还原配置中,您必须在“解决方案路径或 packages.config”字段中选择您的解决方案。 3) 确保在 MSBuild 步骤高级配置中未选中还原 Nuget 包。

标签: .net .net-core azure-pipelines .net-4.6.1


【解决方案1】:

您的 dependencies 和 frameworks 块对我来说看起来不正确:我希望您所依赖的库在 dependencies 块中声明,而不是在 frameworks 块中声明。对于一个引用另一个项目的项目,它更典型地类似于这样:

{

  "dependencies": {
    "Microsoft.AspNetCore.Diagnostics": "1.0.0",
    "Microsoft.AspNetCore.Mvc": "1.0.1",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
    "Microsoft.AspNetCore.StaticFiles": "1.0.0",
    "Microsoft.Extensions.Configuration.Json": "1.0.0",
    "Microsoft.Extensions.Logging.Console": "1.0.0",
    "Microsoft.Extensions.Logging.Debug": "1.0.0",
    "Wedding.Application": { "target": "project" },
    "Wedding.Common": { "target": "project" },
    "Wedding.WebApp.Setup": { "target": "project" }
  },

  "frameworks": {
    "net461": {
      "imports": []
    }
  },

  ...
}

【讨论】:

    【解决方案2】:

    我有类似的问题。通过在解决方案文件中手动交换项目顺序来解决该问题。

    Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Some.Lib", "..\Some\Path\SomeProject.csproj", "{B539B811-6E75-48E0-A679-9F7092CC0261}"
    EndProject
    Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Some.Web.App", "SomePath\WebApplication3.csproj", "{244C097B-B6FD-4995-AAE3-87AB1748EA38}"
    EndProject
    

    Lib 是 .NetStandard 1.1 和 .NetFramework 4.6 Core 1.0 上的 Web.App。

    默认项目顺序对我不起作用。交换后一切正常。

    【讨论】:

      【解决方案3】:

      基于this 对同一问题的回答:

      将项目替换为 .NET Core 类库。它对我有用。

      【讨论】:

        猜你喜欢
        • 2016-12-03
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        • 2013-02-25
        • 2015-02-18
        • 1970-01-01
        相关资源
        最近更新 更多