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*
