Jag har ett program som refererar ett antal assemblys och vissa av dessa refererar till en native dll. Rent spontant så tror jag inte att det går. Det är utanför .net, och då är det inte .net som styr. Jag tror nästan att du får kolla med System.IO.*-sakerna som filerna som kan tänkas strula finns eller inte. Eller se till att fånga FileNotFound på läskiga ställen. Eller att i t.ex. uppstarten se till att anrop mot alla "misstänkta" funktioner görs och en koll att det fungerar. Det problem du stöter på är egentligen inget nytt, det har funnits sen länge och kallas bla.dependencies till assemblys
På vissa maskiner så saknas denna native dll (eller är fel version)
<b>Hur fångar jag detta schenario (närmast för att visa någorlunda vettigt felmeddelande)?</b>
- Programmet terminerar med FileNotFoundException (filename=null)
- Jag kan inte steppa med debuggern till stället
- fuslogw ger ingen vettig info
- Domain.AssemblyResolve kallas inte
- Application.ThreadException kallas inte
- Domain.UnhandledException kallas inte
..vad har jag inte testat?
Har börjat misstänka att det är JITtern som kippar, men även om det är så, så hjälper det mej?
Ideer mottages med tacksamhet..!
PS. (.NET 2.0)Sv: dependencies till assemblys
Sv: dependencies till assemblys
Dll hell, men det gör ju inte dig så mycket lyckligare.
Den absolut enklaste lösningen är du laddar alla native beroenden för hand med
LoadLibrary( ... ) (win32). På så sätt upptäcker du själv vilka dller som saknas innan
msfusion försöker ladda dem åt dig.
Om du vill lösa det lite mer dynamiskt så kan du använda Marshal.GetDelegateForFunctionPointer( ... )
http://blogs.msdn.com/junfeng/archive/2004/07/14/181932.aspx