c# - 已发布的 Windows 应用程序中发生有关无法加载文件或程序集“Microsoft.SqlServer.BatchParser”的异常
问题描述
我正在开发需要通过编程执行一些 SQL 脚本的 Windows 应用程序。
为此,我正在使用程序集Microsoft.SqlServer.Smo, Version=14.100.0.0
这是我的代码
/// <summary>
/// Executes the script query.
/// </summary>
/// <param name="connectionString">The connection string.</param>
/// <param name="dbScriptData">The database script data.</param>
private void ExecuteScriptQuery(string connectionString, string dbScriptData)
{
Logger.LogInfo("DB Setup: script execution start");
SqlConnection conn = new SqlConnection(connectionString);
//-- create SQL Server instance ---
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(dbScriptData); // execute sql script
}
相同的代码在调试模式下运行良好。当我发布此代码并将其安装.exe
在同一台机器上时,它也可以在那里工作。
但是当.exe
在另一台机器上安装它时,我在脚本执行时得到了异常。
这是我在日志中捕获的异常。
错误消息:无法加载文件或程序集 'Microsoft.SqlServer.BatchParser, Version=14.100.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' 或其依赖项之一。试图加载格式不正确的程序。
用于构建 Windows 应用程序的工具是 Visual Studio 2019,我正在使用:
- .NET 框架 4.6
- 平台目标:“任何 CPU”与首选 32 位复选框保持未选中状态
- 用于发布的方法 - ClickOnce
编辑1:
我强制用户在安装 exe 设置之前在他们的机器上预安装 .NET Framework 4.6
解决方案
推荐阅读
- swift - 使用 SearchBar 时,复选标记与 TableView 中的错误行相关联
- java - 在recyclerview中修改这些对象后创建对象的子列表
- powershell - Powershell 使用 psexec 和 oneliner 在远程计算机上通过排序获取文件夹大小
- visual-studio - 如何避免 Visual Studio 增量构建在外部文件时不运行
和 改变了吗? - architecture - DDD中的参考数据
- android - 中间有图片的圆形按钮
- python - 为什么我的长度只有我想要的一半?
- java - 如何在 JBehave 中操作 Before-/AfterScenarios 的顺序?
- angular - 提供者共享模块 Angular 4
- uwp - 让 UWP MS-Test 以稳定的方式工作非常困难