我有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) at System.Reflection.RuntimeAssembly.GetType(RuntimeAssembly assembly,String name,Boolean throwOnError,Boolean ignoreCase,ObjectHandleOnStack type) at System.Reflection.RuntimeAssembly.GetType(String name,Boolean throwOnError,Boolean 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的可重新分发包。
谢谢, 阿里
答案 0 :(得分:0)
对于有同样问题的人,
安装Microsoft Visual C ++ Redistributable Package ATL Security Update为我解决了这个问题。
干杯,