无法加载文件或程序集“Microsoft.SqlServer.BatchParserClien.dll 文件名

Posted

技术标签:

【中文标题】无法加载文件或程序集“Microsoft.SqlServer.BatchParserClien.dll 文件名【英文标题】:Could not load file or assembly 'Microsoft.SqlServer.BatchParserClien.dll File Name 【发布时间】:2018-03-28 11:38:09 【问题描述】:

我有一个 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 包。

异常中的融合日志是:

=== 预绑定状态信息 === LOG: DisplayName = Microsoft.SqlServer.BatchParser, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91(完全指定)日志:Appbase = file:///C:/tfs/返回 Office/Persistence/ReplicationManagement/Worker/bin/Debug/LOG: 初始 PrivatePath = NULL 调用程序集: Microsoft.SqlServer.BatchParserClient,版本=14.100.0.0, 文化=中性,PublicKeyToken=89845dcd8080cc91。 === LOG:此绑定在默认加载上下文中开始。 LOG:使用应用程序配置文件:C:\tfs\Back Office\Persistence\ReplicationManagement\Worker\bin\Debug\Worker.exe.Config LOG:使用主机配置文件: LOG:使用机器配置 文件来自 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config。 LOG:后策略参考:Microsoft.SqlServer.BatchParser, 版本=14.100.0.0,文化=中性,PublicKeyToken=89845dcd8080cc91 日志:正在尝试下载新的 URL 文件:///C:/tfs/Back Office/Persistence/ReplicationManagement/Worker/bin/Debug/Microsoft.SqlServer.BatchParser.DLL。 ERR:无法完成程序集的设置(hr = 0x8007000b)。探测 终止。

BatchParser 文件确实存在于 bin 中,并指定了相同的版本。我有一个项目可以使用,唯一的区别是输出中的文件名。

【问题讨论】:

MS Connect 上的相同问题:connect.microsoft.com/SQLServer/feedback/details/3140836/… 【参考方案1】:

我遇到了类似的问题。我有一个使用 Microsoft.SqlServer.SqlManagementObjects nuget 包的 SMO 应用程序。

该应用程序在我的电脑上完美运行,但是在我们的应用程序服务器上部署和运行它时,我遇到了错误。

无法加载文件或程序集“Microsoft.SqlServer.BatchParser.dll”或其依赖项之一。找不到指定的模块。

为了解决这个问题,我需要再次针对 x86 平台构建项目。 然后我还必须安装相应的x86 C++ Redistributable Package

【讨论】:

安装 x86 软件包为我解决了这个问题。似乎问题与没有 AnyCpu 目标的 nuget 包有关。请参阅此处的讨论。 feedback.azure.com/forums/908035-sql-server/suggestions/… 对 - VC++ 2013 依赖项列在此页面 docs.microsoft.com/en-us/sql/relational-databases/… 的“系统要求”下(但不在 NuGet 页面上!)【参考方案2】:

对于 Visual Studio 2017,请下载此 nuget 包

Install-Package Microsoft.SqlServer.SqlManagementObjects -Version 140.17283.0

More Information about latest builds

【讨论】:

【参考方案3】:

我遇到了类似的问题,我必须将我的平台目标设置为任何 CPU以检查首选 32 位。

【讨论】:

以上是关于无法加载文件或程序集“Microsoft.SqlServer.BatchParserClien.dll 文件名的主要内容,如果未能解决你的问题,请参考以下文章

无法加载文件或程序集 'PayPalAdaptivePaymentsSDK,版本 = 2.12.117.0

无法加载文件或程序集。找到的程序集的清单定义与程序集引用不匹配

无法加载文件或程序集'netstandard,版本 = 2.0.0.0

无法加载文件或程序集 此处的程序集名称 或其依赖项之一。访问被拒绝

无法加载文件或程序集或其依赖项之一

寻找解决策略:无法加载文件或程序集[重复]