我在Debian 8 amd64系统上安装了.NET Core RC2,并希望测试是否可以查询Microsoft SQL Server实例。
所以我想在我的项目中添加对System.Data.SqlClient
程序集的依赖。
目前,通过运行dotnet new
CLI工具创建的项目文件如下所示:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
使用this answer进行类似查询,我可以添加对System.Data.Common
的引用,以便更改
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
片段到
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50",
"dependencies": {
"System.Data.Common": "*"
}
}
}
使dotnet restore
使用NuGet下载了一堆东西。
然后我尝试将该片段更改为
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50",
"dependencies": {
"System.Data.SqlClient": "*"
}
}
}
但NuGet说它是
无法为'.NETCoreApp,Version = v1.0'解析'System.Data.SqlClient'。
如果我将版本字符串更改为“4.1.0-rc3- *”,则错误消息会更具体:
无法为'.NETCoreApp,Version = v1.0'解析'System.Data.SqlClient(> = 4.1.0-rc3)'。
我感到困惑的是the NuGet package gallery dedicated to .NET Core明确列出System.Data.SqlClient
可用。
那么我该怎样做才能将System.Data.SqlClient
程序集的引用添加到我的项目中并让NuGet下载呢?
另一方面,我目前正在普通控制台中玩,只有dotnet
CLI工具。有没有办法管理.NET Core项目的项目依赖项而无需安装IDE?
答案 0 :(得分:10)
就像评论中已经注释的poke一样正确。指定System.Data.SqlClient
的版本可使您的恢复满意;)
为什么? http://nuget.org图库中存在System.Data.SqlClient
。不指定版本(“”)不允许在项目边界之外(如nuget feed包)并且仅指定一个星"*"
(你永远不应该这样做,它允许破坏更改)恢复最高可用版本。由于没有稳定,明星将找不到任何东西(背后的破折号有一些魔力)。该库的RC2版本是上面提到的4.1.0-rc2-24027,当您询问4.1.0-rc2- *时,它将占用RC2构建中的最高版本(但只有一个)。相比之下System.Data.Common
在nuget.org上有一个针对通用Windows平台的公开发布,并且因此而被发现。
RC3是下一个版本,仅适用于.NET Core和ASP.NET Core团队的开发人员提要,而不是公共nuget提要。你不应该玩它们。
答案 1 :(得分:1)
如果您在project.json文件中,如果您使用最新的工具更新Visual Studio,intellisense现在指导您。
我在依赖项元素中添加了以下内容,它完美运行..
“System.Data.SqlClient”:“4.1.0-rc2-24027”,
答案 2 :(得分:0)
在MINT 19 Tara上,我不使用System.Data.SqlClient,而是使用较新版本的Microsoft.Data.SqlClient。 Check nuget
键入.NET-cli命令后,下载了该软件包,并将引用添加到了项目csproj文件中。
在代码中,使用较新的名称空间:
使用Microsoft.Data.SqlClient;
“常规”代码可以正常工作:
public static void CreateCommand(string queryString, string connectionString)
{
using (SqlConnection connection = new SqlConnection(
connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
command.Connection.Open();
SqlDataReader reader = command.ExecuteReader() ;
while( reader.Read() ) {
for (int i = 0; i < reader.FieldCount; i++)
{
Console.WriteLine( "Column name={0}, Value={1}",
reader.GetName(i),
reader.GetValue(i) );
}
}
}
}