I installed Libsodium-net through NuGet and am able to include Sodium in my classes, but when I try to run it, I get
An exception of type \'System.DllNotFoundExcepti
I had the same problem and solved it using Jørn Wildt's answer given here.
It turns out that ASP.NET doesn't make shadow copies of unmanaged DLLs such as libsodium.dll and libsodium-64.dll.
Sodium.dll (the managed code) tries to load the DLLs from either the same directory as the shadow copy of Sodium.dll (which is not going to work) - or some where in the PATH environment variable's directories.
My solution was to add the AppDomain \Bin directory to the path before calling any Sodium code:
string path = Environment.GetEnvironmentVariable("PATH"); string binDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Bin"); Environment.SetEnvironmentVariable("PATH", path + ";" + binDir);
As Reuben commented on the answer; I added the above code in my Application_Start
method of my Global.asax
.
I got this one as well. First part of the solution was to do as @NiklasEkman did, adding directory to PATH variable.
But, I got the exact same error when deployed to our QA environment. After spending hours messing with permissions, trying to figure out if the dlls are in the right directory, and similar I ran into this post: https://mspcontrol.org/forums/topic/add-user-error-unable-to-load-dll-libsodium-64-dll/#post-4765
You have to install Visual C++ Redistributable for Visual Studio 2015 (13 Mb) https://www.microsoft.com/en-us/download/details.aspx?id=48145
In the end that solved the issue for me.