2016-12-22 2 views
0

J'ai un complément Outlook dans lequel j'ai besoin de charger une DLL personnalisée en utilisant DllImport. J'ai inclus la DLL dans les ressources du projet et lorsque le projet est «publié», il est copié dans le dossier Ressources.Comment puis-je trouver l'emplacement des DLL incluses en tant que ressources dans un complément Outlook à utiliser avec DllImport

Mon problème est qu'après qu'un utilisateur installe le complément, je ne sais pas où sont les DLL que j'ai inclus dans les ressources. Si je le savais, je pourrais ajouter cet emplacement au chemin de recherche actuel et tout fonctionnerait.

Environment.SetEnvironmentVariable("PATH", Environment.GetEnvironmentVariable("PATH") + ";" + dllDirectory); 

Est-ce que quelqu'un a une solution ou est-ce que je vais tout à fait faux?

Répondre

1
//use CodeBase instead of Location because of Shadow Copy. 
string codebase = Assembly.GetExecutingAssembly().CodeBase; 
var vUri = new UriBuilder(codebase); 
string vPath = Uri.UnescapeDataString(vUri.Path + vUri.Fragment); 
string directory = Path.GetDirectoryName(vPath); 
if (!string.IsNullOrEmpty(vUri.Host)) directory = @"\\" + vUri.Host + directory; 
DllLocation = Path.Combine(directory, "Resources\\MyDll.dll"); 
+0

Merci beaucoup! C'était l'extrait de code que je cherchais. –

+0

Si cela répond à votre question, veuillez le marquer comme tel. Merci! –