Comment obtenir le chemin d'accès exécutable à partir d'une DLL gérée
-
02-07-2019 - |
Question
J'ai une DLL gérée (écrite en C ++ / CLI) contenant une classe utilisée par un exécutable C #. Dans le constructeur de la classe, je dois accéder au chemin complet de l'exécutable référençant la DLL. Dans l'application réelle, je sais que je peux utiliser l'objet Application pour le faire, mais comment puis-je le faire à partir d'une DLL gérée?
La solution
Assembly.GetCallingAssembly()
ou
Assembly.GetExecutingAssembly()
ou
Assembly.GetEntryAssembly()
En fonction de vos besoins.
Utilisez ensuite la propriété Location ou CodeBase (je ne me souviens jamais de laquelle).
Autres conseils
@leppie: Merci - c'était le pointeur dont j'avais besoin.
Pour référence future, en C ++ / CLI, c'est la syntaxe réelle qui fonctionne:
String^ appPathString = Assembly::GetEntryAssembly()->Location;
GetExecutingAssembly ()
a fourni le nom de la DLL
GetCallingAssembly ()
a renvoyé quelque chose comme System.Windows.Forms
GetEntryAssembly
a renvoyé le chemin complet, similaire à GetModulePath ()
sous Win32.