Folks, this problem is a stinker that I don't think anyone will be able to
help with, but sometimes just writing down the problem can help clear the
mind.

We're developing a set of C# library projects that target both
netstandard2.0 and net461. By simply changing some Stream classes they can
switch between files/folders or Azure containers/blobs (a neat classic
example of abstracted "file" processing). One of our guys wants to call the
libraries from inside Excel via VBA, so I created a thin COM call wrapper
Framework 4.6.1 project which works nicely and I can drive it all from a VB
script file.

Except ... here's the stinker ... if I switch to using the Azure streams
then I get runtime crash:

System.Threading.Tasks.Extensions: Could not load file or assembly
'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system
cannot find the file specified.


I've tried config redirects, Nuget packages, different Framework targets,
and I've watched it probing for the assembly via procmon, but absolutely
nothing makes any difference. The Unsafe library being used is actually
4.0.5.0 but I can't redirect to it.

There are so many tangled links in the chain that it's hard to tell which
one is breaking. The most suspicious thing is the tiny Azure stream library
targeting 4.6.1, it uses the Azure.Storage.Blobs package which depends on
netstandard2.0 and therefore drags in a whopping 108 of the "shim"
libraries, including the Unsafe one. This DLL hell between Full and Core
Frameworks is hell.

*Greg K*

Reply via email to