在 C# (Webform) 中使用 Webview2 激活固定版本
Activating Fixed Version using Webview2 in C# (Webform)
我正在尝试学习使用 C# 利用 WebView2 元素创建应用程序。因为我试图将它分发给可能没有 Edge 的计算机,所以我试图利用 Webview2 运行时的固定版本。我相信我已将文件上传到正确的目录并确保“userDataFolder”的位置位于可写文件中,但我仍然收到以下错误消息:
Microsoft.Web.WebView2.Core.WebView2RuntimeNotFoundException: 'Couldn't find a compatible Webview2 Runtime installation to host WebViews.'
我在这里存储了固定版本运行时的文件:C:\Users\janif\source\repos\browserPackageV1\browserPackageV1\bin\Debug\net5.0-windows\browserPackageV1.exe.WebView2\Microsoft.WebView2.FixedVersionRuntime.94.0.992.50.x86
这是我的代码:
'''
public Form1()
{
InitializeComponent();
webBrowser.Source = new Uri("https://www.microsoft.com/en-us/");
InitWebView();
}
String locOfRuntime = @"\browserPackageV1\bin\Debug\net5.0-windows\browserPackageV1.exe.WebView2";
String locOfSavedState = @"\browserPackageV1\bin\Debug\net5.0-windows\temp";
async void InitWebView()
{
await CoreWebView2Environment.CreateAsync(
browserExecutableFolder: locOfRuntime,
userDataFolder: locOfSavedState);
}
'''
我错过了什么吗?我应该将“browserExecutableFolder”指向其他地方吗?我的文件位置语法错误吗?我目前是一名学生,我正在尝试自学如何做到这一点,但所有关于这方面的文档都非常模糊,我已经碰壁了。我看过 Microsoft 的文档使用“WebView2.EnsureCoreWeb2Async”,并尝试过(见下文):
'''
async void InitWebView()
{
await joinBrowser.EnsureCoreWebView2Async
(
Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync
(
browserExecutableFolder: locOfRuntime,
userDataFolder: locOfState,
CoreWebView2EnvironmentOptions options = null
)
);
}
'''
...但这也行不通。 VS 不接受 "CoreWebView2EnvironmentOptions options = null"。有人可以帮我吗?我找不到任何明确的东西可以真正使 WebView2 的固定版本工作。
谢谢!
对于与您类似的设置,我们将可执行文件存储在 Visual Studio 主项目文件夹的 'lib' 文件夹中。
当我们可以像这样初始化对 webview2 的调用时:
var newView = new WebView2()
{
CreationProperties = new CoreWebView2CreationProperties
{
BrowserExecutableFolder = "lib/Microsoft.WebView2.FixedVersionRuntime.91.0.864.71.x64"
}
};
这使得 URL 对 webview2 的引用比您必须使用的要容易得多。您对 webview2 的调用与我们不同,但您可以看到 URL 这样使用起来要容易得多。
我正在尝试学习使用 C# 利用 WebView2 元素创建应用程序。因为我试图将它分发给可能没有 Edge 的计算机,所以我试图利用 Webview2 运行时的固定版本。我相信我已将文件上传到正确的目录并确保“userDataFolder”的位置位于可写文件中,但我仍然收到以下错误消息:
Microsoft.Web.WebView2.Core.WebView2RuntimeNotFoundException: 'Couldn't find a compatible Webview2 Runtime installation to host WebViews.'
我在这里存储了固定版本运行时的文件:C:\Users\janif\source\repos\browserPackageV1\browserPackageV1\bin\Debug\net5.0-windows\browserPackageV1.exe.WebView2\Microsoft.WebView2.FixedVersionRuntime.94.0.992.50.x86
这是我的代码:
'''
public Form1()
{
InitializeComponent();
webBrowser.Source = new Uri("https://www.microsoft.com/en-us/");
InitWebView();
}
String locOfRuntime = @"\browserPackageV1\bin\Debug\net5.0-windows\browserPackageV1.exe.WebView2";
String locOfSavedState = @"\browserPackageV1\bin\Debug\net5.0-windows\temp";
async void InitWebView()
{
await CoreWebView2Environment.CreateAsync(
browserExecutableFolder: locOfRuntime,
userDataFolder: locOfSavedState);
}
'''
我错过了什么吗?我应该将“browserExecutableFolder”指向其他地方吗?我的文件位置语法错误吗?我目前是一名学生,我正在尝试自学如何做到这一点,但所有关于这方面的文档都非常模糊,我已经碰壁了。我看过 Microsoft 的文档使用“WebView2.EnsureCoreWeb2Async”,并尝试过(见下文):
'''
async void InitWebView()
{
await joinBrowser.EnsureCoreWebView2Async
(
Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateAsync
(
browserExecutableFolder: locOfRuntime,
userDataFolder: locOfState,
CoreWebView2EnvironmentOptions options = null
)
);
}
'''
...但这也行不通。 VS 不接受 "CoreWebView2EnvironmentOptions options = null"。有人可以帮我吗?我找不到任何明确的东西可以真正使 WebView2 的固定版本工作。
谢谢!
对于与您类似的设置,我们将可执行文件存储在 Visual Studio 主项目文件夹的 'lib' 文件夹中。
当我们可以像这样初始化对 webview2 的调用时:
var newView = new WebView2()
{
CreationProperties = new CoreWebView2CreationProperties
{
BrowserExecutableFolder = "lib/Microsoft.WebView2.FixedVersionRuntime.91.0.864.71.x64"
}
};
这使得 URL 对 webview2 的引用比您必须使用的要容易得多。您对 webview2 的调用与我们不同,但您可以看到 URL 这样使用起来要容易得多。