Я работаю над приложением Windows, в котором мне нужно выполнить некоторый SQL-скрипт посредством программирования.
Для этого я использую сборку Microsoft.SqlServer.Smo, Версия = 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 ExecuteScriptQeury(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, версия = 14.100.0.0, культура = нейтральная, PublicKeyToken =89845dcd8080cc91 'или одной из его зависимостей. Была предпринята попытка загрузить программу с неверным форматом.
Инструмент, используемый для создания приложения Windows, - Visual Studio 2019, и я использую:
- . NET Framework 4.6
- Цель платформы: «Любой ЦП» с флажком «предпочитать 32 бита» не установлен
- Метод публикации - ClickOnce
Редактировать 1:
Я сделал обязательным для пользователя предварительную установку .NET Framework 4.6 на своем компьютере перед установкой exe setup