-1

I have a .NET 4.0 app created with VS2012 that runs fine on my development system. It has several unmanaged DLL's both from 3rd party and also written by me. All these DLL's are in the same folder with the .NET app.exe. A remote customer however is getting exception 0xE0434352 at startup. The app exits with no message but exception is seen in Event Viewer. Looking at another post I see this is generic .NET exception. The other more meaningful exception in Event Viewer is

Application: ModBusCdi75Api.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at ModBusCdi75Api.MainForm..ctor()
   at ModBusCdi75Api.Program.Main()

So it seems there is an assembly that isn't being found, but the exception doesn't say which one. From the other post I see that Fusion Log is a way to get more information on which assembly isn't being found. The problem is this is only happening at my remote customer's site. Do I need to have my customer run fusion log? Is that possible when the client doesn't have Visual Studio?

Community
  • 1
  • 1
JonN
  • 2,498
  • 5
  • 33
  • 49
  • This doesn't look like an assembly load error, more like a simple file not found. – Jester Jan 26 '16 at 22:00
  • Well then I need to figure out how to get name of file not found. However looking at the constructor (MainForm..ctor) I don't see any file open operations. There are other methods called but if it was happening in a called function that should have showed up in the Stack trace. As I read the stack trace it says the FileIO error occurs in the constructor itself. Also if it's not an assembly load issue with a DLL but a simple File Not Found error why didn't customer see an exception window displayed? – JonN Jan 26 '16 at 22:28
  • Maybe a file not found propagated back from one of your _several unmanaged DLLs_? – Jester Jan 26 '16 at 22:33

1 Answers1

0

You don't need to have Visual Studio or the SDK installed, you can enable Fusion logging directly in the registry. Save the following to a .reg file and have the customer run it on the remote machine:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion] 
"ForceLog"=dword:00000001 
"LogFailures"=dword:00000001 
"LogResourceBinds"=dword:00000001 
"LogPath"="C:\\Temp\\FusionLog\\"

Make sure the log path actually exists, and restart the application to generate the assembly binding logs.

Note that if the problem isn't due to a managed DLL, the log won't show anything useful. You may need to resort to either remote debugging, or manually tracing all the unmanaged dependencies that your application loads and checking that they exist on the remote machine (or including them with your distribution.)

David Ostrovsky
  • 2,461
  • 12
  • 13