在 ASP.NET 4.6 MVC 应用程序中引用 .NET Core class 库

Referencing a .NET Core class library in a ASP.NET 4.6 MVC App

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

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

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

Unable to resolve dependency 'NETStandard.Library'. Source(s) used: 'nuget.org', 'AspNetRc2Source', 'MyGet', 'Local', 'Microsoft and .NET', 'Microsoft Visual Studio Offline Packages'. 0

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

无论如何,这是我的 .NET Core class 库中的 project.json 文件 - 您可以看到它仅针对 .NET 4.6,这也是我的 ASP.NET 应用程序的目标.

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

删除对 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 生成可以在两个平台上完美安装的库。