如何在 .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) );
}
}
}
}
我已经在 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) );
}
}
}
}