Visual Studio 2005/2008

Muy buenas a todos, como ya sabéis el esperado VS2008, ya está aquí, concretamente a finales de noviembre e incluso antes para algunos, jejeje…

Bueno, pues ahora que está de camino, yo no puedo quedarme atrás, así que he comenzado con mis primeros pasos prácticos. Mi otro amigo el CSF también está ahí, claro que tampoco puedo dejarlo atrás, seguiré con él por supuesto, pero en Posts posteriores, ahora toca un poco de VS2008, es bueno cambiar para no cansarse de lo mismo, y claro, no quedarse anticuado, :-D.

En fin, en este caso quiero hacer una pequeña pero interesante anotación.

¿Como resetear los Settings del VS para que al iniciar VS aparezca el cuadro de diálogo “Seleccionar configuración de entorno predeterminada”? pues como en versiones anteriores y al igual que cuentan muchos posts:

DevEnv /ResetSettings

Sin embargo, es curioso, me dirijo a hacerlo pero, noooooo, no funciona, ¿Que pasará?, pues nada miro la ayuda: “DevEnv /?” y nada, no hay nada que me interese. ¡Ummmmhhh!, con la ayuda de Bruno todo solucionado, :-D, en alguna página de Microsoft también se indica (http://msdn2.microsoft.com/es-es/library/ms243146(VS.80).aspx), pero lo mejor es que no aparece en la ayuda. 🙁

DevEnv /ResetUserData

Si aún así no funciona, porque no siempre lo hace (en vs 2008 me ha funcionado siempre pero no ocurre lo mismo en VS2005), entonces:

  1. Inicia Visual Studio
  2. Menu:  “Tools – Import And Export Settings…”
  3. En  el siguiente cuadro de diálogo selecciona “Reset all settings”
  4. A continuación guarda tu “setting” actual si quieres.
  5. Y por último selecciona de la lista el nuevo “setting” que quieres cargar, este se cargará automáticamente.

Poca cosa, pero para no olvidar, 😛
Saludos
Juanlu

Un Addin para Outlook 2003/2007

“A partir de ahora crear un Addin y hacer que funcione a la primera, dejará de ser un problema”.

Hace un par de semanas “me tocó” llevar a cabo la creación de un addinl, y bueno, aunque ya lo había desarrollado otren otras ocasiones, una vez más me volví a encontrar con algún que otro problemilla (claro está que con la ayuda de Eduardo conseguí resolverlo en un menor tiempo). Así que para que no vuelva a ocurrirme esto ni a mí ni ninguno de vosotros, dejo constancia aquí de los pasos que seguí:

Creando el Addin

  • Desarrollar el Add-in a partir de los siguientes métodos de carga y descarga del. Aquí tenéis algunos ejemplos de como implementar un add-in. Por el momento y para probar que el Deploy esta “chupado” conseguido prueba a mostrar un mensaje en cada evento/método.
private void ThisAddIn_Startup(object sender, System.EventArgs e) { MessageBox.Show("Start"); } private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { MessageBox.Show("Shutdown"); }

“Deployando” el Addin

Asegurar que las entradas del registro generadas al crear el proyecto son correctas y se corresponden con el siguiente fragmento a excepción del clsId y del nombre del addin, que en este ejemplo es; “OutlookAddin1”:

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USERSoftwareClassesCLSID{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}] @="OutlookAddin1 -- an addin created with VSTO technology" [HKEY_CURRENT_USERSoftwareClassesCLSID{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}InprocServer32] "ThreadingModel"="Both" "ManifestLocation"="C:\Archivos de Programa\Microsoft\OutlookAddin1\" @=hex(2):25,00,43,00,6f,00,6d,00,6d,00,6f,00,6e,00,50,00,72,00,6f,00,67,00,72, 00,61,00,6d,00,46,00,69,00,6c,00,65,00,73,00,25,00,5c,00,4d,00,69,00,63,00, 72,00,6f,00,73,00,6f,00,66,00,74,00,20,00,53,00,68,00,61,00,72,00,65,00,64, 00,5c,00,56,00,53,00,54,00,4f,00,5c,00,38,00,2e,00,30,00,5c,00,41,00,64,00, 64,00,69,00,6e,00,4c,00,6f,00,61,00,64,00,65,00,72,00,2e,00,64,00,6c,00,6c, 00,00,00 "ManifestName"="OutlookAddin1.dll.manifest" [HKEY_CURRENT_USERSoftwareClassesCLSID{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}ProgID] @="OutlookAddin1" [HKEY_CURRENT_USERSoftwareClassesCLSID{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}Programmable] [HKEY_CURRENT_USERSoftwareClassesCLSID{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}VersionIndependentProgID] @="OutlookAddin1" [HKEY_CURRENT_USERSoftwareClassesOutlookAddin1] @="" [HKEY_CURRENT_USERSoftwareClassesOutlookAddin1CLSID] @="{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}" [HKEY_CURRENT_USERSoftwareMicrosoftOfficeOutlookAddinsOutlookAddin1] "CommandLineSafe"=dword:00000001 "Description"="OutlookAddin1 -- an addin created with VSTO technology" "FriendlyName"="OutlookAddin1" "LoadBehavior"=dword:00000003 "Manifest"="C:\Archivos de Programa\Microsoft\OutlookAddin1\OutlookAddin1.dll.manifest"

Aquí os dejo una buena y clara referencia sobre este tema anterior: Deploying Application-Level Add-ins.

Nota: Comprueba que el ClsId al que se hace referencia en el proyeco de instalación se corresponde con el del proyecto que contiene el Addin. Para ello edita el “.csproj” en formato texto y comprueba que el atributo “ProjectGuid” tiene el mismo valor:

<ProjectGuid>{19AAED53-31A2-4DA2-B9AE-26491E3D3FD8}</ProjectGuid>

Y lo más importante, como conseguir “Full-Trust” para que la instalación se realice correctamente y el addin se cargue sin problemas (Custom Actions):

  1. Crear el proyecto “OutlookAddIn1.SetSecurity”
  2. Crear y anadir las clases “CaspolSecurityPolicyCreator” y “SetSecurity“. El contenido de estas clases puede obtenerse desde aquí.
  3. Install – CustomActionData: /assemblyName=”OutlookAddIn1.dll” /targetDir=”[TARGETDIR]” /solutionCodeGroupName=”Pruebas.OutlookAddIn1″ /solutionCodeGroupDescription=”Code group for OutlookAddIn1″ /assemblyCodeGroupName=”OutlookAddIn1″ /assemblyCodeGroupDescription=”Code group for OutlookAddIn1″ /allUsers=[ALLUSERS]
  4. “Rollback – CustomActionData” y “Uninstall – CustomActionData”: /solutionCodeGroupName=”Pruebas.OutlookAddIn1″
  5. Dejar en blanco la acción “Commit – CustomActionData”.

Prerrequisitos:

Nota: El desarrollo no sólo permitirá la ejecución en Outlook 2003 sino que además en Office 2007, ahora, eso sí, a falta de los maravillos “Ribbons”, para lo que será necesario ampliar con el desarrollo adecuado.

Más información.

En fin, espero haber servido de ayuda una vez más, ¡seguro que si! 😛
Hasta la próxima
Juanlu