I'm trying to see which version of an assembly is being referenced at runtime by my application. I know the assembly is installed in the GAC because it's a third-party commercial product that was installed via an MSI, it's listed when I run gacutil /l
, and I can also see it in a folder beneath C:\Windows\Microsoft.NET\assembly\GAC_MSIL
.
I'm using Process Explorer with the referenced DLLs showing in the lower pane to see which assembly is referenced, and I'm finding that the referenced assembly is located in C:\Windows\assembly\tmp\NYIEPEO0\
. When I attempt to browse that folder in Windows Explorer (while the application is still running and the referenced assembly is still showing there in Process Explorer), it says it does not exist or is not accessible. Furthermore, Process Explorer does not show any details -- Version, Description, etc. -- so I am unable to determine which version of the assembly it is.
My questions are these: why is the referenced assembly located beneath the "tmp" folder and not where it actually resides (I've seen sources such as this that say it has to do with installing the assembly, but the assembly has already been installed in its correct location, as I pointed out above) and can I disable that behavior in the GAC so that all assemblies are referenced from their proper locations at runtime?