【问题标题】:Why won't System.Data automatically load in scriptcs?为什么 System.Data 不会在脚本中自动加载?
【发布时间】:2017-11-01 14:01:02
【问题描述】:

我正在尝试使用 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,但得到了同样的错误。

我已验证 System.Data.dll 存在于 GAC 中 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 控制台应用程序(非脚本)使用 SqlConnection 类没有问题。

【问题讨论】:

    标签: c# .net scriptcs


    【解决方案1】:

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

    【讨论】:

    • :facepalm: 我想我已经太依赖 Intellisense 了。
    • 尝试在notepad.exe中编写所有代码,这将解决依赖关系:P
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-01
      • 2013-11-21
      • 1970-01-01
      相关资源
      最近更新 更多