Saltar al contenido

Implementación de la aplicación WPF con archivos DLL de terceros

Siéntete en la libertad de divulgar nuestros tutoriales y códigos en tus redes, necesitamos tu ayuda para hacer crecer nuestra comunidad.

Solución:

Me he estado arrancando los pelos tratando de solucionar este mismo problema esta mañana y finalmente encontré la solución. Parece que ya sabe qué archivos DLL, etc., necesita para que CefSharp funcione, pero pensé que lo revisaría en caso de que alguien más tenga el mismo problema. Tengo una aplicación C# WPF y estoy usando CefSharp como vista web. Estoy usando CefSharp v1 porque necesito el puente JavaScript -> C# que proporcionan, que aún no está implementado en v3. Estos son los pasos aproximados que seguí para configurar el proyecto (estoy usando VS2013 pero esto probablemente funcionará en VS2012).

Instalación de CefSharp

  • Instale CefSharp.Wpf a través de NuGet (estoy usando v1.25.7)
  • Eso debería poner los archivos relevantes en $(SolutionDir)packagesCefSharp.Wpf.1.25.7cef

Configuración de compilación

  • Para obtener las DLL de CefSharp para copiarlas en nuestras carpetas de compilación, haga clic con el botón derecho en su proyecto, seleccione Propiedades -> Eventos de compilación e ingrese lo siguiente en la “línea de comando del evento posterior a la compilación”:

    xcopy “$(SolutionDir)packagesCefSharp.Wpf.1.25.7cef*” “$(TargetDir)” /s /y /i

  • Eso ahora debería copiar todas las DLL requeridas de la carpeta cef, así como la devtools_resources.pak archivo y el locales carpeta más su contenido. Los necesito en mi proyecto ya que necesito las herramientas de desarrollo de cromo.

  • Vuelva a verificar que las referencias de su proyecto contengan CefSharp y CefSharp.Wpf. NuGet debería haberse ocupado de eso.

Cuidando los archivos de tiempo de ejecución de Visual C++ 2012

  • No quería que el usuario tuviera que descargar todos los archivos de tiempo de ejecución de Visual C++ 2012 como parte de la implementación, así que a través de Visual Studio, agregue la carpeta LibMicrosoft.VC110.CRT y agregue las 3 DLL (msvcp110.dll, msvcr110.dll, vccorlib110.dll) desde la siguiente carpeta en su máquina a la carpeta que acaba de crear en su proyecto:

    C:Program Files (x86)Microsoft Visual Studio 11.0VCredistx86Microsoft.VC110.CRT

  • Seleccione los 3 archivos DLL en Visual Studio, haga clic derecho -> propiedades. Asegúrese de que Build Action esté configurado en “Ninguno” y que Copiar en el directorio de salida esté configurado en “No copiar”. Ahora debe agregar otro evento posterior a la compilación para asegurarse de que se copien correctamente (es decir, se copien en la raíz para que se asienten junto con los archivos dll de CEF y el exe de su proyecto) para la depuración.

  • Haga clic con el botón derecho en su proyecto, seleccione Propiedades -> Eventos de compilación e ingrese lo siguiente en la “línea de comando del evento posterior a la compilación” justo después de su otro comando xcopy para CEF:

    xcopy “$(ProjectDir)LibMicrosoft.VC110.CRT*.*” “$(TargetDir)” /s /y /i

En este punto, todo debería estar construyendo. Para publicar la aplicación con ClickOnce, necesito que se eliminen todas las DLL de CEF y que se aseguren de que estén presentes los archivos/carpetas necesarios para las herramientas de desarrollo de Chrome. Si no necesita las herramientas de desarrollo o todas las DLL, puede modificar esto en consecuencia.

Garantizar que los archivos de tiempo de ejecución CEF y C++ se implementen con ClickOnce

  • Haga clic derecho en su proyecto en Visual Studio y seleccione “descargar proyecto”.

  • Haga clic derecho y seleccione para editar el archivo csproj.

  • Antes del cierre etiqueta agrega esto

    
       
         %(RecursiveDir)%(Filename)%(Extension)
         false
      
    
    
    
       
          %(RecursiveDir)%(Filename)%(Extension)
          false
      
    
    
  • Eso agregará todo, desde la carpeta cef al proyecto y se asegurará de que los archivos binarios de C++ se copien a la raíz del proyecto en la implementación. En mi caso para CEF, estoy usando el *** sintaxis al final de Incluir y %(RecursiveDir) para asegurarse de que todos los archivos se copian, así como el locales carpeta con su contenido y estructura conservados. Habiendo establecido false no verá los elementos en el explorador de soluciones.

Relax

Ahora bien, si publica su aplicación, debería copie todos los archivos y carpetas requeridos.

Puntuaciones y comentarios

Si haces scroll puedes encontrar las interpretaciones de otros sys admins, tú también tienes la libertad de insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *