J'ai une DLL managée (écrite en C++/CLI) qui contient une classe utilisée par un exécutable C#. Dans le constructeur de la classe, j'ai besoin d'accéder au chemin complet de l'exécutable faisant référence à 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 managée?Comment obtenir le chemin d'accès exécutable à partir d'une DLL gérée
4
A
Répondre
14
Assembly.GetCallingAssembly()
ou
Assembly.GetExecutingAssembly()
ou
Assembly.GetEntryAssembly()
En fonction de vos besoins. Puis utilisez la propriété Location ou la propriété CodeBase (je ne me souviens plus de laquelle).
5
@leppie: Merci - c'était le pointeur dont j'avais besoin.
Pour référence ultérieure, en C++/CLI c'est la syntaxe réelle qui fonctionne:
String^ appPathString = Assembly::GetEntryAssembly()->Location;
GetExecutingAssembly()
fourni le nom de la DLL
GetCallingAssembly()
retourné quelque chose comme System.Windows.Forms
GetEntryAssembly
a renvoyé le chemin d'accès complet, similaire à GetModulePath()
sous Win32.
+0
Merci de donner les détails pour chacun. Cela m'a sauvé un peu de googling! – Gabriel
Utilisez la propriété CodeBase après avoir appelé l'une de ces méthodes. – dgvid