我们开始将 40 个项目从框架 4.6.1 迁移到 6,一切似乎都很好,但我有一个问题。
我们在一个简单的项目中使用了升级助手工具;它工作得很好,但是删除了
system.data
参考,所以我们有很多与DataSet/DataTable/DataRows/...
相关的内联“错误”,但也有与SqlClient
相关的所有内容。
我们想将“旧”
System.Data.SqlClient
更新为新Microsoft.Data.SqlClient
(这似乎是更好的长期选择)
两种解决方案:
我想最好的是第二个选项,所以我们添加 Imports Microsoft.Data(或在项目中添加命名空间),因为我们使用“SqlClient.SqlConnection”、“SqlClient.SqlCommand”、“SqlClient.SqlDataAdapter”引用对象
但是 DataSet/DataTable/DataRows/ 上的错误仍然存在。所以我想总是有必要添加 System.Data 命名空间?
但是我们如何避免这样的错误(当然很容易。没有所有重命名)
Error BC37229 'SqlCommand' is ambiguous between declarations in namespaces 'Microsoft.Data.SqlClient, System.Data.SqlClient
谢谢
从 .Net 4.6.1 到 .Net 6 的过渡是一个重大飞跃,正如您所提到的,使用 Nuget 是您使用新库的方式,因为默认情况下您的应用程序中不再有完整的 .Net 框架库.
如果您想在整个项目中使用 Microsoft.Data.SqlClient,您可以通过 Nuget 添加该引用,并通过全局引用(如果需要)或在您的个人类文件中添加您的使用引用。
https://www.nuget.org/packages/Microsoft.Data.SqlClient
我会确保您也使用最新版本的 Visual Studio。
您唯一需要从 System.Data 更改为 Microsoft.Data 的地方是在 OperationAbortedException 上。在其他情况下,System.Data 仍然是一个有效的引用。您可以查看 SqlClient 团队的Cheet-Sheet。