У меня есть 64-битный рабочий стол, написанный на C # с использованием Visual Studio 2015 и развернутый с ClickOnce. Он основан на SQLite, и я включил файл SQLite.Interop.dll
в публикацию, используя следующие строки в стартовом проекте:
<PropertyGroup>
<ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
<CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
<CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
<CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
</PropertyGroup>
Это работает, и я могу убедиться, что две копии SQLite.Interop.dll
действительно развернуты в подпапках с именами x86
и x64
. Однако некоторые пользователи по-прежнему получают сообщение об ошибке Unable to load DLL SQLite.Interop.dll: The specified module could not be found
.
Странно, что я скопировал содержимое своей папки bin для разработки и поместил ее на машину для развертывания (в другом месте), и она заработала нормально.
Существует ли какая-то проблема с "DLL-адом", из-за которой в разных путях выполняется поиск зависимостей при развертывании приложения с помощью ClickOnce?