Cuando se realiza cualquier tipo de trabajo en Visual Basic usando una tecnología basada en COM, como Excel y Word, normalmente se utilizan los “Primary Interop Assemblies (PIA)”. Un PIA es un archivo de .NET que sirve de Runtime Callable Wrapper (RCW) en un componente COM y tiene un GUID único para identificarlo. El ensamblador de .NET se comunica con un PIA, la cual realiza las maniobras necesarias para mover datos entre COM y .NET.

El problema es que son enormes y tienen que serlo, como por ejemplo existe  una gran cantidad de código en Excel, ya que el PIA tiene que ser capaz de proporcionar una interfaz para todo. En  problema actual es que no es sólo necesaria para cuando se codifica, sino también tiene que estar en la computadora del cliente en tiempo de ejecución. Esto hace que el sistema sea lento y pesado. Por desgracia, PIA puede dificultar el desarrollo porque son archivos DLL adicionales que deben estar presentes en las máquinas de los usuarios finales. También causan problemas de control de versiones, por ejemplo, si desea una aplicación para poder trabajar en Excel 2003 y Excel 2007, había la necesidad de desarrollar en ambas.

En Visual Basic 10 el nuevo compilador incluye sólo lo que realmente utiliza en su assembly y no es necesario los PIA - DLL en el cliente en tiempo de ejecución. Esto hace al sistema del cliente mucho más pequeño y mucho más rápido. Pero a su vez,  será una característica controlable, ya que para un  proyecto se podrá trabajar de la manera antigua, si así se desea. 

Para activar esta función en un proyecto existente  (ya que está activada de forma predeterminada para las nuevas referencias),  seleccione la referencia en “Solution Explorer” y cambiar la opción en “Embed Interop Typesen” en la ventana de propiedades.