在.NET 4.6项目中引用.NET Core Library

Rom*_*ler 40 .net c#

也许我对".NET核心库"的含义缺乏了解,但是当我尝试使用Visual Studio 2015在.NET 4.6程序集中添加.NET核心库时,我收到错误:

无法添加对"..."的引用.

我明白了什么问题吗?

这是我在.NET Core程序集的project.json中配置的

"frameworks": {
   "net451": { },
   "dotnet5.4": {
     "dependencies": {
     "Microsoft.CSharp": "4.0.1-beta-23516",
     "System.Collections": "4.0.11-beta-23516",
     "System.Linq": "4.0.1-beta-23516",
     "System.Runtime": "4.0.21-beta-23516",
     "System.Threading": "4.0.11-beta-23516"
  }
}
Run Code Online (Sandbox Code Playgroud)

Gar*_*and 23

现在可以使用.Net Core RC2完成此操作.方法如下:

  1. 确保您的.Net RC2项目' project.json配置为包含相关的.net框架.例如,本节引用.Net 4.51,该版本可以由任何与此版本相同或更高的框架引用:

例:

"frameworks": {
  "net451": { },
  "netstandard1.5": {
  "dependencies": {
    "NETStandard.Library": "1.5.0-rc2-24027"
  },
  "imports": [
    "portable-net45+wp80+win8+wpa81+dnxcore50",
    "portable-net451+win8"
  ]
 }
},
Run Code Online (Sandbox Code Playgroud)
  1. 将RC2应用程序打包为Nuget包.我还没有看到如何从Visual Studio中执行此操作,但可以从命令行执行以下操作:

    dotnet pack -o e:\packages

如果要在每个构建时更新它,可以将以下内容添加到project.json文件中,该文件会自动将包更新到父目录中:

"scripts": {
  "postcompile": [
    "dotnet pack --no-build --configuration Debug -o ..//..//..//packages"
]}
Run Code Online (Sandbox Code Playgroud)
  1. 将Nuget包添加到.net 4.6应用程序中.这可以通过几种方式完成.一种简单的方法是将保存包的位置添加为packaage源引用.

  2. project.json每次构建时增加文件中的版本号,以确保其他应用程序看到更新.

  • 它有效,但多么可怕的经历.这不是承诺的"csproj可以引用xproj".在工具退出预览之前,几乎不值得这样做. (9认同)
  • 创建一个nuget包是不必要的...一旦你添加了必需的框架和构建,你可以直接从.NET 4.6应用程序引用.NET CORE项目. (2认同)

Rom*_*ler 9

答案显示在演示文稿中

仅使用尚未发布的ASP.NET Core RC 2,将添加对csproj中引用xproj的支持.

  • 我现在在RC 2上,我仍然看到同样的错误. (8认同)

won*_*nea 6

更改您的类库(和任何依赖项)以构建4.6以及.NET Core;

更改类库以构建

现在,这将为您构建类库的两个版本.

两个版本的Debug文件夹

在.NET 4.6项目(App)中,然后添加对调试文件夹中找到的类库DLL的直接引用

添加直接参考

您现在可以导入此命名空间,并针对它进行构建.虽然ReSharper(2016.3 EAP 2)似乎感到困惑,并将这些线条标记为红色 - 但这是一个止损,直到.NET发布之后.

如果打开应用程序项目文件(.csproj),您将看到框架添加的引用.

在此输入图像描述

注意:构建代码dnx462似乎不起作用,抱怨.NET框架没有安装,即使该项目有一个4.6.2 WPF应用程序.