You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Awesomium Mono引用冲突求助:WebSession类型定义冲突

解决Awesomium Mono引用冲突:WebSession重复定义/找不到类的问题

嘿,这个坑我之前帮人排查过!本质是旧版Awesomium SDK里Mono版本和Core版本的引用逻辑bug,咱们一步步搞定:

问题根源

Awesomium.Mono其实是专门针对Mono环境打包的版本,里面已经包含了Awesomium.Core的所有类型,但旧版SDK的引用配置有问题,导致Visual Studio没自动识别到Mono包内的Core类型,反而提示你手动加Core引用——可一加就炸,因为两个包有完全重名的命名空间和类型。

分步解决方案

  1. 彻底清理现有引用

    • 右键项目→引用,删掉Awesomium.Core和Awesomium.Mono
    • 卸载项目(右键→卸载项目),编辑.csproj文件,把所有和Awesomium相关的<Reference>节点删掉,避免残留配置干扰
    • 重新加载项目
  2. 只添加Awesomium.Mono引用

    • 右键项目→添加引用,找到并只添加Awesomium.Mono.dll(别碰Core!)
    • 检查项目的目标框架:确保是.NET Framework 4.x系列,和你的Mono环境版本匹配,别用太新的框架版本
  3. 用别名强制指定Mono版本类型(如果还冲突)

    • 右键引用里的Awesomium.Mono→属性,把“别名”改成AwesomiumMono(默认是global)
    • 在你的代码文件最顶部加一行:
      extern alias AwesomiumMono;
      
    • 之后所有用到Awesomium.Core类型的地方,都用别名前缀指定:
      // 原来的代码
      // this.webControl1.TargetURLChanged += new Awesomium.Core.UrlEventHandler(...);
      // 修改后
      this.webControl1.TargetURLChanged += new AwesomiumMono::Awesomium.Core.UrlEventHandler(this.Awesomium_Windows_Forms_WebControl_TargetURLChanged);
      
  4. 兜底:重新安装适配Mono的SDK

    • 如果上面的方法都不行,卸载当前的Awesomium SDK,找官网更新前专门针对Mono发布的1.7.5.1版本安装包(别用通用版SDK),重新安装后再添加引用

针对你的代码示例修改

如果用了别名,完整的代码片段应该是这样:

extern alias AwesomiumMono;

private void InitializeComponent() {
	// 
	// webControl1
	// 
	this.webControl1.Dock = System.Windows.Forms.DockStyle.Fill;
	this.webControl1.Location = new System.Drawing.Point(0, 0);
	this.webControl1.Size = new System.Drawing.Size(1002, 502);
	this.webControl1.TabIndex = 0;
	this.webControl1.TargetURLChanged += new AwesomiumMono::Awesomium.Core.UrlEventHandler(this.Awesomium_Windows_Forms_WebControl_TargetURLChanged);
}
private Awesomium.Windows.Forms.WebControl webControl1;

内容的提问来源于stack exchange,提问作者Euan Hollidge

火山引擎 最新活动