我有C#项目,我在其中使用Microsoft.SqlServer.Management.Smo,Microsoft.SqlServer.batchparser.dll和其他几个SqlServer dll。
当我在开发框上运行代码时,它工作正常,但是当我尝试在干净的机器(客户机)上运行可执行文件时,它会失败并引发此异常:
Microsoft.SqlServer.Management.Smo.FailedOperationException:数据库'testdb'的ExecuteNonQuery失败。 ---> System.IO.FileLoadException:无法加载文件或程序集“Microsoft.SqlServer.BatchParser.dll”或其某个依赖项。此应用程序无法启动,因为应用程序配置不正确。重新安装该应用程序可能会解决此问题。 (来自HRESULT的异常:0x800736B1)
在System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly程序集,字符串名称,布尔throwOnError,布尔ignoreCase,ObjectHandleOnStack类型)
在System.Reflection.RuntimeAssembly.GetType(字符串名称,布尔throwOnError,布尔ignoreCase)
在Microsoft.SqlServer.Management.Common.ServerConnection.GetStatements(String query,ExecutionTypes executionType,Int32& statementsToReverse)
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection查询,ExecutionTypes executionType)
在Microsoft.SqlServer.Management.Smo.Database.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes executionType)
现在,如果我在客户机上安装“Microsoft SQL Server 2012共享管理对象”,它就开始工作。
我想知道哪些依赖项导致batchparser失败。我从“Microsoft SQL Server 2012共享管理对象”安装程序中抓取了程序集,并将它们复制到GAC中,但仍然出现相同的错误。
我的问题是:
1 - 如何找到batchparser.dll的依赖关系并将其附加到我的安装程序中?
2 - 是否有可供我的应用程序之前安装的SQL Server 2012的可分发软件包。
谢谢,
阿里