为什么System.Data不会在脚本中自动加载?

时间:2017-11-01 14:01:02

标签: c# .net scriptcs

我正在尝试使用scriptcs 0.17.1在C#中创建一个简单的脚本。这是我的剧本:

using System.Data;

using(var connection = new SqlConnection("constring"))
{
    using(var command = new SqlCommand("select GETDATE()", connection))
    {
        connection.Open();
        command.ExecuteNonQuery();
        Console.WriteLine("Hello, world!");
    }
}

当我通过scriptcs test.csx运行时,这给了我错误:

  

CS0246:找不到类型或命名空间名称“SqlConnection”(您是否缺少using指令或程序集引用?)

根据the documentation

  

默认情况下引用System,System.Core,System.Data,System.Data.DataSetExtensions,System.Xml,System.Xml.Linq程序集。

我尝试将以下行添加到我的脚本顶部但得到了同样的错误:

#r "System.Data.dll"

我尝试将我的班级名称完全限定为System.Data.SqlConnection,但却遇到了同样的错误。

我已验证GAC中存在System.Data.dll C:\Windows\Microsoft.NET\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089C:\Windows\Microsoft.NET\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089

正常的.NET控制台应用程序(非scriptcs)使用SqlConnection类没有问题。

2 个答案:

答案 0 :(得分:3)

您没有正确的命名空间。 SqlConnection类实际上位于OnConnectedAsync()

答案 1 :(得分:1)

请查看名称空间System.Data.SqlClient中定义的SqlConnection

作为附加提示,您可以将代码发布到一个简单的命令行项目中,看看会发生什么。