C# 未找到EF6方法集\ SQLServerTypesSemblyNames
在服务器上部署控制台应用程序时遇到困难 我正在使用EF6(6.3.0)和SqlServerTypes 14(14.0.1016.290),并按照建议在进行任何空间调用之前进行初始化C# 未找到EF6方法集\ SQLServerTypesSemblyNames,c#,entity-framework,entity-framework-6,C#,Entity Framework,Entity Framework 6,在服务器上部署控制台应用程序时遇到困难 我正在使用EF6(6.3.0)和SqlServerTypes 14(14.0.1016.290),并按照建议在进行任何空间调用之前进行初始化 SqlProviderServices.SqlServerTypesAssemblyName = Assembly.GetAssembly(typeof(Microsoft.SqlServer.Types.SqlGeography)).FullName; //"Microsoft.SqlServer.Types, V
SqlProviderServices.SqlServerTypesAssemblyName = Assembly.GetAssembly(typeof(Microsoft.SqlServer.Types.SqlGeography)).FullName; //"Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
但是在setter行上,会抛出以下错误
System.MissingMethodException:找不到方法:“Void System.Data.Entity.SqlServer.SqlProviderServices.set_SQLServerTypesSemblyName(System.String)”
我已确保SqlServerTypes DLL存在于bin目录中
我读到EF6只支持我尝试过的SqlServerTypes 11,但是运气不好
应用程序在本地运行良好
编辑:我现在在服务器上安装了SQL Server系统CLR类型,但没有效果。当开发运行时和部署环境在GAC中安装了不同版本的包,并且没有将开发环境中的所有DLL复制到部署环境中时,可能会发生此错误(以及其他类似错误)
这个问题提供了可能有用的指导:
- 我首选的解决方法是遵循并对每个dll中的类或函数进行修改,您依赖这些类或函数来“欺骗”visual studio,使其在默认情况下将dll包含在输出中,并在该程序集不可用时强制执行编译时错误(在通过注入使用dll的情况下非常有用)李>
然后,如果可行,您可以从您认为不需要的输出中删除DLL,反复测试应用程序是否仍在运行,直到找到需要部署的最小DLL集为止尝试升级到v15类型,确保通过NuGet安装。另一件要尝试的事情是编译为x86,如果这是可行的,那么您正在加载错误的dllruntime@ChrisSchallerNuGet中没有SqlServer.Types 15.x?该程序集不是通过NuGet交付的。有空。坦率地说,考虑到EF6中的半空间支持,在任何情况下,你都应该考虑使用和NotoTraceSueTo,你所张贴的东西不会初始化任何东西。它尝试更改EF使用的SqlServerTypes程序集。虽然是EF类,但不是SqlServerTypes类。该错误表示您使用了错误的EF类型-可能是错误地使用了EF 5.0,或者是EF 6.3删除了属性。如果您不想从客户端发出空间查询,您可以使用它将地理值读取为BLOB并在客户端上解析它们。