2008-09-23 14 views
4

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

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).

+0

Utilisez la propriété CodeBase après avoir appelé l'une de ces méthodes. – dgvid

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