El pasado viernes, buscando otra información, me llamó la atención una entrada en los blogs de MSDN. Karin Meier, miembro del equipo responsable del SDK de Windows, informaba de que el IntelliSense para XAML deja de funcionar en Visual Studio 2008 después de instalar el SDK de Windows Server 2008 y .NET Framework 3.5. Esto afectaría, por tanto, al desarrollo de proyectos basados en Windows Presentation Foundation.
Parece que el problema se ha descubierto gracias a las quejas de varios usuarios en los foros de MSDN, y que ya se está trabajando para corregirlo en próximas ediciones del SDK. Mientras tanto, se presentan dos posibles apaños soluciones provisionales:
- Reparar la instalación de Visual Studio 2008. Este proceso puede tardar bastante tiempo en completarse.
- Corregir la entrada del registro de Windows que la instalación del SDK se lleva por delante. El procedimiento se describe en el hilo Solution: Intellisense broken in all WPF Projects after installing SDK/MSDN de los foros de MSDN.
La entrada del registro afectada es el valor predeterminado de la clave HKEY_CLASSES_ROOT\CLSID\{73B7DC00-F498-4ABD-AB79-D07AFD52F395}\InProcServer32. En condiciones normales y asumiendo un sistema Windows de 32 bits en español anterior a Vista instalado sobre la unidad C:, este valor señalaría al fichero C:\Archivos de programa\Archivos comunes\Microsoft Shared\MsEnv\TextMgrP.dll. En Windows Vista de 32 bits o un sistema Windows anterior en inglés, la ruta sería C:\Program Files\Common Files\Microsoft Shared\MsEnv\TextMgrP.dll.
Podemos reparar la entrada al menos de tres maneras: con el editor del registro Regedit, con la herramienta de línea de comandos Reg (para más información, consultad la sintaxis en la ayuda de Windows o tecleando REG /? en una ventana de símbolo del sistema), o con el siempre socorrido Regsvr32 aplicado a TextMgrP.dll.
Nota: en sistemas Windows de 64 bits conviene emplear las versiones de 32 bits de las herramientas mencionadas desde \Windows\Syswow64 (por ejemplo, el Regsvr32 de 64 bits, en \Windows\System32, no funcionará con TextMgrP.dll, que es un componente de 32 bits). Aparte, el archivo TextMgrP.dll estará alojado físicamente en C:\Archivos de programa (x86)\Archivos comunes\Microsoft Shared\MsEnv (nuevamente, asumiendo instalación de Windows en español anterior a Vista en la unidad C:), o en C:\Program Files (x86)\Common Files\Microsoft Shared\MsEnv si hablamos de Windows Vista o de una versión anterior de Windows en inglés. La redirección del registro y el sistema de archivos que actúa sobre los programas de 32 bits hará el resto.
OK!, vuelve a funcionar. Si usas el regsvr32 en vista, tienes que arrancar la shell como administrador.