Как включить libsodium.net в ASP.NET

У меня есть старая сборка веб-сервиса на ASP.NET (используя .asmx) файлы. Мне нужно использовать натрия.net - к сожалению, он не работает при загрузке зависимого файла libsodium.dll. Любые идеи о том, что я делаю неправильно?

Я добавил libsodium.net через NuGet.

Я переименовал 64-битную DLL в "libsodium.dll" (и другие соглашения об именах тоже).

Я пытался ссылаться на libsodium.dll напрямую, но VS отклоняет его (не действительная DLL). Поэтому я добавил его как «контент» вместо «скопировать в вывод».

После сборки я вижу, что папка website / Bin содержит одновременно nat.dll (сборка .NET) и libsodium.net.

Когда я пытаюсь использовать libsodium.net, я получаю:

ОШИБКА 2015-02-02 11: 14: 27,118 13798ms [41] CabinetService doRequest - Caught: инициализатор типа для 'Sodium.SodiumCore' вызвал исключение. System.TypeInitializationException: инициализатор типа для 'Sodium.SodiumCore' вызвал исключение. ---> System.DllNotFoundException: невозможно загрузить библиотеку DLL 'libsodium.dll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E) в DynamicDllInvokeType.sodium_init () в Sodium.SodiumCore..cctor () --- Конец внутренней трассировки стека исключений --- в Sodium.SodiumCore.LibraryName () в Sodium.SecretBox.Create (Byte [] сообщение, Byte [] nonce, Byte [] ключ) в Macaroons.SecretBoxCryptoAlgorithm.Encrypt (Byte [] ключ, Byte [] plainText) в c: \ Projects \ Macaroons.Net \ Macaroons.Net \ SecretBoxCryptoAlgorithm.cs: строка 58

Таким образом, он не может найти "libsodium.dll", даже если он находится в папке Bin. Я также попытался удалить зависимость от «odium.net », где после того, как я получил ошибку времени выполнения, говорящую о том, что« натрия.нет »отсутствует - когда я повторно добавил его, эта ошибка исчезла, и вместо этого я получил ту, что выше (указывая на "odium.net "загружается правильно).

Поэтому я открываю теневую папку веб-сайта в «C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ cabinetservice» и ищу «натрий». Единственный результат - "odium.dll "в некоторой подпапке. Там нет "libsodium.dll".

Таким образом, очевидно, ASP.NET игнорирует файл "libsodium.dll" при создании теневой копии сайта.

Я также попытался добавить libsodium.dll (32-разрядная версия) в C: \ Windows \ System32 и libsodium.dll (64-разрядная версия) в C: \ Windows \ SysWOW64. Тот же результат.

И я пробовал C: \ Windows \ Microsoft.NET \ Assembly \ GAC_32 \ libsodium и C: \ Windows \ Microsoft.NET \ Assembly \ GAC_64 \ libsodium. Тот же результат.

Как я могу сделать так, чтобы ASP.NET знал о зависимости?

Ответы на вопрос(1)

Ваш ответ на вопрос