如何在.NET Core RC2控制台应用程序(Linux,Debian 8)中使用System.Data?

时间:2016-05-17 18:07:53

标签: c# linux .net-core .net-core-rc2

我在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?

3 个答案:

答案 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) ); 
                }
            }
        }
    }