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

How do I use System.Data in a .NET Core RC2 console app (Linux, Debian 8)?

我已经在 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"
    }
  }
}

对类似查询使用 ,我能够添加对 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 说是

Unable to resolve 'System.Data.SqlClient' for '.NETCoreApp,Version=v1.0'.

如果我将版本字符串更改为“4.1.0-rc3-*”,错误消息将变得更加具体:

Unable to resolve 'System.Data.SqlClient (>= 4.1.0-rc3)' for '.NETCoreApp,Version=v1.0'.

令我感到困惑的是 the NuGet package gallery dedicated to .NET Core 明确列出了 System.Data.SqlClient 可用。

那么我该怎么做才能将对 System.Data.SqlClient 程序集的引用添加到我的项目中并让 NuGet 下载它?

附带说明一下,我目前正在使用仅使用 dotnet CLI 工具的普通控制台进行游戏。有没有什么方法可以在不安装 IDE 的情况下管理 .NET Core 项目的项目依赖关系?

点赞戳评论里已经标注正确。指定一个版本 System.Data.SqlClient 让你的恢复愉快 ;)

这是为什么? System.Data.SqlClient 存在于 http://nuget.org 画廊中。不允许在项目边界之外(如 nuget 提要包)不指定版本 ("") 并且仅指定星号 "*"(你永远不应该这样做,它允许中断更改)恢复最高可用版本。由于没有马厩,星号将找不到任何东西(后面的破折号有一些魔法)。该库的 RC2 版本是提到的 4.1.0-rc2-24027,当您使用 4.1.0-rc2-* 询问时,它将采用最高的 RC2 版本(但只有一个)。相比之下,System.Data.Common 在 nuget.org 上有一个针对通用 Windows 平台的 public 版本,因此被发现。

RC3 是下一个版本,仅在 .NET Core 和 ASP.NET Core 团队的开发人员源上可用,而不是 public nuget 源。你不应该和他们一起玩。

如果您在 project.json 文件中,如果您已使用最新可用工具更新 Visual studio,智能感知现在会指导您..

我在 dependencies 元素中添加了以下内容,它工作得很好..

"System.Data.SqlClient": "4.1.0-rc2-24027",

在我的 MINT 19 Tara 上,我不使用 System.Data.SqlClient,而是使用较新的版本 Microsoft.Data.SqlClient。 Check nuget

输入 .NET-cli 命令后,下载包并将引用添加到项目 csproj 文件中。

在代码中,使用较新的命名空间:

使用 Microsoft.Data.SqlClient;

"regular" 代码工作正常:

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