2011-01-10 3 views
6

J'utilise certaines DLL Win32 dans un complément Outlook 2007.Outlook 2007 Addin C# - Chemin de démarrage

J'ai donc ajouté les dll, avec l'action de construction "Content" et copier dans le répertoire local.

Pour obtenir le chemin vers eux, j'utiliserions normalement:

Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "MyDll.dll"); 

lorsqu'ils sont publiés par ClickOnce, Assembly.GetExecutingAssembly ne me donne pas le chemin d'accès standard à tous mes fichiers ClickOnce. Mes fichiers sont dans % appdata% .. \ Local \ Apps \ 2.0, mais l'assembly est dans % appdata% .. \ Local \ assembly.

Existe-t-il un meilleur moyen d'obtenir le chemin d'accès à ces DLL à partir d'un complément Outlook déployé par ClickOnce?

+0

également essayé Application.StartupPath, mais cela me donne le chemin à l'exe d'Outlook. – jonathanpeppers

Répondre

2

Ce code me donne le bon chemin maintenant:

string path = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "MyDll.dll"); 

J'ai dû utiliser SetupInformation lors de l'analyse des arguments de ligne de commande, et du débogage m'a conduit à cette propriété.

Je posterai si cela me pose problème, car nous devrons installer sur plusieurs machines et voir ce qui se passe.

+0

Utilisez-vous un projet de configuration pour le déployer? Vous pouvez spécifier un dossier dans le système de fichiers et spécifier les chemins directement. – bdwakefield

+0

C'est ClickOnce, il est dit dans ma question. – jonathanpeppers

0

Avez-vous essayé de les ajouter en référence? Je crois que le complément devrait connaître l'emplacement si vous les mettez de cette façon. Il suffit de regarder comment il gère les Interops Office (et autres références) lorsque vous les ajoutez - pas besoin de spécifier, il suffit de les référencer dans votre code.

+0

Ce sont des références .Net. Vous ne pouvez pas faire cela avec les DLL Win32. – jonathanpeppers

+0

Encore un débutant sur la programmation C#. première chose qui est apparue dans ma tête. –

1

Je pense que c'est exactement ce que vous cherchez - comment trouver la DLL que vous avez déployée avec votre application VSTO.

http://robindotnet.wordpress.com/2010/07/11/how-do-i-programmatically-find-the-deployed-files-for-a-vsto-add-in/

+0

Cela fait la même chose que ma réponse acceptée, mais repose sur Assembly.GetExecutingAssembly(), donc je pense que je préfère la réponse acceptée. – jonathanpeppers

+0

Tout ce qui fonctionne pour vous, mec. Juste pour votre information, j'ai obtenu cette réponse de la part de l'équipe de produit ClickOnce. – RobinDotNet

Questions connexes