I have an application, linked with other DLLs, according to MEF technology.
The "core" of that MEF looks as follows:
var cat = new AggregateCatalog();
cat.Catalogs.Add(new AssemblyCatalog(Assembly.GetAssembly(typeof(MyApp))));
cat.Catalogs.Add(new DirectoryCatalog(...));
ModuleCatalog = new CompositionContainer(cat);
MyAppModules = ModuleCatalog.GetExportedValues<IMyAppModule>();
I would like to downgrade one of the DLLs (from 84 to 83). I have done this in some of the DLLs which refer to the newest version.
However, the last line of code (with the GetExportedValues
) generates an exception, mentioning Could not load file or assembly 'Relevant_DLL, Version=1.0.84.1
.
This means that still at least one other DLL is referring to that 84 version. How can I know which one it is? (As you can see, I'm not able to launch the application, so debugging or using Process Explorer is out of the question)
You can use the Fusion logging to diagnose binding errors.
See this question for more info: How to enable assembly bind failure logging (Fusion) in .NET
I highly recommend this answer with using Fusion++
: https://stackoverflow.com/a/56067961/6594467