从 .NET Core 应用程序引用 .NET 4.6.2 class 库

Referencing .NET 4.6.2 class library from .NET Core app

我正在使用 VS 更新 3 (14.0.25425.01)。这是我所做的:

  1. 创建 ASP.Net 核心 Web 应用程序 (.Net Core)
  2. 创建 Class 库 .Net 4.6.2
  3. net462 添加到框架,netcoreapp1.0,导入 project.json
  4. 右键单击 ASP.Net 核心应用程序,单击添加引用、select 项目、select Class 您在步骤 2 中创建的库。

我在还原时没有遇到任何错误,参考已添加到 ASP.Net 核心应用程序。但是,我无法访问它。我无法添加使用导入声明或访问对象。我已经 运行 经历了很多事情,但似乎没有任何效果,而且帖子的版本非常零散。

这是 ASP.Net 核心应用程序中的 Program.cs。

更新 我按照内特的建议做了。我以为我已经试过了……但果然我现在可以访问我的 4.6.2 库了。但是,我现在遇到编译错误。

这在 Visual Studio 2015 Update 3 中确实有效,但您的 project.json 不太正确。

与其将 net462 添加到 imports 部分,不如将其添加到 frameworks 部分:

"frameworks": {
  "net461": { },
  "netcoreapp1.0": {
    "dependencies": {
      "Microsoft.NETCore.App": {
        "type": "platform",
        "version": "1.0.0"
      }
    }
  }
}

请注意,Microsoft.NETCore.App 依赖项也需要移至 netcoreapp1.0 部分。这是因为只有在编译为 .NET Core 应用程序时才需要此依赖项。

对您的 .NET 4.6.2 库的引用只是您 dependencies 部分的一部分:

"dependencies": {
  (...)
  "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
  "MyLibrary": {
    "target": "project"
  }
}

通过以这种方式构建它,我能够在我的 .NET 4.6.2 库中引用和使用 类,没有任何问题。


作为参考,这是我使用的整个工作 project.json

{
  "dependencies": {
    "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.Configuration.CommandLine": "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",
    "MyLibrary": {
      "target": "project"
    }
  },
  "frameworks": {
    "net461": { },
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.0"
        }
      }
    }
  },
  "version": "1.0.0-*"
}

@NateBarbettini 的回答完成了我原来的问题。但是我不能 运行 ASP.Net Core Web Application version 1 with my .Net 4.6.1 project as it was because it could not find a .NetCore.App v1 assembly for my .Net 4.6. 1个项目。所以我用下面的 project.json 向我的 .Net 4.6.1 项目添加了一个 project.json。

{
  "version": "1.0.0-*",

  "dependencies": {
  "NETStandard.Library": "1.6.0"
  },

  "frameworks": {
  "netstandard1.6": {
    "imports": "dnxcore50"
   },
  "net461": {}
 }
}

接下来,在 ASP.Net 核心 Web 应用程序中通过在 .NetCore.App 下添加依赖项来修改 project.json。这样它将选择两个版本,4.6.1 和 .NetCore v1。

...
"frameworks": {
"net461": {
  "dependencies": {
    "ClassLibrary1": {
      "target": "project"
    }
  }
},
"netcoreapp1.0": {
  "imports": [
    "dotnet5.6",
    "portable-net45+win8",
    "net461"
  ],
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.0.0",
      "type": "platform"
    },
    "ClassLibrary1": {
      "target": "project"
    }
  }
}
}

到目前为止一切顺利,我可以在 .Net 4.6.1 中进行开发,它可以在 .NetCore.App v1 下运行 运行ning。但是,我认为当我的 .Net 4.6.1 项目中有其他依赖项时会出现问题。