未找到 EF6 方法 set_SqlServerTypesAssemblyNames
EF6 Method not found set_SqlServerTypesAssemblyNames
我在将控制台应用程序部署到服务器上时遇到困难。
我正在使用 EF6 (6.3.0) 和 SqlServerTypes 14 (14.0.1016.290) 并在按照建议进行任何空间调用之前进行初始化
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: Method not found: 'Void System.Data.Entity.SqlServer.SqlProviderServices.set_SqlServerTypesAssemblyName(System.String)'.
我已确保 SqlServerTypes dll 存在于 bin 目录中。
我读到 EF6 最多只支持 SqlServerTypes 11,我试过了,但运气不好。
应用程序在本地运行良好。
编辑:我现在已经在服务器上安装了 SQL 服务器系统 CLR 类型,但没有用。
当您的开发运行时和部署环境在 GAC 中安装了不同版本的包并且并非所有来自开发环境的 dll 都被复制到部署环境中时,可能会发生此错误(以及其他类似错误)。
这个问题有可能有用的指导:EntityFramework.SqlServer.dll not is getting added to the published folder only when I publish in RELEASE mode
- 我的首选解决方法是遵循 this advice and make a code reference 到 class 或您依赖的每个 DLL 中的函数 'trick' visual studio 将 dll 包含在如果该程序集不可用,则默认输出 AND 以强制编译时错误(在通过注入使用 DLL 的情况下很有用)。
如果您不知道哪个 dll 可能是原因并且应用程序在开发中运行良好,那么一个简单的修复可以是将 ALL 引用标记为 Copy Local = True :
然后,如果可行,您可以从输出中删除您认为不需要的 DLL,反复测试应用程序是否仍在运行,直到找到需要部署的最小 dll 集
我在将控制台应用程序部署到服务器上时遇到困难。
我正在使用 EF6 (6.3.0) 和 SqlServerTypes 14 (14.0.1016.290) 并在按照建议进行任何空间调用之前进行初始化
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: Method not found: 'Void System.Data.Entity.SqlServer.SqlProviderServices.set_SqlServerTypesAssemblyName(System.String)'.
我已确保 SqlServerTypes dll 存在于 bin 目录中。
我读到 EF6 最多只支持 SqlServerTypes 11,我试过了,但运气不好。
应用程序在本地运行良好。
编辑:我现在已经在服务器上安装了 SQL 服务器系统 CLR 类型,但没有用。
当您的开发运行时和部署环境在 GAC 中安装了不同版本的包并且并非所有来自开发环境的 dll 都被复制到部署环境中时,可能会发生此错误(以及其他类似错误)。
这个问题有可能有用的指导:EntityFramework.SqlServer.dll not is getting added to the published folder only when I publish in RELEASE mode
- 我的首选解决方法是遵循 this advice and make a code reference 到 class 或您依赖的每个 DLL 中的函数 'trick' visual studio 将 dll 包含在如果该程序集不可用,则默认输出 AND 以强制编译时错误(在通过注入使用 DLL 的情况下很有用)。
如果您不知道哪个 dll 可能是原因并且应用程序在开发中运行良好,那么一个简单的修复可以是将 ALL 引用标记为 Copy Local = True :
然后,如果可行,您可以从输出中删除您认为不需要的 DLL,反复测试应用程序是否仍在运行,直到找到需要部署的最小 dll 集