You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# ClickOnce安装程序中如何引用WebView2固定运行时二进制文件

问题解决方法

  1. 你给出的固定相对路径写法完全不可用,原因有二:
  • 该路径是你本地开发环境的编译输出路径,ClickOnce安装到用户设备时会生成随机的私有安装目录,路径完全不固定,硬编码路径100%会找不到文件
  • CoreWebView2Environment.CreateAsync的browserExecutableFolder参数要求传入的是包含msedgewebview2.exe的文件夹路径,不是你写的EmbeddedBrowserWebView.dll的文件路径,参数类型本身就不匹配
  1. 正确实现逻辑:
    首先在打包阶段,将固定版本的WebView2运行时整个EBWebView文件夹的所有文件属性设置为「如果较新则复制/始终复制到输出目录」,在ClickOnce发布配置的「应用程序文件」列表中,确认EBWebView下的所有文件发布状态为「包含」、下载组为「必需」,确保发布时运行时文件会和你的主程序放在同一个根目录下。

然后在代码中动态获取当前程序的运行目录,拼接对应架构的WebView2运行时路径即可,示例代码如下:

// 获取当前程序运行的根目录
var basePath = AppContext.BaseDirectory;
// 根据当前进程架构拼接运行时路径,如果你只打x64包可以直接写死x64
var arch = Environment.Is64BitProcess ? "x64" : "x86";
var browserPath = Path.Combine(basePath, @"EBWebView", arch);
// 创建运行时环境
var env = await CoreWebView2Environment.CreateAsync(browserExecutableFolder: browserPath);
// 给WebView2控件指定环境
await webView21.EnsureCoreWebView2Async(env);
  1. 额外注意事项:
    如果你的程序是.NET 5+的Windows桌面应用,也可以直接安装官方对应架构的固定版本WebView2运行时NuGet包,包会自动处理运行时文件的复制和路径引用逻辑,不需要手动拷贝运行时文件。

内容的提问来源于stack exchange,提问作者Janifer Cheng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:09:02