在 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 团队需要将其重新实现为托管代码以适应其设计目标。如果/当它被实施时,它将在Microsoft.Data.SqlClient
包裹。
有一个讨论涵盖了这个dotnet/SqlClient
github存储库:
- Core 中的 SqlClient 实现和 API 并不完整 https://github.com/dotnet/SqlClient/issues/17
请注意,这一点自 2017 年初以来就已为人所知,最后一次提及任何解决方案来自Jul 2020 https://github.com/dotnet/SqlClient/issues/17#issuecomment-656861690.
在此实现之前,对于任何绝对必须使用的应用程序,您都必须依赖 .NET FrameworkSqlDataSourceEnumerator
,或者找到一个替代方法 https://github.com/mrsquish/SqlBrowserClient扫描 SQL 服务器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)