我有一个疯狂的问题,SMO操作失败,唯一的区别是我的bin文件夹中的这个奇怪的文件:
无法加载文件或程序集 ' Microsoft.SqlServer.BatchParserClien.dll
注意:这不是拼写错误,也就是文件系统中文件的实际名称。
我不知道该怎么做,我以前在bin文件夹中从未见过这样的东西。
我正在做的操作是:
var distributor = new ReplicationServer(conn);
if (!distributor.DistributorInstalled)
{
distributor.InstallDistributor((string)null, distributionDb);
}
我正在使用版本为140.17177.0的Microsoft.SqlServer.SqlManagementObjects nuget包。
异常中的融合日志是:
===预绑定状态信息===日志:DisplayName = Microsoft.SqlServer.BatchParser,Version = 14.100.0.0,Culture = neutral, PublicKeyToken = 89845dcd8080cc91(完全指定)LOG:Appbase = 文件:/// C:/ TFS /后退 Office / Persistence / ReplicationManagement / Worker / bin / Debug / LOG: Initial PrivatePath = NULL调用程序集: Microsoft.SqlServer.BatchParserClient,Version = 14.100.0.0, Culture = neutral,PublicKeyToken = 89845dcd8080cc91。 ===日志:此绑定在默认加载上下文中启动。日志:使用应用程序配置文件:C:\ tfs \ Back 办公室\持久性\ ReplicationManagement \工\ BIN \调试\ Worker.exe.Config 日志:使用主机配置文件:日志:使用机器配置 来自的文件 C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ CONFIG \ machine.config中。 日志:后策略引用:Microsoft.SqlServer.BatchParser, Version = 14.100.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91 日志:尝试下载新的URL文件:/// C:/ tfs / Back 办公室/持续性/ ReplicationManagement /工人/斌/调试/ Microsoft.SqlServer.BatchParser.DLL。 错误:无法完成程序集的设置(hr = 0x8007000b)。探测 终止。
BatchParser文件确实存在于指定了相同版本的bin中。我有一个项目可以工作,唯一的区别是输出中的文件名。
答案 0 :(得分:5)
我有类似的问题。我有一个使用Microsoft.SqlServer.SqlManagementObjects nuget包的SMO应用程序。
应用程序全部在我的p.c上运行完美但是当它部署并在我们的应用服务器上运行时,我收到了错误。
无法加载文件或程序集“Microsoft.SqlServer.BatchParser.dll”或其依赖项之一。找不到指定的模块。
要解决此问题,我需要再次针对x86平台构建项目。 然后我还必须安装相应的x86 C++ Redistributable Package
答案 1 :(得分:1)
对于Visual Studio 2017,请下载此nuget程序包
Install-Package Microsoft.SqlServer.SqlManagementObjects -Version 140.17283.0
答案 2 :(得分:0)
我遇到了类似的问题,我不得不将我的平台目标设置为“任意CPU” ,并且检查“首选32位”。