working stopped net has example eliminar browsersubprocess c# winforms cefsharp

c# - stopped - No se pudo cargar el archivo o el ensamblaje ''CefSharp.dll'' o una de sus dependencias



cefsharp.browsersubprocess eliminar (8)

Configurar "msvcp120.dll" y "msvcr120.dll" en "Copiar siempre" me ayudó.

Estoy intentando usar CefSharp para cargar mi aplicación web en winfoms. He agregado 2 archivos dll: CefSharp.dll y CefSharp.WinForms en referencias y agregue 2 archivos dll icudt.dll y libcef.dll en mi proyecto a través de agregar elementos existentes.

Y este es el código del formulario.

public WebView web_view; public Form1() { InitializeComponent(); web_view = new WebView("http://localhost:8084/wsmill",new CefSharp.BrowserSettings()); web_view.Dock = DockStyle.Fill; toolStripContainer1.ContentPanel.Controls.Add(web_view); CefSharp.CEF.Initialize(new Settings()); }

Cuando ejecuto la aplicación, recibí este error

Se produjo una excepción no controlada del tipo ''System.IO.FileLoadException'' en WindowsFormsApplication1.exe Información adicional: No se pudo cargar el archivo o el ensamblaje ''CefSharp.dll'' o una de sus dependencias. Falló una rutina de inicialización de la biblioteca de enlace dinámico (DLL). (Excepción de HRESULT: 0x8007045A)

Así que cualquiera que sepa de esto por favor ayúdame, gracias


Debe configurar las propiedades de ''copiar a salida'' de los archivos para ''copiar siempre'' o ''copiar si es más nuevo''. Esto copia todos los archivos al directorio de salida, como lo indica Coder.


En mi caso, estaba siguiendo los pasos descritos en CefSharp - Our Code World .

En lugar de seguir el paso A y agregar CefSharpAnyCpuSupport en csproj y probing en App.config , simplemente configurando el Platform Target la Platform Target en x86 en el paso B hizo el truco.


Este es un error común que se debe a que no todos los archivos están presentes en el directorio de salida (bin / Debug o bin / Release, dependiendo de la configuración que esté ejecutando en Visual Studio). CefSharp.dll es una DLL basada en .NET que depende de otros archivos .dll, que a su vez depende más de otros .dll y otros archivos ...

Aquí hay una lista de los archivos mínimos requeridos:

  • libcef.dll (la base de Chromium DLL, que básicamente contiene el navegador web + la interfaz de integración de CEF de la que dependemos)
  • icudt.dll (Unicode DLL para Chromium, también debe estar presente)
  • CefSharp.dll (ensamblado administrado de .NET que contiene la funcionalidad central de CefSharp)
  • CefSharp.WinForms.dll O CefSharp.WPF.dll (dependiendo de su tipo de proyecto)

FAQ


Este es un problema común y, por lo tanto, se menciona en la FAQ número 3.

@AcccessDenied tiene razón. Los archivos deben estar presentes en su carpeta de salida (bin / Debug o bin / Release). Una forma de lograrlo es mediante una acción Post-Build , que se puede establecer en la configuración del proyecto en Visual Studio.

También puede configurar la compilación posterior en el archivo .csproj , algo como esto:

<Target Name="AfterBuild"> <ItemGroup> <CefBinaries Include="$(SolutionDir)CEF/$(UnmanagedPlatform)/*.*" /> <LocaleFiles Include="$(SolutionDir)CEF/locales/*.*" /> <SubProcessFiles Include="$(SolutionDir)$(UnmanagedPlatform)/$(Configuration)/CefSharp.BrowserSubprocess.exe" /> </ItemGroup> <Copy SourceFiles="@(CefBinaries)" DestinationFolder="$(TargetDir)" /> <Copy SourceFiles="@(LocaleFiles)" DestinationFolder="$(TargetDir)locales" /> <Copy SourceFiles="@(SubProcessFiles)" DestinationFolder="$(TargetDir)" /> </Target>

(Este ejemplo se tomó del proyecto CefSharp.Wpf.Example en el código fuente de CefSharp, rama CefSharp3. Las ubicaciones exactas de los archivos pueden variar en su caso, especialmente si usa CefSharp1, así que adáptelos según sea necesario para garantizar que los archivos se copien correctamente. )

No recomiendo poner cosas en bin / Debug o bin / Release y agregarlas a la solución usando Copy Always . Se siente como un kludge para mí.


La forma recomendada parece ser usar el paquete NuGet. Incluso entonces necesita hacer algunos cambios no intuitivos pero están documentados. Al instalar el paquete recientemente, se abre un archivo readme.txt con los problemas más comunes.

En mi caso faltaba (x64 también disponible)

<probing privatePath="x86" />

Mi App.config tiene este aspecto (con CommonServiceLocator en él, ignora esa parte si no la tienes)

<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /> </startup> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="x86" /> <dependentAssembly> <assemblyIdentity name="CommonServiceLocator" publicKeyToken="489b6accfaf20ef0" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.3.0" newVersion="2.0.3.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>

El error se produce porque realmente no hay Cefsharp DLL en la carpeta bin cuando configura el proyecto en AnyCPU. Pero en la carpeta x86 y x64 de abajo, donde está sondeando al agregar esta línea, existe la DLL. Una solución temporal sería copiar el contenido de / bin / x86 a / bin.

Si se desea AnyCpu, CefSharpAnyCpuSupport debe agregarse al archivo csproj. La bandera del proyecto para Preferir 32 bits debe ser establecida.


Necesitas poner estos archivos.

libcef.dll icudtl.dat CefSharp.dll CefSharp.WinForms.dll

en su bin / Debug (o bin / Release base en su configuración)

Y, por favor, no olvide instalar Visual C ++ 2012 Redistribution (Visual C ++ 2013 Redistributable desde la versión 43). Si no lo hace, Visual Studio siempre mostrará una excepción. Dígale que no se encontró CefSharp.dll, ¡aunque ya lo tiene!

Espero que esto ayude.


También he tenido problemas con esto y he hecho lo siguiente:

CefSharp.DependencyChecker no reportó nada faltante, pero tan pronto como llamé al nuevo CefSharp.Wpf.ChromiumWebBrowser() ocurrió la excepción.

Revisé todos los archivos ms.net CEF utilizando ILSpy y descubrí que algunos de estos archivos DLL también estaban ubicados en el GAC. Tan pronto como los quité de GAC todo funcionó bien!