Ищете кроссплатформенное управление браузером - PullRequest
0 голосов
/ 28 октября 2019

В настоящее время я работаю над C# приложением Windows, а также работаю над моно. Моя цель - запустить C# Приложение Windows в Ubuntu, как показано ниже:

mono HelloWorld.exe

В Ubuntu оно работает очень хорошо с моно. Теперь мне нужно добавить элемент управления веб-браузера в мое приложение C#. Я попробовал DotNetBrowser, но официально ответил, что они не поддерживают Linux. Я искал Edge с помощью Microsoft Toolkit, но я еще не тестировал его. Может кто-нибудь предложить мне хороший элемент управления веб-браузера, который соответствует моей цели?

  1. Должно работать в приложении C # для Windows
  2. Поддерживается многопоточность (экземпляр с несколькими браузерами)
  3. Должно быть в состоянии обрабатывать файлы cookie (например, CookieCollection для браузера и браузера дляCookieCollection)
  4. Современный HTML5 и CSS поддерживаются
  5. Коммерческие или некоммерческие оба в порядке

Случай 1: Прежде всего, япопробовал Microsoft.Toolkit.Forms.UI.Controls.WebView, который был известен как браузер Edge. И вот ошибка, которую мне сообщили.

Unhandled Exception:
System.TypeInitializationException: The type initializer for 'Microsoft.Toolkit.Win32.UI.Controls.Interop.OSVersionHelper' threw an exception. ---> System.DllNotFoundException: ntdll.dll assembly:<unknown assembly> type:<unknown type> member:(null)
 at (wrapper managed-to-native) Microsoft.Toolkit.Win32.UI.Controls.Interop.Win32.NativeMethods._RtlGetVersion(Microsoft.Toolkit.Win32.UI.Controls.Interop.Win32.OSVERSIONINFOEX&)
 at Microsoft.Toolkit.Win32.UI.Controls.Interop.Win32.NativeMethods.RtlGetVersion () [0x00020] in <cbb7d2346bc74d6bae671e0688cf654e>:0
 at Microsoft.Toolkit.Win32.UI.Controls.Interop.OSVersionHelper.IsServer () [0x00000] in <cbb7d2346bc74d6bae671e0688cf654e>:0
 at Microsoft.Toolkit.Win32.UI.Controls.Interop.OSVersionHelper..cctor () [0x00042] in <cbb7d2346bc74d6bae671e0688cf654e>:0
  --- End of inner exception stack trace ---
 at Microsoft.Toolkit.Forms.UI.Controls.WebView.System.ComponentModel.ISupportInitialize.EndInit () [0x0001b] in <cbb7d2346bc74d6bae671e0688cf654e>:0
 at HelloWorld.Form1.InitializeComponent () [0x000fe] in <9bf85b488e054a42957cd1546d4697e1>:0
 at HelloWorld.Form1..ctor () [0x0000f] in <9bf85b488e054a42957cd1546d4697e1>:0
 at (wrapper remoting-invoke-with-check) HelloWorld.Form1..ctor()
 at HelloWorld.Program.Main () [0x0000e] in <9bf85b488e054a42957cd1546d4697e1>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Microsoft.Toolkit.Win32.UI.Controls.Interop.OSVersionHelper' threw an exception. ---> System.DllNotFoundException: ntdll.dll assembly:<unknown assembly> type:<unknown type> member:(null)
 at (wrapper managed-to-native) Microsoft.Toolkit.Win32.UI.Controls.Interop.Win32.NativeMethods._RtlGetVersion(Microsoft.Toolkit.Win32.UI.Controls.Interop.Win32.OSVERSIONINFOEX&)
 at Microsoft.Toolkit.Win32.UI.Controls.Interop.Win32.NativeMethods.RtlGetVersion () [0x00020] in <cbb7d2346bc74d6bae671e0688cf654e>:0
 at Microsoft.Toolkit.Win32.UI.Controls.Interop.OSVersionHelper.IsServer () [0x00000] in <cbb7d2346bc74d6bae671e0688cf654e>:0
 at Microsoft.Toolkit.Win32.UI.Controls.Interop.OSVersionHelper..cctor () [0x00042] in <cbb7d2346bc74d6bae671e0688cf654e>:0
  --- End of inner exception stack trace ---
 at Microsoft.Toolkit.Forms.UI.Controls.WebView.System.ComponentModel.ISupportInitialize.EndInit () [0x0001b] in <cbb7d2346bc74d6bae671e0688cf654e>:0
 at HelloWorld.Form1.InitializeComponent () [0x000fe] in <9bf85b488e054a42957cd1546d4697e1>:0
 at HelloWorld.Form1..ctor () [0x0000f] in <9bf85b488e054a42957cd1546d4697e1>:0
 at (wrapper remoting-invoke-with-check) HelloWorld.Form1..ctor()
 at HelloWorld.Program.Main () [0x0000e] in <9bf85b488e054a42957cd1546d4697e1>:0

Случай 2: Теперь я изменил элемент управления веб-браузера на стандартный по умолчанию в Visual Studio.NET, который является System.Windows.Forms. .Веб-браузер. И я получаю эту ошибку.

libgluezilla not found. To have webbrowser support, you need libgluezilla installed
System.NullReferenceException: Object reference not set to an instance of an object
 at System.Windows.Forms.WebBrowser.Navigate (System.Uri url) [0x0001f] in <7346aaf818a24e898fc55461ebf690ad>:0
 at (wrapper remoting-invoke-with-check) System.Windows.Forms.WebBrowser.Navigate(System.Uri)
 at HelloWorld.Form1.Form1_Load (System.Object sender, System.EventArgs e) [0x00011] in <d015c6fb9c2242c3b1ad5c571e8f4c27>:0
 at System.Windows.Forms.Form.OnLoad (System.EventArgs e) [0x0001f] in <7346aaf818a24e898fc55461ebf690ad>:0
 at System.Windows.Forms.Form.OnLoadInternal (System.EventArgs e) [0x00023] in <7346aaf818a24e898fc55461ebf690ad>:0

Случай 2-2: Итак, я проверил, есть ли в моем Ubuntu libgluezilla с терминалом.

apt-cache search libgluezilla

И возвратсообщение ниже.

libmono-webbrowser4.0-cil - Mono Web Browser library (for CLI 4.0)

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

...