System.Data.Linq 在 netstandard20 中

System.Data.Linq in netstandard20

我有一个引用 .Net 4.6 项目的 netstandard20 项目,除了我在 .Net 4.6 项目中调用任何功能的地方外,所有项目都编译并运行,我收到以下错误。

FileNotFoundException: Could not load file or assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.

在 VS 2017 中,在 Dependancies / SDK / Microsoft.NETCore.App 下的项目资源管理器中我可以看到 System.Data.dllSystem.Data.Common.dll 但没有提到 System.Data.Linq.dll,我假设这是我的问题而且还没有拉进去

如何让我的项目包含 System.Data.Linq.dll

如果我包含 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6\System.Data.Linq.dll 我会得到以下错误

BadImageFormatException: Could not load file or assembly 'System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Reference assemblies should not be loaded for execution. They can only be loaded in the Reflection-only loader context. (Exception from HRESULT: 0x80131058)

System.Data.Linq 不是 .NET Standard 2.0 和 .NET Core 2.0 的一部分,因此不能在该平台上使用。

即使您能够通过兼容性垫片添加对 .NET 4.6 项目的引用,它也会在运行时失败,因为目标运行时上的某个功能不可用

通过使用 Mindbox.Data.Linq NuGet 包,我能够解决在 .NET Standard 2.0 库中使用 System.Data.Linq 的需求。

安装后,您应该可以像为 .NET Framework 编写代码一样使用 System.Data.Linq 命名空间!