dnx46至少需要.NET Framework 4.5.1吗?

时间:2016-02-19 12:34:59

标签: asp.net-core

在一个新的WebAPI项目中(尝试使用ASP.NET Core 1.0),我们需要查询旧数据库" Pervasive SQL"使用他们提供的ADO.NET Provider。但是,他们没有EF6提供商,因此我们不得不使用EF5。

跳过实体框架并直接使用ADO.NET PSqlConnection需要" System.Data 2.0.0.0"。这让我觉得提供程序是在.NET Framework 2.0(或3.5)上编译的。

project.json

  "frameworks": {
    "net451": { },
    "dnx46": {
      "dependencies": {
        "EntityFramework": "5.0.0",
        "Pervasive.Data.SQLClient.Entity": "1.0.0-*",
        "Pervasive.Data.SqlClient": "1.0.0-*",
        "Pervasive.Data.Common": "1.0.0-*"
      }
    }
  }

跑步" dnu build"导致以下异常

xx\..\Controllers\ValuesController.cs(22,18): DNX,Version=v4.6 error CS0012: The type 'DbConnection' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

Build failed.
    0 Warning(s)
    2 Error(s)

真正的问题: dnx46至少需要.NET Framework 4.5.1吗? 或者以某种方式从ASP.NET Core 1.0引用.NET Framework 3.5(或2.0)?

1 个答案:

答案 0 :(得分:1)

该名字对象的版本告诉您:它需要.NET Framework 4.6。

对于4.5.1,您需要dnx451名字对象。

但实质是,4.5是使用新的ASP.NET Core 1.0(ASP.NET 5)的最小框架。你可以看到矩阵以及这个名字对象如何在" .Net Platform Standard" github上的页面。

  

观察

     
      
  • 如果库以.NET Platform Standard 1.3版为目标,则它只能在.NET Framework 4.6或更高版本,Universal Windows Platform 10(UWP),DNX Core 5.0和Mono / Xamarin平台上运行。
  •   
  • 如果库以.NET Platform Standard 1.3版为目标,它可以使用以前所有.NET Platform Standard版本(1.2,1.1,1.0)中的库。
  •   
  • 最早支持.NET平台标准版的.NET Framework是.NET Framework 4.5。这是因为用作.NET平台标准基础的新的可移植API表面区域(也称为基于System.Runtime的表面区域)仅在该版本的.NET Framework中可用。目标.NET Framework&lt ; = 4.0需要多目标定位。
  •   
  • 每个.NET Platform Standard版本都支持更多的API表面,这意味着它可以在更少的平台上使用。随着平台的更新,他们的新版本会跳转到更新的.NET Platform Standard版本。
  •   
  • 已停止更新的平台 - 如Windows Phone上的Silverlight - 只能在最早的.NET平台标准版本中使用。
  •   

注意

请注意,那里描述的绰号是针对当前的夜间构建。当前的RC1版本略有不同,即对于dnx应用程序(ASP.NET,控制台,单元测试项目)和dnx以及dnxcorenet dotnetnet {1}}用于"类库(包)"。在RC2当前版本和RC中,它将是netstandardh2 { position:relative; z-index:1; } h2:after { content:""; position:absolute; width:80%; height:100%; background-color:rgba(0, 0, 0, .1); left:-10px; bottom:-10px; z-index:-1; }(另见this answer)。