Construyo un ensamblado que hace referencia a una DLL de interoperabilidad COM. Si incorporo los tipos de interoperabilidad COM configurando Tipos de interoperación incrustados en True en las propiedades de la Referencia (VS2010), en el tiempo de ejecución se produce un error "el objeto no contiene una definición para get_Range". Si los tipos de interoperabilidad COM no están integrados, entonces no se produce ningún error.Excel get_Range falta cuando el ensamblado de interoperabilidad está incrustado en .NET 4.0
¿Alguien sabe por qué se debe omitir un método en particular, Worksheet.get_Range o cómo solucionar esto o tener alguna otra información relevante? Debo estar agradecido por cualquier ayuda.
La interoperabilidad dll contiene una referencia a Worksheet.get_Range (object, [object]). Utilizando el reflector en mi conjunto de llamadas no se menciona get_Range en la Hoja de trabajo.
El ensamblado de interoperabilidad que estoy incrustando se genera desde Excel9.olb. No estoy usando PIA ya que la aplicación se dirige a múltiples versiones de Excel.
MIke, gracias por su ayuda. El enfoque de parámetro único no obtiene un error en tiempo de ejecución y obviamente es una buena solución. He enviado un informe de error a Microsoft 530769. – mikemay
https://connect.microsoft.com/VisualStudio/feedback/details/530769/get-range-method-missing-with-embedded-interop-assembly?wa=wsignin1.0 – mikemay
Ah, claro, publiqué un enlace incorrecto en mi comentario anterior, gracias por corregir eso. La discusión allí es muy interesante, y tiene sentido. Pero, puedo preguntar, ¿no es la solución más fácil ahora simplemente usar la sintaxis 'worksheet.Range [" A1 "]' en lugar de la anterior 'worksheet.get_Range (" A1 ", Type.Missing)' ahora que eres usando C# 4.0? Ha encontrado una curiosidad muy interesante, pero en cuanto a arreglarla para su propio código, parecería más fácil y mejor simplemente usar la nueva sintaxis, que es más fácil de leer en cualquier caso (¡por diseño!). –