A co-worker of mine is having the following issue (so some relevant details may require further vetting):
The server is Windows 2008 Server. There is a Windows Service that is running (exe (.net), that also utilizes a .NET assembly). There is some bug with the dll and/or exe. Some debug messages were added to and removed from the dll. This new version of the dll and its recompiled exe were ftp'd over to this server, the service was stopped, the existing dll and exe were renamed, and replaced with the new, and the service started.
We still see debug messages that were removed from the dll. They don't exist in the new code.
The server was restarted.
Is the old dll getting cached somewhere? somehow? Thank you.
UPDATE
The following just happened:
- the recently renamed assembly.old was physically removed (this was the one and only copy)
- old debug messages still in there!
- service uninstalled/reinstalled (though we think we could have gotten away with a restart)
- works.
So, knowing what happened before this (which included a restart of the OS), and what happened now, somehow/someway Windows is tracking the dll's(?) and when the one copy was renamed, windows defies the update and associates (in it's mind) that assembly.old will be assembly.dll. Not the new assembly.dll that was put in its place?
Because assembly.dll and assembly.old in same directory, after OS restart - old dll continually looked at. assembly.dll and no assembly.old - works.
The thing that baffles me is how do you control this? Or where is the documentation on this?
Other info: 64-bit version of the server. A VM.