1

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?

rory.ap
  • 34,009
  • 10
  • 83
  • 174
  • 1
    "I've seen sources such as this that say it has to do with installing the assembly" - have you rebooted since installing the referenced assembly? The linked source suggests "I believe this only happens with freshly added images and will go away after a reboot" – Joe Jan 10 '14 at 13:05
  • It could have something to do with the user account that it is running under (i.e works for me scenario). If the registry is used here, it may install / load it for your account however permanent changes may not take effect until a reboot as Joe has indicated. I personally have witnessed tcp registry changes behaving similarly also. – Andrew Jansen Jan 10 '14 at 13:36
  • You are probably seeing the handy-work of a custom CLR host. The tmp directory is [normally used](http://blogs.msdn.com/b/junfeng/archive/2006/11/17/gac-temp-and-tmp.aspx) while installing an assembly into the GAC. Best way to find out what is really going on is to ask the owner of the product of course. – Hans Passant Jan 10 '14 at 16:16

0 Answers0