Description
UPDATE: Starting with release v87.1.132 the Nuget
packages have been restructured to greatly simplify using AnyCPU
. Issue #3319 has some specific information.
Those upgrading from versions prior to v87.1.132
shouldn't need to make any code changes.
Option 1
When targeting AnyCPU
when your project has Prefer 32bit
set to true
then the resulting exe
will be 32bit
, the Nuget
package checks for this and copies only the x86
files. This is the default for a number of Visual Studio
project templates. No further changes are required.
To manually set Prefer 32bit
open your project properties and under the build tab check prefer 32bit.
Option 2
Add a dependency resolver, this is more complicated and needs to be hooked up before any calls to classes in the CefSharp.*
namespaces. Here is one method of doing this. It's important that LoadApp
is not in-lined, so the calls to CefSharp
are delayed long enough to hookup the Assembly Resolver
- Add
<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
to the first<PropertyGroup>
in your project (e.g..csproj
file). - Implement the code below (modifying any setting that you require).
[STAThread]
public static void Main()
{
CefRuntime.SubscribeAnyCpuAssemblyResolver();
LoadApp();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private static void LoadApp()
{
var settings = new CefSettings();
Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
var browser = new BrowserForm();
Application.Run(browser);
}
The MinimalExample now has AnyCPU
as a target to demo the CefSharpAnyCpuSupport
option.
Activity
amaitland commentedon Jun 20, 2016
Example
WPF
solution.You must add
<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
to the first<PropertyGroup>
in your project (e.g..csproj
file).The MinimalExample now has
AnyCPU
as a target to demo theCefSharpAnyCpuSupport
option.amaitland commentedon Jun 20, 2016
I've updated the original issue at the top here to include details about adding a
CefSharpAnyCpuSupport
property to your project file. This is only required forAnyCPU
support and will through an error as part of your build process until it's been added. The error directs people to this issue.amaitland commentedon Aug 26, 2016
amaitland commentedon Apr 21, 2017
The above warning in your
Error List
is safe to ignore. If you wish to disable this warning see http://thebuildingcoder.typepad.com/blog/2013/06/processor-architecture-mismatch-warning.htmlamaitland commentedon Jul 13, 2018
You must add
<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
to the first<PropertyGroup>
in your project (e.g..csproj
file).Option 3
I've not tested this option in any great detail, so use at you own risk. It requires the user to have Write Permission to the applications executing folder. No special resolves or methods of loading the
dlls
is required. The relevant files are copied to the executing folder and unused resources deletedCefSharp
resources from thex86
orx64
folder depending on application bitnessx86
andx64
foldersNOTE
Git Cleanup
would suffice)amaitland commentedon Oct 3, 2019
Examples of all three options can be found at https://github.com/cefsharp/CefSharp.MinimalExample/branches/all?utf8=%E2%9C%93&query=anycpu
amaitland commentedon Apr 8, 2021
Starting with release v87.1.132 there is another option for
AnyCPU
support.Option 4
CefSharpAnyCpuSupport
in your project file.Web Developer Tools
installed ORNuget
package (whilstMicrosoft
is included in the package name, this package is released by a 3rd party).The resulting
app.config
file (e.g.CefSharp.MinimalExample.OffScreen.exe.config
) will look something like below.The
Microsoft.Web.Publishing.Tasks.dll
contains a transform which modifies your app.config as part of the build process adding entries that resolve theCefSharp.Core.Runtime.dll
at runtime. Note this doesn't modify yourapp.config
in your project root, only the generated version in your bin folder.THIS IS AN EXAMPLE OF THE GENERATED APP.CONFIG, NO CODE CHANGES ARE REQUIRED