Member 11298827 Ответов: 2

Приложение не может найти DLL файл


I have a Windows Form project in VS2015. It uses System.Data.SqlClient to access a local database file - MyDB.mdf. I have SQL Server 2014 installed, including "Express LocalDB". Targeting .Net Framework 4.0.

The application uses four DLL files to support Backup and Restore functions:

Microsoft.SqlServer.ConnectionInfo.dll
Microsoft.SqlServer.Management.Sdk.Sfc.dll
Microsoft.SqlServer.Smo.dll
Microsoft.SqlServer.SmoExtended.dll

These DLLs are included in the project References.

All works properly on my development PC (Windows 10), but when I install the application on my Windows 10 laptop, there is a problem  - When I do backup or restore, an exception is thrown - 

"Could not load file or assembly 'Microsoft.SqlServer.Smo,
Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc19'
or one of its dependencies. The system cannot find the file specified."


Что я уже пробовал:

I have tried including all the DLL files in the application folder, and also in a sub-folder "lib", but for some reason the DLL file cannot be found.     Note: SQL Server 2016 Express is installed on the laptop.

Question: How do I get the application to find the DLL file(s)? 


Обновление 7/28 - я установил SQL Server 2016 Express на свой компьютер разработки, а затем обновил раздел ссылок в проекте VS2015 до соответствующих экземпляров DLL. Я проверил, что эти экземпляры DLL присутствовали на целевом компьютере ноутбука (та же дата и время). Теперь, когда я создаю приложение на компьютере разработчика и устанавливаю его на ноутбук, все работает.
Примечание: Я использую Inno Setup, чтобы сделать setup.exe файл.
Вопрос: Есть ли способ упаковать DLL-файлы в мою программу установки, чтобы при установке на другую машину эти dll-файлы использовались?

2 Ответов

Рейтинг:
2

Member 11481920

Пожалуйста проверьте эту ссылку проблема может быть разница в версии sql server в ноутбуке и ПК
Обратная совместимость в SMO - SQL Server | Microsoft Docs[^][^]


Рейтинг:
1

Member 11481920

Вы можете получить dll, установив пакеты SMO nuget
Пожалуйста проверьте эту ссылку проблема может быть разница в версии sql server в ноутбуке и ПК
Обратная совместимость в SMO - SQL Server | Microsoft Docs[^][^]


Member 11298827

Спасибо за ваш ответ - у меня нет никакого опыта работы с Nuget - поэтому, прочитав о нем, я обнаружил, что он встроен в VS2015. Я использовал его, чтобы посмотреть на различные пакеты, но не увидел "microsoft.sqlserver.sqlmanagementobjects" (как видно на сайте Nuget).
Я действительно видел "бандл.Майкрософт.От SQLServer.СМО". Это версия 12.0.2000, обновленная 9 месяцев назад. Это тот, который я должен использовать?

BillWoodruff

Пожалуйста, не публикуйте два решения: отредактируйте первое решение.

Member 11298827

Обновление - я попробовал использовать "Bundle.Microsoft.SqlServer.SMO" из Nuget, но это сделало дело еще хуже - когда я устанавливаю приложение на ПК разработки и пытаюсь восстановить, возникает исключение - метод не найден: 'Void Microsoft.SqlServer.Management.Smo.BackupDeviceItem...
Таким образом, казалось бы, методы резервного копирования и восстановления не находятся в более новой DLL?

Еще один вопрос - Можно ли безопасно установить SQL Server 2016 Express поверх предыдущих версий? Я не хочу начинать удалять старые версии, если смогу этого избежать.