【问题标题】:Referencing a .NET Core class library in a ASP.NET 4.6 MVC App在 ASP.NET 4.6 MVC 应用程序中引用 .NET Core 类库
【发布时间】:2016-10-17 05:30:41
【问题描述】:

我认为我在这里基本上遗漏了一些东西,我提前为愚蠢道歉。尝试拥抱 dotnet core 的新世界,并将项目作为尝试学习的一种方式。

我编写了一些用于 ASP.NET Core Identity 的身份验证中间件。我为中间件使用了 .NET Core 类库 - 优点是我相信我可以潜在地针对任何框架以及构建我的组件的 Nuget 包。该中间件在与面向 .NET Core 的 ASP.NET Core Web 应用程序一起使用时工作正常 - 基于 VS2015 RC2 模板。

感觉很冒险,我决定创建一个基于 OWIN/Katana 身份验证中间件的组件版本,这样我就可以将它与 ASP.NET 4.5/6 Web 应用程序一起使用。我没有创建传统的类库项目,而是再次使用了 .NET Core 类库模板,但仅针对 .NET 4.6,即 net46。它编译得很好,但我无法让我的 ASP.NET 4.6 应用程序引用它。我按照this SO question 中的信息创建了一个 NuGet 包,创建了一个本地源,然后尝试将其添加到我的 ASP.NET 4.6 项目中,但它失败并出现错误:

无法解析依赖项“NETStandard.Library”。使用的源:“nuget.org”、“AspNetRc2Source”、“MyGet”、“Local”、“Microsoft and .NET”、“Microsoft Visual Studio Offline Packages”。 0

依赖和框架让我头晕目眩。

这里是我的 .NET Core 类库中的 project.json 文件 - 你可以看到它只针对 .NET 4.6,这也是我的 ASP.NET 应用程序的目标。

我觉得我需要一些严肃的 .NET 101 课程来了解所有这些依赖项是如何组合在一起的,但如果有人愿意为我指出正确的方向,我将不胜感激。

【问题讨论】:

  • “我的脑袋被依赖和框架搞得晕头转向”……这不是事实吗?微软需要对所有这些内容进行认真的撰写。

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


【解决方案1】:

删除对NETStandard.Library 的引用,它应该可以工作。如果您只针对 .NET 4.5+,则不需要。

我正在开发一个可以从 .NET 4.5+ 和 .NET Core 使用的 OWIN 中间件库。我使用看起来像这样的project.json 来定位两者:

"dependencies": {
  "Stormpath.Owin.Abstractions": {
    "target": "project",
    "version": "1.0.0"
  }
},
"frameworks": {
  "net45": {
    "frameworkAssemblies": {
      "System.Collections": "4.0.0.0"
    }
  },
  "netstandard1.3": {
    "dependencies": {
      "NETStandard.Library": "1.5.0-rc2-24027"
    }
  }
}

由于只有 .NET Core (netstandardX.Y) 需要 .NETStandard.Library,因此它被列为该目标的依赖项,而不是一般依赖项。该项目将愉快地为 .NET 4.5 构建,dotnet pack 生成的库可以完美地安装在两个平台上。

【讨论】:

  • 谢谢,Nate - 为我解决了这个问题。我认为,由于我的 .NET Core 类库基于 VS2015 模板,因此它假设我的目标是 .NET Core - 因此将其作为一般依赖项。我按照你的建议做了,它编译得很好——只是意味着我必须弄清楚需要哪些其他依赖项,然后将它们显式添加到目标框架中。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多