llamando a la biblioteca de control de formularios de Windows usando MapPoint desde una aplicación MVVMLight WPF en una máquina x64

MapPoint se puede usar dentro de una aplicación WPF, si un objeto AxMapPoint se incorpora a una biblioteca de controles de Windows Forms.

Creación de una aplicación de prueba simple, con el siguiente cuerpo en MainWindows.xaml

<Grid x:Name="LayoutRoot">     
    <Grid Name="mapControl" Loaded="MapPointControl_Loaded"/>
</Grid>

funciona cuando se crea un proyecto WPF. La llamada a la función CodeBehind tiene este aspecto.

private void MapPointControl_Loaded(object sender, RoutedEventArgs e)
    {
        try
        {
                // Create the interop host control.
                System.Windows.Forms.Integration.WindowsFormsHost host =
                    new System.Windows.Forms.Integration.WindowsFormsHost();


                //  mpControl = new 
                MapPointControl userControl = new MapPointControl();
                host.Child = userControl;

                // Add the interop host control to the Grid
                // control's collection of child controls.
                this.mapControl.Children.Add(host);

        } catch { }

Esto funciona para un proyecto WPF,

Sin embargo, crear un proyecto MVVM no funciona.

Se produce un fallo en esta línea.

                MapPointControl userControl = new MapPointControl();

La siguiente caja de dialogo aparece

FileNotFoundException fue capturado

No se pudo cargar el archivo o ensamblado 'Interop.MapPoint, Version=1.0.0.0, Culture= neutral, PublicKeyToken=null' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

(Interop.MapPoint.dll existe en la carpeta bin/Debug)

en Visual Studio.

preguntado el 03 de mayo de 12 a las 17:05

1 Respuestas

Habilitar el visor de registros de Fusion y comparte el resultado. Debería decirte qué dependencia falta.

  1. Haga clic en Inicio-> Ingrese "fusión" y haga clic derecho en Visor de registro de Fusion para ejecutar como administrador.

  2. Haga clic en Configuración-> Registrar fallas de vinculación al disco.

  3. Active la excepción, luego haga clic en "Actualizar" en el visor de registros.

  4. Haga clic en "Ver registro" en la entrada que aparece en Fusion. Comparte los resultados.

contestado el 03 de mayo de 12 a las 18:05

*** Entrada de registro del cuaderno de ensamblaje (03/05/2012 a las 10:31:41) *** La operación falló. Resultado del enlace: hr = 0x8007000b. Se intentó cargar un programa con un formato incorrecto. Administrador de ensamblaje cargado desde: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll Ejecutándose bajo el ejecutable C:\verifeye\markV\viewer4\Viewer\bin\Debug\Viewer.vshost.exe --- A a continuación se muestra un registro de errores detallado. === Información de estado previa al enlace === REGISTRO: Usuario = verifeye-LTE\verifeye REGISTRO: DisplayName = Interop.MapPoint, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (totalmente especificado) - user1371532

REGISTRO: Usuario = verifeye-LTE\verifeye REGISTRO: DisplayName = Interop.MapPoint, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null (totalmente especificado) REGISTRO: Appbase = file:///C:/verifeye/markV /viewer4/Viewer/bin/Debug/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = Viewer.vshost.exe Llamando al ensamblado: WindowsFormsControlLibraryMapPoint, Version=1.0.0.0, Culture=neutral , PublicKeyToken=null. - user1371532

=== REGISTRO: Este enlace comienza en el contexto de carga predeterminado. REGISTRO: Uso del archivo de configuración de la aplicación: C:\verifeye\markV\viewer4\Viewer\bin\Debug\Viewer.vshost.exe.config REGISTRO: Uso del archivo de configuración del host: REGISTRO: Uso del archivo de configuración de la máquina de C:\Windows\Microsoft. NET\Framework64\v4.0.30319\config\máquina.config. REGISTRO: la política no se aplica a la referencia en este momento (enlace de ensamblaje privado, personalizado, parcial o basado en la ubicación). REGISTRO: Intentando descargar el nuevo archivo URL: ///C:/verifeye/markV/viewer4/Viewer/bin/Debug/Interop.MapPoint.DLL. - user1371532

REGISTRO: La descarga del ensamblado fue exitosa. Intentando configurar el archivo: C:\verifeye\markV\viewer4\Viewer\bin\Debug\Interop.MapPoint.dll REGISTRO: Entrando en la fase de configuración de ejecución desde el origen. REGISTRO: El nombre del ensamblado es: Interop.MapPoint, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null ERR: No se pudo completar la configuración del ensamblado (hr = 0x8007000b). Sondeo terminado. - user1371532

Probé el mismo ejecutable dentro del depurador en una máquina con Windows 32 de 7 bits, funcionó sin problemas. - user1371532

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.