Получение 'badimageformatexception' при загрузке libsodium.dll в visual studio 17
У меня есть libsodium-net NuGet, загруженный в мое PoC-решение, и есть 32-битные и 64-битные версии libsodium.dll файлы в соответствующих каталогах (System32 и SysWOW64). Всякий раз, когда я иду, чтобы запустить программу в режиме отладки, я получаю ошибку BadImageFormatException. Достаточно ли этого, чтобы иметь libsodium.dll файлы в соответствующих системных каталогах, и я просто упускаю что-то еще, или мне нужно иметь копии этих dll-файлов в моем решении?
Вот моя процедура, и, по крайней мере, согласно intellisense, все здесь подключено правильно.
Option Explicit On Imports Sodium Imports System.Text Public Class Form1 Dim textToEncrypt, decrypted As String Shared encoder As New UTF8Encoding Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim key, hashedBytes, salt As Byte() textToEncrypt = TextBox1.Text Dim textBytes As Byte() = encoder.GetBytes(textToEncrypt) hashedBytes = CryptoHash.Sha512(textToEncrypt) salt = PasswordHash.ScryptGenerateSalt() key = SecretBox.GenerateKey() Dim passEnc As Byte() = PasswordHash.ScryptHashBinary(textBytes, salt, PasswordHash.Strength.Medium) TextBox2.Text = Convert.ToBase64String(passEnc) TextBox6S.Text = Convert.ToBase64String(salt) TextBox3PBK.Text = Convert.ToBase64String(key) TextBox5H.Text = Convert.ToBase64String(hashedBytes) End Sub End Class
Что я уже пробовал:
Я пробовал компилировать с использованием конфигураций сборки x86 и x64 с тех пор, как прочитал здесь: c# - BadImageFormatException во время .Чистая проблема загрузки сборки - переполнение стека[^] это, это может быть причиной этой ошибки, но я все равно получил ту же ошибку в обеих областях.
Я также попробовал ответить на этот вопрос, который нашел здесь: Как включить libsodium.net ВКЛ ASP.NET для включения libsodium-net в VS[^], где он сказал, чтобы установить Visual C++ Redistributable 2015, а также, но проблема есть, когда я попытался это сделать, я получил ошибку от установщика, заявив, что он уже установлен на моем компьютере. Когда я проверил, однако, все, что у меня было, это версии 2008, 2013 и 2017 годов, а не 2015 года, так что я все еще не понимаю, почему я не мог установить распространяемый файл 2015 года, но это в другой раз, я полагаю, если только это не единственное решение, которое будет работать, и в этом случае кто-нибудь знает, что может вызвать эту проблему?
Я проверил NuGet manager и оба libsodium и Sodium.Ядро находится в актуальном состоянии и работает на текущих стабильных моделях. Я упомянул каталоги System32 и SysWOW64 только потому, что это было то, что я пробовал, пытаясь найти решения, которые нашли другие люди, и размещение библиотек DLL в этих каталогах решило проблему для одного или нескольких человек, поэтому я попробовал это сделать, чтобы посмотреть, решит ли это и мою проблему, но этого не произошло.