在一个新的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)?
答案 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
以及dnxcore
和net
dotnet
和net
{1}}用于"类库(包)"。在RC2当前版本和RC中,它将是netstandard
和h2 {
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)。