Ne pouvait pas charger le fichier ou l'assemblage 'CefSharp.dll' ou une de ses dépendances

j'essaie D'utiliser CefSharp pour charger mon application web dans winfoms. J'ai ajouté 2 fichiers dll: CefSharp.dll et CefSharp.Win se transforme en références et ajoute 2 fichiers dll icudt.dll et libcef.dll dans mon projet à travers ajouter des articles existants.

enter image description here

et voici le code du formulaire

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());
}

Lorsque vous exécutez l'application, j'ai eu cette erreur

Une exception non gérée du type 'System.IO.FileLoadException " s'est produite dans WindowsFormsApplication1.EXE Informations supplémentaires: ne pouvait pas charger le fichier ou l'assemblage 'CefSharp.dll' ou une de ses dépendances. Une bibliothèque de liens dynamiques (DLL) routine d'initialisation a échoué. (Exception de HRESULT: 0x8007045A)

donc, quiconque est au courant de cela s'il vous plaît aidez-moi, merci

17
demandé sur Soner Gönül 2013-08-13 11:28:09

8 réponses

Vous devez mettre ces fichiers

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

dans votre bin\Debug (ou bin\Release base de votre configuration)

Et s'il vous plaît n'oubliez pas d'installer Visual C++ 2012 Redistribution ( Visual C++ 2013 redistribuable depuis la version 43) , si vous ne Visual Studio affichera toujours une exception dire non trouvé CefSharp.dll bien que vous l'avez déjà!

Espérons que cette aide.

20
répondu Toan Nguyen 2016-01-20 14:32:40

C'est un problème courant et il est donc mentionné dans le FAQ, question numéro 3.

@AcccessDenied a raison. Les fichiers doivent être présents dans votre dossier de sortie (bin\Debug ou bin\Release). Une façon de faire cela est d'utiliser un Post-Build action, qui peut se définir sous les paramètres du projet dans Visual Studio.

Vous pouvez également configurer le post-build dans le .csproj fichier, un peu comme ceci:

<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>

(Cet exemple est tiré de la CefSharp.Wpf.Exemple projet dans le CefSharp code source, CefSharp3 branche. L'emplacement exact des fichiers peut varier dans votre cas, surtout si vous utilisez CefSharp1, alors adaptez-le au besoin pour vous assurer que les fichiers sont copiés correctement.)

Je ne recommande pas de mettre des trucs dans bin\Debug ou bin\Release et de les ajouter à la solution en utilisant Copy Always. Il se sent comme une bidouille pour moi.

6
répondu Per Lundberg 2014-04-04 16:48:41

j'ai juste eu des problèmes avec ce même et j'ai fait le code suivant:

CefSharp.DependencyChecker n'a rien signalé de manquant mais dès que j'ai appelé new CefSharp.Wpf.ChromiumWebBrowser() l'exception s'est produite.

j'ai vérifié tous les ms.net CEF dll à l'aide de ILSpy et a constaté que certains de ces Dll, ont été localisées dans le GAC. Dès que je les ai retirés de GAC tout a bien fonctionné!

6
répondu uTILLIty 2016-02-25 15:58:25

il s'agit d'une erreur courante causée par le fait que tous les fichiers ne sont pas présents dans le répertoire de sortie (bin\Debug ou bin\Release, selon la configuration que vous utilisez dans Visual Studio). CefSharp.dll est une DLL basée sur .NET qui dépend d'autres .fichiers dll, qui à son tour dépend plus loin d'autres .dll et autres fichiers...

Voici une liste des fichiers minimum requis:

  • libcef.dll (le noyau de Chrome DLL, qui contient essentiellement le web navigateur + l'interface d'embeddability de CEF dont nous dépendons)
  • icudt.dll (Unicode DLL pour le Chrome, doit aussi être présent)
  • CefSharp.dll (managed .net assembly qui contient le noyau CefSharp la fonctionnalité)
  • CefSharp.WinForms.dll OR CefSharp.WPF.dll (selon votre projet type)

consultez ce lien pour en savoir plus détails

5
répondu Kurubaran 2013-08-13 08:01:50

Vous devez définir le "copier la sortie de' propriétés des fichiers de "copy" ou "copier si plus récent'. Cette copie tous les fichiers dans le répertoire de sortie, comme indiqué par le Codeur.

1
répondu c_wiz_kid 2013-08-13 08:16:55

paramétrage " msvcp120.dll" et " msvcr120.dll " à "copier toujours" m'a aidé.

0
répondu nikitaso 2016-08-11 15:22:04

dans mon cas, je suivais les étapes décrites dans CefSharp - Notre Code Monde.

au lieu de suivre l'étape A et ajouter CefSharpAnyCpuSupportcsproj et probingApp.config, il suffit de réglage de l' Platform Targetx86 à l'étape B fait le tour.

0
répondu ZerosAndOnes 2018-06-25 12:36:44

La méthode recommandée semble être d'utiliser le package NuGet. Même dans ce cas, vous devez faire des changements non intuitifs, mais ils sont documentés. Lors de l'installation du paquet fraîchement readme.ouverture du fichier txt avec les problèmes les plus courants.

Dans mon cas, j'ai été absent (x64 également disponible)

<probing privatePath="x86" />

Mon Application.config ressemble à ceci (avec CommonServiceLocator, ignorer cette partie si vous ne l'avez pas)

<?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>

l'erreur se produit parce qu'il y est vraiment pas DLL Cefsharp dans le dossier bin lorsque vous définissez le projet à AnyCPU. Mais dans le dossier x86 et x64 ci-dessous où vous sondez en ajoutant cette ligne, la DLL existe. Une solution temporaire serait de copier le contenu de /bin/x86 /bin.

si AnyCpu est désiré CefSharpAnyCpuSupport doit être ajouté au fichier csproj. Le drapeau de projet pour Prefer 32bit doit être mis.

-1
répondu CodingYourLife 2018-08-15 09:05:08