Sé que este mensaje fue un tiempo atrás, pero pensé que había que tirar en mis dos centavos de todas formas, en caso de que alguien se tropieza con ella.
Una regla general es utilizar la versión del PIA en el desarrollo que enlaza con la versión más antigua de oficina va a apoyar. Por lo tanto, si va a admitir Office 2007 en adelante, use la versión 12 de los PIA durante el desarrollo.
Agregue una referencia a los PIA v12 (ya sea descargando los PIA 2007 en línea, a través de VSTO, o desde el GAC si anteriormente ya tenía Office 2007). Ahora podría pensar "Ok, estoy haciendo referencia a v12 en Visual Studio, esto ahora debería funcionar en Office 2007". Incorrecto. Puesto que usted está haciendo referencia v12, pero usted tiene Office 2010 instalado, durante el montaje de unión a su máquina va a decir: "Bueno, se solicita V12, V14 pero hemos instalado en la GAC y desde los PIA son compatibles con las versiones, usaremos eso". Aunque explícitamente le diga que use v12, después de completar una compilación su máquina usará v14. Puede confirmarlo a través del FUSLOG. FUSLOG es una herramienta excelente para usar cuando se trabaja con uniones de ensamblaje. Nota: Si usted no está viendo nada en FUSLOG y que cree que debería, claro todo en el historial de Internet Explorer y vuelva a intentarlo.
Para solucionar este problema, debe detener lo que se llama 'assembly binding redirection'. Estas PIA usualmente tienen un archivo de política con ellos en el GAC. El objetivo del archivo de política es redirigir las versiones anteriores de PIA a las versiones más nuevas al resolver el ensamblaje. Para ver esto, haga lo siguiente:
- Prensa 'tecla de Windows + R' para abrir el menú de ejecución.
- Tipo 'C: \ Windows \ Assembly \ GAC' y pulse Enter. Nota: Estoy funcionando una máquina de 32 bits. Es muy probable que sus PIA se instalen en una ubicación diferente en el GAC, como 'C: \ Windows \ Assembly \ GAC_MSIL'.
Una vez en el GAC, desplácese hacia abajo y busque las carpetas de los PIA a los que hace referencia (por ejemplo, Microsoft.Office.Interop.Excel). Si continúa desplazándose, debería ver las carpetas que comienzan con 'Política', luego un número y luego el nombre de la PIA (por ejemplo, Policy.12.0.Microsoft.Office.Interop.Excel). Este es el archivo de política que realiza la redirección de enlace. Abrir el archivo de configuración XML dentro de esa carpeta y verá algo similar a lo siguiente:
<?xml version="1.0" encoding="UTF-16"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity publicKeyToken="71e9bce111e9429c" name="Microsoft.Office.Interop.Excel" culture="neutral"></assemblyIdentity>
<bindingRedirect oldVersion="12.0.0.0" newVersion="14.0.0.0"></bindingRedirect>
</dependentAssembly>
</assemblyBinding>
</runtime>
En el código anterior, la etiqueta "bindingRedirect OldVersion ..." es responsable de la Redirección de ensamblaje PIA.Si usted comenta que código como el siguiente:
<?xml version="1.0" encoding="UTF-16"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity publicKeyToken="71e9bce111e9429c" name="Microsoft.Office.Interop.Excel" culture="neutral"></assemblyIdentity>
<!--<bindingRedirect oldVersion="11.0.0.0" newVersion="12.0.0.0"></bindingRedirect>-->
</dependentAssembly>
</assemblyBinding>
</runtime>
A continuación, se ignorará esta redirección. Lo comento en lugar de eliminar simplemente porque el archivo sirve para un buen propósito, pero no cuando se desarrolla para versiones anteriores de Office. Realice esto en cada archivo de Política PIA que necesite, y su máquina de desarrollo detendrá la redirección.
¡Espero que esto responda a su pregunta!
¿Problema? *¿Qué problema? –
¿Qué sucede si hace clic en cada ensamblaje de oficina y activa "Tipos de interoperabilidad incrustados"? Creo que esto elimina la necesidad de preocuparse por dónde están los archivos PIA o qué versión está siendo utilizada. –