C# netstandard20中的System.Data.Linq
我有一个netstandard20项目,它引用了一个.NET4.6项目,除了调用.NET4.6项目中的任何功能外,所有的编译和运行都会发生以下错误 FileNotFoundException:无法加载文件或程序集'System.Data.Linq,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089'。系统找不到指定的文件 在VS 2017中,在C# netstandard20中的System.Data.Linq,c#,.net-standard,.net-standard-2.0,C#,.net Standard,.net Standard 2.0,我有一个netstandard20项目,它引用了一个.NET4.6项目,除了调用.NET4.6项目中的任何功能外,所有的编译和运行都会发生以下错误 FileNotFoundException:无法加载文件或程序集'System.Data.Linq,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089'。系统找不到指定的文件 在VS 2017中,在dependencies/SDK/Microsoft.NETCore.App下的project
dependencies/SDK/Microsoft.NETCore.App
下的project explorer中,我可以看到System.Data.dll
和System.Data.Common.dll
,但没有提及System.Data.Linq.dll
,我假设这是我的问题,它没有被拉进来
如何使我的项目包含System.Data.Linq.dll
如果我包含C:\ProgramFiles(x86)\Reference Assembly\Microsoft\Framework\.NETFramework\v4.6\System.Data.Linq.dll
我会得到以下错误
BadImageFormatException:无法加载文件或程序集'System.Data.Linq,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089'。不应加载引用程序集以执行。它们只能在仅反射加载程序上下文中加载。(来自HRESULT的异常:0x80131058)
System.Data.Linq
不是.NET标准2.0和.NET核心2.0的一部分,因此不能在该平台上使用
即使您已经能够通过兼容垫片添加对.NET 4.6项目的引用,但由于目标运行时上不可用的功能,该项目在运行时失败通过使用NuGet包,我能够解决在.NET标准2.0库中使用
System.Data.Linq
的需要
安装后,您应该能够使用
System.Data.Linq
名称空间,就像编写.NET Framework时一样 谢谢你,这个项目可能帮我省了几个星期的工作!有一天仍然需要从Linq迁移到SQL,但至少它不再阻止到Core的迁移:)。如果这样做有效,您将节省一天、一周甚至一个月的时间。我仍然认为LinqToSql是那些喜欢完成任务并知道如何完成任务的人的优秀ORM。我想我会加入旅鼠的行列,跳进海里。