Условное использование CefSharp, если установлен VC ++ Redistribuable - PullRequest
0 голосов
/ 10 февраля 2020

У меня проблемы с использованием CefSharp. Ну, не совсем так. CefSharp хорошо установлен и настроен в моем приложении (с несколькими процессорами) и работает очень хорошо. Это приложение winform, и я использую CefSharp для отображения некоторой статистики для моих конечных пользователей, которая рассчитывается через webApi. Но это очень маленькая часть моего приложения, и не у всех моих пользователей есть эта опция. Но проблема в том, что CefSharp использует VC ++ Redistribuable, и некоторые из моих пользователей не установили его (и иногда мы не можем установить его на компьютере, потому что системный администратор не позволяет нам это делать). Но дело в том, что если я запускаю мое приложение в этом случае, оно зависало !!!

Я поместил подтверждение в первую строку моего Program.cs (чтение первой строки при запуске приложения) в проверьте, установлен ли VC ++ или нет, чтобы отключить эту опцию, но я не могу достичь этой точки, приложение до sh до этого пыталось загрузить DLL-библиотеку CefSharp, даже если бы я ее не использовал.

static void Main(string[] args)
    {
        isVC2015to2019x86Installed = CRedistributableChecker.CRedistributablePackage.IsInstalled(CRedistributableChecker.RedistributablePackageVersion.VC2015to2019x86) ||
                                    CRedistributableChecker.CRedistributablePackage.IsInstalled(CRedistributableChecker.RedistributablePackageVersion.VC2015x86) ||
                                    CRedistributableChecker.CRedistributablePackage.IsInstalled(CRedistributableChecker.RedistributablePackageVersion.VC2017x86);

        if (isVC2015to2019x86Installed)
        {
            //Need to start the assembly with the right environment(x32 or x64) because this dll does not support any cpu compilation
            AppDomain currentDomain = AppDomain.CurrentDomain;
            currentDomain.AssemblyResolve += OnAssemblyResolve;
            var settings = new CefSharp.WinForms.CefSettings()
            {
                BrowserSubprocessPath = System.IO.Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
                               Environment.Is64BitProcess ? "x64" : "x86",
                               "CefSharp.BrowserSubprocess.exe")
            };
            CefSharp.CefSharpSettings.ShutdownOnExit = false;
            CefSharp.Cef.Initialize(settings);
        }
        else
            MessageBox.Show("test");

И я знаю, что это комбинация CefSharp и VC ++, потому что, если я удаляю все ссылки на него или если я устанавливаю VCC ++, приложение запускается отлично.

Есть ли способ условно загрузить CefSharp, если VC ++ установлен или нет? Или хотя бы способ запуска приложения ...

Заранее спасибо.

...