CefSharp за кадром с .net core 2.0 Ошибка выполнения, System.IO.FileNotFoundException: «Не удалось загрузить файл или сборку» CefSharp.Core, - PullRequest
0 голосов
/ 28 июня 2018

Я получаю эту ошибку

System.IO.FileNotFoundException: «Не удалось загрузить файл или сборку» CefSharp.Core, версия = 63.0.3.0, культура = нейтральная, PublicKeyToken = 40c4b6fc221f4138 '. Система не может найти указанный файл. '

Я пытаюсь запустить программу cefsharp.minimalexample.offscreen в .net core 2.0. в visual studio 2017

что я сделал до сих пор

1. Создано консольное приложение ядра .net

2. Установленные пакеты NuGet Cefsharp.Offscreen (который устанавливает зависимости cefsharp.common и redist)

3. Установил пакет nuget Microsoft.windows.compatibility для получения system.drawing в ядре .net (он не работал с System.Drawing.Common в качестве функции Cefsharp ScreenshotAsync с использованием system.drawing)

Эти шаги очистят все ошибки, и проект будет успешно построен.

Я получаю вышеупомянутую ошибку.
Я проверил все необходимые файлы, упомянутые в документации Cefsharp в текущей рабочей папке (отладка). Все файлы доступны, ошибка по-прежнему не исчезает.

Отлично работает в старых версиях Dot net 4.6.

Мне не удалось найти какие-либо вспомогательные документы для реализации cefsharp.offscreen с ядром .net в любом месте.

Это код из примера, представленного в Cefsharp.offscreen.

Пожалуйста, дайте мне знать, если вы можете пролить свет на эту проблему. Заранее спасибо.

Программа публичного класса { приватный статический браузер ChromiumWebBrowser;

    public static void Main(string[] args)
    {
        const string testUrl = "https://www.google.com/";

        Console.WriteLine("This example application will load {0}, take a screenshot, and save it to your desktop.", testUrl);
        Console.WriteLine("You may see Chromium debugging output, please wait...");
        Console.WriteLine();

        var settings = new CefSettings()
        {
            //By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data
            CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache")
        };

        //Perform dependency check to make sure all relevant resources are in our output directory.
        Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);

        // Create the offscreen Chromium browser.
        browser = new ChromiumWebBrowser(testUrl);

        // An event that is fired when the first page is finished loading.
        // This returns to us from another thread.
        browser.LoadingStateChanged += BrowserLoadingStateChanged;

        // We have to wait for something, otherwise the process will exit too soon.
        Console.ReadKey();

        // Clean up Chromium objects.  You need to call this in your application otherwise
        // you will get a crash when closing.
        Cef.Shutdown();
    }

    private static void BrowserLoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
    {
        // Check to see if loading is complete - this event is called twice, one when loading starts
        // second time when it's finished
        // (rather than an iframe within the main frame).
        if (!e.IsLoading)
        {
            // Remove the load event handler, because we only want one snapshot of the initial page.
            browser.LoadingStateChanged -= BrowserLoadingStateChanged;

            var scriptTask = browser.EvaluateScriptAsync("document.getElementById('lst-ib').value = 'CefSharp Was Here!'");

            scriptTask.ContinueWith(t =>
            {
                //Give the browser a little time to render
                Thread.Sleep(500);
                // Wait for the screenshot to be taken.
                var task = browser.ScreenshotAsync();
                task.ContinueWith(x =>
                {
                    // Make a file to save it to (e.g. C:\Users\jan\Desktop\CefSharp screenshot.png)
                    var screenshotPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "CefSharp screenshot.png");

                    Console.WriteLine();
                    Console.WriteLine("Screenshot ready. Saving to {0}", screenshotPath);

                    // Save the Bitmap to the path.
                    // The image type is auto-detected via the ".png" extension.
                    task.Result.Save(screenshotPath);

                    // We no longer need the Bitmap.
                    // Dispose it to avoid keeping the memory alive.  Especially important in 32-bit applications.
                    task.Result.Dispose();

                    Console.WriteLine("Screenshot saved.  Launching your default image viewer...");

                    // Tell Windows to launch the saved image.
                    Process.Start(screenshotPath);

                    Console.WriteLine("Image viewer launched.  Press any key to exit.");
                }, TaskScheduler.Default);
            });
        }
    }
}
...