我有一个简单的ASP.NET vNext类库项目,当引用System.Data中的类型时,该项目无法编译;我在这里做错了什么,还是vnext有问题?
我像这样设置我的project.json:
{
"dependencies": {
"System.Data.Common": "1.0.0-alpha3"
},
"frameworks": {
"net451": {
"dependencies": {
}
},
"k10": {
"dependencies": {
}
}
}
}
键入“System.Data.Common”引用时,nuget intellisense可以正常工作;保存文件后,程序包还原按预期进行。
然后,我向项目添加了一个接口(interface),该接口(interface)引用了
System.Data.IDbConnection
,如下所示:using System.Data;
namespace MyProj.Common.Data
{
public interface IDbConnectionFactory
{
IDbConnection CreateConnection();
}
}
在制造时炸弹:
我的KVM list :
C:\Users\Administrator\Proj\MyProj [next +3〜2 -0!]> kvm列表
事件版本运行时体系结构位置别名
------ ------- ------- ------------ -------- -----
* 1.0.0-alpha3 svr50 x64 C:\Users\Administrator\.kre\packages默认
1.0.0-alpha3 svr50 x86 C:\Users\Administrator\.kre\packages
1.0.0-alpha3 svrc50 x64 C:\Users\Administrator\.kre\packages
1.0.0-alpha3 svrc50 x86 C:\Users\Administrator\.kre\packages
1.0.0-alpha4-10364 CLR amd64 C:\Users\Administrator\.kre\packages
1.0.0-alpha4-10364 CLR x86 C:\Users\Administrator\.kre\packages
1.0.0-alpha4-10364 CoreCLR amd64 C:\Users\Administrator\.kre\packages
1.0.0-alpha4-10364 CoreCLR x86 C:\Users\Administrator\.kre\packages
1.0.0-alpha4-10365 CLR amd64 C:\Users\Administrator\.kre\packages
1.0.0-alpha4-10365 CLR x86 C:\Users\Administrator\.kre\packages
C:\Users\Administrator\Proj\MyProj [下一个+3〜2 -0!]>
Can ASP.NET vNext use non-vNext references?问题似乎非常相似,但是此处的错误消息有所不同,并且nuget intellisense建议ADO.NET程序包是为K10构建的。
最佳答案
IDbConnection是在.NET桌面版本的System.Data.dll中定义的。它不包含在System.Data.Common中,System.Data.Common仅包含ADO.NET类型的一个子集,该子集可在不同版本的运行时中使用。如果您的应用程序只能在桌面.NET上正常运行,则应该可以引用完整的System.Data.dll并使用其中的任何类型。如果您希望能够定位基于CoreCLR的运行时,则应遵循System.Data.Common中定义的类型,例如在这种情况下,您可以使用DbConnection。