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

Why won't System.Data automatically load in 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: The type or namespace name 'SqlConnection' could not be found (are you missing a using directive or an assembly reference?)

根据the documentation

System, System.Core, System.Data, System.Data.DataSetExtensions, System.Xml, System.Xml.Linq assemblies are referenced by default.

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

#r "System.Data.dll"

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

我已确认 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

的 GAC 中

普通的 .NET 控制台应用程序(非 scriptcs)使用 SqlConnection 没有问题 class。

您没有正确的命名空间。 SqlConnection class 实际上在 System.Data.SqlClient

请看一下在命名空间System.Data.SqlClient.

中定义的SqlConnection

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