【问题标题】:DotNet Core RC2 Project and Net461 dependency resolve issueDotNet Core RC2 项目和 Net461 依赖解决问题
【发布时间】:2016-06-21 22:57:29
【问题描述】:

这里是主 dotnet core web 项目的 project.json

"frameworks": {
  "netcoreapp1.0": {        
      "imports": [
          "dotnet5.6",
          "dnxcore50",
          "portable-net45+win8",
          "net461"
      ]
  }
}

如果我添加以下 net461 类库项目作为对上述项目的引用。它不会正确构建。

 "frameworks": {
    "net461": {
    }
  }

并抛出类似The dependency mscorlib could not be resolved.的错误

但是,如果我使用旧模板(无 project.json)创建项目,并将其添加为对 dotnet 核心项目的引用。它工作正常。

我想知道如何解决这个问题?

【问题讨论】:

  • 我不明白你想要达到什么目的。在上面的代码部分,您的目标是 .NET Core 和 .NET Framework(但您仍然不能在 .NET Core 中使用 .NET Framework 的所有 bins\lib,至少现在还不能使用),而在底部,您只引用 . NET 框架而不是 .NET 核心。您是否尝试使用 .NET Framework 库而不是 CoreFx?
  • @JanshairKhan 我正在尝试创建一个 .net 框架库并将其用作对 .net 核心 Web 项目的引用。

标签: asp.net asp.net-core .net-core


【解决方案1】:

您正在做的是创建一个仅在 .Net Framework 上运行的库,然后尝试从在 .Net Core 上运行的应用程序中使用它。那是行不通的。

如果你想在 .Net Core 上运行,那么你的应用的 project.json 应该包含:

"frameworks": {
  "netcoreapp1.0": {        
      "imports": [
          "dotnet5.6",
          "dnxcore50",
          "portable-net45+win8"
      ]
  }
}

和库(netstandard 的版本将取决于你想要做什么):

"frameworks": {
    "netstandard1.4": {
    }
}

如果您想使用 dotnet CLI,但仍要在 .Net Framework 上运行,请在您的库和应用程序中添加以下内容(您在 frameworkAssemblies 中包含框架程序集):

"frameworks": {
  "net461": {
    "frameworkAssemblies": {
    }
  }
}

【讨论】:

  • Déjà-vu ;) 一天两次同样的问题。
  • 我想我误解了导入部分的含义。我认为这意味着它允许您使用包含框架库。
  • @maxisam imports 基本上绕过了兼容性检查。如果该库实际上是兼容的,但似乎不兼容,那么它就可以工作。但如果库实际上不兼容,imports 将无济于事。
  • @svick 但如果我有一个不支持 netstandard 的引用,比如 mysql.data,唯一的选择是一直使用 net461 吗?
  • @maxisam 是的,完全正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多