Zstandard.Net icon indicating copy to clipboard operation
Zstandard.Net copied to clipboard

Incorrect path to native assembly when running under ASP.NET

Open LordBenjamin opened this issue 6 years ago • 1 comments

Expected path to be D:\site\app\bin\x64\libzstd.dll

Actual path reported: D:\local\Temporary ASP.NET Files\service\413c8295\f1e75485\assembly\dl3\62e9e505\95643d38_7883d501\x64\libzstd.dll

Caused by ASP.NET shadow copying managed DLLs, but not unmanaged DLLs.

See https://stackoverflow.com/questions/6855924/third-party-dll-cant-find-its-dependencies-in-asp-net-mvc-project. Possibly needs to be solved at application level.

LordBenjamin avatar Oct 15 '19 17:10 LordBenjamin

Worked around using

string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.Process);

string nativePath = Path.Combine(
    AppDomain.CurrentDomain.RelativeSearchPath,
    Environment.Is64BitProcess ? "x64" : "x86");

Environment.SetEnvironmentVariable("Path", nativePath + ";" + path, EnvironmentVariableTarget.Process);

Note that this causes file locking issues if you try to update an ASP.NET site by overwriting the files - ideally need to shadow copy the native dependency.

LordBenjamin avatar Oct 15 '19 17:10 LordBenjamin