C#:在AnyCPU模式下使用CefSharp
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
本篇博客讲述如何在AnyCPU模式下使用CefSharp
因为在某些情况下,不得不用AnyCPU,但是CefSharp支持的是86和64位俩种模式,所以在我查阅了很多国内外的资料下,总结出来的一些精华
参考地址:
https://ourcodeworld.com/articles/read/173/how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application
https://github.com/cefsharp/CefSharp/issues/1714
https://github.com/cefsharp/CefSharp.MinimalExample/blob/demo/anycpu/CefSharp.MinimalExample.Wpf/App.xaml.cs
三篇结合就可以实现在AnyCPU下使用CefSharp
简单步骤记录
第一篇博客取其第二个,更改配置的那一块,这块不改,下面的没用,项目起不起来
简述一下:
1.修改为首选32位,
2.在你项目名.csproj文件下,加一段
- <CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
位置如下:
3.在App.config下加一端
- <runtime>
- <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
- <probing privatePath="x86"/>
- </assemblyBinding>
- </runtime>
位置如下:
第二篇博客取的精髓在这块,我给放过来
- public partial class App : Application
- {
- public App()
- {
- //Add Custom assembly resolver
- AppDomain.CurrentDomain.AssemblyResolve += Resolver;
- //Any CefSharp references have to be in another method with NonInlining
- // attribute so the assembly rolver has time to do it's thing.
- InitializeCefSharp();
- }
- [MethodImpl(MethodImplOptions.NoInlining)]
- private static void InitializeCefSharp()
- {
- var settings = new CefSettings();
- // Set BrowserSubProcessPath based on app bitness at runtime
- settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
- Environment.Is64BitProcess ? "x64" : "x86",
- "CefSharp.BrowserSubprocess.exe");
- // Make sure you set performDependencyCheck false
- Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
- }
- // Will attempt to load missing assembly from either x86 or x64 subdir
- // Required by CefSharp to load the unmanaged dependencies when running using AnyCPU
- private static Assembly Resolver(object sender, ResolveEventArgs args)
- {
- if (args.Name.StartsWith("CefSharp"))
- {
- string assemblyName = args.Name.Split(new[] { ',' }, )[] + ".dll";
- string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
- Environment.Is64BitProcess ? "x64" : "x86",
- assemblyName);
- return File.Exists(archSpecificPath)
- ? Assembly.LoadFile(archSpecificPath)
- : null;
- }
- return null;
- }
- }
第三篇博客 就是告诉你using指令怎么引,以及详细的写法,要用的话,还是用第二篇博客的这段代码
- using System;
- using System.IO;
- using System.Reflection;
- using System.Runtime.CompilerServices;
- using System.Windows;
- namespace CefSharp.MinimalExample.Wpf
- {
- public partial class App : Application
- {
- public App()
- {
- //Add Custom assembly resolver
- AppDomain.CurrentDomain.AssemblyResolve += Resolver;
- //Any CefSharp references have to be in another method with NonInlining
- // attribute so the assembly rolver has time to do it's thing.
- InitializeCefSharp();
- }
- [MethodImpl(MethodImplOptions.NoInlining)]
- private static void InitializeCefSharp()
- {
- //Perform dependency check to make sure all relevant resources are in our output directory.
- var settings = new CefSettings();
- settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
- Environment.Is64BitProcess ? "x64" : "x86",
- "CefSharp.BrowserSubprocess.exe");
- Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler:null);
- }
- // Will attempt to load missing assembly from either x86 or x64 subdir
- // Required by CefSharp to load the unmanaged dependencies when running using AnyCPU
- private static Assembly Resolver(object sender, ResolveEventArgs args)
- {
- if (args.Name.StartsWith("CefSharp"))
- {
- string assemblyName = args.Name.Split(new[] { ',' }, )[] + ".dll";
- string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
- Environment.Is64BitProcess ? "x64" : "x86",
- assemblyName);
- return File.Exists(archSpecificPath)
- ? Assembly.LoadFile(archSpecificPath)
- : null;
- }
- return null;
- }
- }
- }
三套组合拳打完,CefSharp就可以在AnyCPU模式下使用了
C#:在AnyCPU模式下使用CefSharp的更多相关文章
- 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何
基于 Vue.js 之 iView UI 框架非工程化实践记要 像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...
- 微软Azure 经典模式下创建内部负载均衡(ILB)
微软Azure 经典模式下创建内部负载均衡(ILB) 使用之前一定要注意自己的Azure的模式,老版的为cloud service模式,新版为ARM模式(资源组模式) 本文适用于cloud servi ...
- 苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转
昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺 ...
- win10 下visual studio 2015 在调试模式下不能跟踪源文件
win10 下visual studio 2015 在调试模式下不能跟踪源文件,只要一调试就会关闭(隐藏)打开的文档,非常不方便.经过一番折腾,发现是配置的问题. 如果安装多个版本的VS,请删除对应版 ...
- 转:IE兼容模式下 SCRIPT1028: 缺少标识符、字符串或数字
IE兼容模式下 SCRIPT1028: 缺少标识符.字符串或数字例如下面一段代码 var a = { x: 1, y: 2,};alert(a.x);如果在IE的兼容性视图(IE7文档模式 ...
- 【配置】检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为【经典】模式)。
× 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(非简单设置为[经典]模式). 我们将ASP.NET程序从IIS6移植到IIS7,可能运行提示以下错误: HTTP 错误 5 ...
- Linux学习之CentOS(二十二)--单用户模式下修改Root用户的密码
在上一篇随笔里面详细讲解了Linux系统的启动过程 (Linux学习之CentOS(二十一)--Linux系统启动详解),我们知道Linux系统的启动级别一共有6种级别,通过 /etc/inittab ...
- MVC开发模式下的用户角色权限控制
前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据 ...
- TreeView 使用方法:(在View.Details模式下)
1.建立TreeView的標題 2.建立TreeView的Item 3.在TreeView的Item中的建立SubItem 如果將各部 ...
随机推荐
- python 中的重要思想
- Python version 3.6 required, which was not found in the registry错误解决
问题: 安装pywin32出现Python version 3.6 required, which was not found in the registry错误解决 解决: 建立一个文件 regis ...
- 协议森林09 爱的传声筒 (TCP连接)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在TCP协议与"流"通信中,我们概念性的讲解了TCP通信的方式 ...
- urllib下使用Xpath表达式示例
urllib下使用Xpath表达式示例 使用xpath表达式需要先将需要匹配的数据转换成tree格式,这就需要先装lxml模块.安装方法可以使用pip安装. 示例代码: import urllib.r ...
- POJ1066 Treasure Hunt
嘟嘟嘟 题意看题中的图就行:问你从给定的点出发最少需要穿过几条线段才能从正方形中出去(边界也算). 因为\(n\)很小,可以考虑比较暴力的做法.枚举在边界中的哪一个点离开的.也就是枚举四周的点\((x ...
- HDU 4652 Dice
嘟嘟嘟 题目大意就是对于一个m面的骰子,回答这么两个问题: 1.求连续扔n次都是同一数字的期望次数. 2.求连续扔n次每一次数字都不相同的期望次数. 对于期望dp特别菜的我来说,这道题已经算是很难了. ...
- MFC各个控件之间运用SendMessage()传送CString和char[]字符串,以及int类型数据
LRESULT SendMessage( HWND hWnd, // handle to destination window UINT Msg, // message WPARAM wParam, ...
- Basic Classifiers and Loss Functions
Linear Classifier and Hing Loss (or Multiclass SVM Loss) Linear Mapping (Score function) Linear Clas ...
- cocos2d-x3.0 用CCDictionary写文件
bool CDownLoad_LocalData::WriteToConfigFile( DownLoadLocalData* downdata ){ CCDictionary* pDict = CC ...
- Centos 7安装Grafana 4及结合Zabbix3.2实现可视化监控图形
上一篇介绍了如何在Centos 7环境下安装zabbix监控,本章继续介绍在Centos 7环境下安装Grafana,并结合Zabbix实现可视化监控图形! 简介: Grafana 是 Graphit ...