У меня есть многопроектное решение (C#), которое я пытаюсь развернуть на одном из наших тестовых серверов. Все проекты создаются для x64 с отключенным параметром «Предпочитать 32-разрядную версию», где это применимо.
Некоторые проекты ссылаются на набор dll SQLite, который использует расширение шифрования SQLite (не управляемое nuget). Когда я создаю и устанавливаю решение на своем локальном компьютере, приложение и служба Windows могут работать правильно, без проблем.
Когда я пытаюсь установить тот же пакет на один из наших тестовых серверов под управлением 64-разрядной версии Windows Server 2012, я получаю сообщение «Невозможно загрузить DLL «SQLite.Interop.dll»: указанный модуль не найден». всякий раз, когда я пытаюсь связаться с базой данных SQLite. Я трижды проверил, что все подходящие библиотеки DLL находятся в папке программы после установки.
В моем решении VS я попытался создать папки x86/x64, установив для параметра «Копировать» значение «Всегда», но безрезультатно. Я также скопировал библиотеки DLL из моей локальной установочной папки в папку сервера, чтобы посмотреть, не испортится ли что-нибудь по пути.
Может ли быть проблема с разрешениями? Я пользователь с повышенными правами, но не полный администратор на сервере, в то время как я являюсь полным администратором на своей машине. Я попытался вручную изменить разрешения для папки программы, чтобы увидеть, была ли это проблема, но и с этим мне не повезло.
Подводя итог, можно сказать, что проект создается специально для x64, имеет правильные библиотеки DLL в правильных папках и работает при локальной установке. Я в недоумении, почему он не будет работать при установке сервера. Я просмотрел бесчисленные потоки на StackOverflow, MSDN и веб-сайте SQLite, все они обычно предлагают папки x86/x64, но это не сработало для меня. Я надеюсь, что кто-то может помочь мне здесь.
Спасибо!