2011-01-10 14 views
6

Estoy utilizando algunas DLL de Win32 en un complemento de Outlook 2007.Outlook 2007 Addin C# - Ruta de inicio

Así que agregué los dlls, con la acción de compilación "Contenido" y copié al directorio local.

para obtener la ruta a ellos, yo usaría normalmente:

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

Cuando publicado por ClickOnce, Assembly.GetExecutingAssembly no darme la ruta estándar para todos mis archivos de ClickOnce. Mis archivos están en % appdata% .. \ Local \ Apps \ 2.0, pero el ensamblado está en % appdata% .. \ Local \ assembly.

¿Existe alguna forma mejor de obtener la ruta a estos dlls desde un complemento de Outlook implementado por ClickOnce?

+0

también trató Application.StartupPath, pero eso me da el camino a exe de Outlook. – jonathanpeppers

Respuesta

2

Este código me está dando el camino correcto ahora:

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

he tenido que usar SetupInformation al analizar los argumentos de línea de comandos, y algunos de depuración me llevó a esta propiedad.

Volveré a publicar si me da algún problema, ya que tendremos que instalar en varias máquinas y ver qué pasa.

+0

¿Estás utilizando un proyecto de configuración para implementar esto? Puede especificar una carpeta en el sistema de archivos y especificar las rutas directamente. – bdwakefield

+0

Es ClickOnce, dice en mi pregunta. – jonathanpeppers

0

¿Ha intentado agregarlos como referencia? Creo que el complemento debería saber la ubicación si los pones de esa manera. Simplemente observe cómo maneja Office Interops (y otras referencias) cuando las agrega; no es necesario especificarlas, simplemente haga referencia a ellas en su código.

+0

Esas son las referencias .Net. No puedes hacer esto con Win32 dlls. – jonathanpeppers

+0

Todavía novato en la programación de C#. Lo primero que me vino a la cabeza. –

1

Creo que esto es exactamente lo que está buscando: cómo encontrar los DLL que ha implementado con su aplicación VSTO.

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

+0

Esto hace lo mismo que mi respuesta aceptada, pero se basa en Assembly.GetExecutingAssembly(), por lo que creo que prefiero la respuesta aceptada. – jonathanpeppers

+0

Lo que sea que funcione para ti, amigo. Solo para su información, obtuve esa respuesta del líder del equipo de producto de ClickOnce. – RobinDotNet

Cuestiones relacionadas