当前上下文中不存在名称 'SqlDataSourceEnumerator'
The name 'SqlDataSourceEnumerator' does not exist in the current context
在 Visual studio 的 c# .net 5 程序中,我正在测试使用 SqlDataSourceEnumerator
的代码
public static List<SqlServerInstance> LocateSqlInstances()
{
List<SqlServerInstance> results = new List<SqlServerInstance>();
using (DataTable sqlSources = SqlDataSourceEnumerator.Instance.GetDataSources())
{
foreach (DataRow source in sqlSources.Rows)
{
string servername;
string instancename = source["InstanceName"].ToString();
if (!string.IsNullOrEmpty(instancename))
{
servername = source["ServerName"].ToString() + '\' + instancename;
}
else
{
servername = source["ServerName"].ToString();
}
results.Add(new SqlServerInstance() { ServerInstance = servername, Version = source["Version"].ToString() });
}
}
return results;
}
尽管我已经在使用 System.Data;我得到
错误 CS0103 名称 'SqlDataSourceEnumerator' 在当前上下文中不存在
为什么会这样?
此时 SqlDataSourceEnumerator
尚未针对任何版本的 .NET Core 或 .NET 5 实现。这是因为 .NET Framework 版本依赖于本机 C++ 实现和 .NET团队将需要将其重新实现为托管代码以符合他们的设计目标。 If/when 它已实现,将在 Microsoft.Data.SqlClient
包中。
在 dotnet/SqlClient
github 存储库中有一个讨论:
请注意,这自 2017 年初就已为人所知,最后一次提到有任何解决方案来自 Jul 2020。
在此实现之前,对于任何绝对必须使用 SqlDataSourceEnumerator
的应用程序,您都必须依赖 .NET Framework,或者找到一个 alternative method 来扫描 SQL 服务器。
在 Visual studio 的 c# .net 5 程序中,我正在测试使用 SqlDataSourceEnumerator
的代码 public static List<SqlServerInstance> LocateSqlInstances()
{
List<SqlServerInstance> results = new List<SqlServerInstance>();
using (DataTable sqlSources = SqlDataSourceEnumerator.Instance.GetDataSources())
{
foreach (DataRow source in sqlSources.Rows)
{
string servername;
string instancename = source["InstanceName"].ToString();
if (!string.IsNullOrEmpty(instancename))
{
servername = source["ServerName"].ToString() + '\' + instancename;
}
else
{
servername = source["ServerName"].ToString();
}
results.Add(new SqlServerInstance() { ServerInstance = servername, Version = source["Version"].ToString() });
}
}
return results;
}
尽管我已经在使用 System.Data;我得到
错误 CS0103 名称 'SqlDataSourceEnumerator' 在当前上下文中不存在
为什么会这样?
此时 SqlDataSourceEnumerator
尚未针对任何版本的 .NET Core 或 .NET 5 实现。这是因为 .NET Framework 版本依赖于本机 C++ 实现和 .NET团队将需要将其重新实现为托管代码以符合他们的设计目标。 If/when 它已实现,将在 Microsoft.Data.SqlClient
包中。
在 dotnet/SqlClient
github 存储库中有一个讨论:
请注意,这自 2017 年初就已为人所知,最后一次提到有任何解决方案来自 Jul 2020。
在此实现之前,对于任何绝对必须使用 SqlDataSourceEnumerator
的应用程序,您都必须依赖 .NET Framework,或者找到一个 alternative method 来扫描 SQL 服务器。