Closed amaitland closed 2 years ago
Include include/base/cef_callback.h instead of include/base/cef_bind.h
As per https://groups.google.com/g/cef-announce/c/IMgnaeWipwc/m/so6nGWgWBgAJ we should use cef_callback.h
instead. https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Core.Runtime/RequestContext.cpp#L17
Note the following required changes to client code:
scoped_ptr → std::unique_ptr from
. Related usage changes: x.Pass() → std::move(x) make_scoped_ptr
→ std::make_unique scoped_ptr (x) → base::WrapUnique(x) from include/base/cef_ptr_util.h OVERRIDE → override arraysize → base::size from include/base/cef_cxx17_backports.h (or std::size with C++17) NULL → nullptr (in most cases) Include include/base/cef_callback.h instead of include/base/cef_bind.h (in most cases) Implicit conversion of CefRefPtr
or scoped_refptr to T* is gone; use x.get() instead
OVERRIDE
with override
(https://github.com/cefsharp/CefSharp/commit/b24cd8e2d7b7bed8e6a5a6094331473c6eba0e91)NULL
with nullptr
(https://github.com/cefsharp/CefSharp/commit/a18637facd60e9fb0176fdf09375e089c93fa4a3)Some of these changes will happen before upgrade to keep the changes in a single commit to a more reviewable size.
Branch https://github.com/cefsharp/CefSharp/tree/upgrade/93 has the work in process, it should compile, it won't run just yet. There is an incompatibility between our C++/CLI
classes and the new IMPLEMENT_REFCOUNTING
implementation. It looks like the use of atomic
forces the class to be a native class instead of a mixed mode
class.
There are also a lot of other cleanup tasks
I will provide further updates once M93 builds are available and I can confirm exactly what changes are required.
Beta builds of version 93
are now available on https://cef-builds.spotifycdn.com/index.html
As expected attempting to build with VS2015/VS2019
failed.
As a result CefSharp
will now require VS2019
to compile, Visual C++ 2019
will now be the new minimum (Visual Studio 2022 is in preview and I expect that Visual C++ 2020 will be backwards compatible
).
For those that have the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019
installed then no change will be required.
For those that have an older VC++ 2015/2017
installation there are a two options:
VC++ 2019
dlls with your application (Local Deployment).Local Deployment
As you should already have the Universal CRT
installed as you previous had VC++ 2015/2017
installed (Universal CRT
is also included as part of Windows 10
by default) you can bin deploy the VC++ 2019
dlls alongside your application.
The following should copy the VC++
runtime into the bin/publish folders when run under Visual Studio
(won't work from the command line). NOTE: ClickOnce will need different targets to add the files.
For x86/x64:
<Import Project="$(DevEnvDir)..\..\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.props"/>
<Target Name="IncludeVisualCppInOutFolder" AfterTargets="ResolveReferences">
<PropertyGroup>
<_VCRedistLocation>$(DevEnvDir)..\..\VC\Redist\MSVC\$(VCToolsRedistVersion)\$(PlatformTarget)\Microsoft.VC142.CRT</_VCRedistLocation>
</PropertyGroup>
<Message Importance="high" Text="_VCRedistLocation = $(_VCRedistLocation)" />
<ItemGroup>
<ReferenceCopyLocalPaths Include="$(_VCRedistLocation)\**\*" />
</ItemGroup>
</Target>
For AnyCPU:
<Import Project="$(DevEnvDir)..\..\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.props"/>
<Target Name="IncludeVisualCppInOutFolder" AfterTargets="ResolveReferences">
<PropertyGroup>
<_VCRedistLocation32bit>$(DevEnvDir)..\..\VC\Redist\MSVC\$(VCToolsRedistVersion)\x86\Microsoft.VC142.CRT</_VCRedistLocation32bit>
<_VCRedistLocation64bit>$(DevEnvDir)..\..\VC\Redist\MSVC\$(VCToolsRedistVersion)\x64\Microsoft.VC142.CRT</_VCRedistLocation64bit>
</PropertyGroup>
<Message Importance="high" Text="_VCRedistLocation32bit = $(_VCRedistLocation32bit)" />
<Message Importance="high" Text="_VCRedistLocation64bit = $(_VCRedistLocation64bit)" />
<ItemGroup>
<_VCRedistFiles32bit Include="$(_VCRedistLocation32bit)\**\*"/>
<_VCRedistFiles64bit Include="$(_VCRedistLocation64bit)\**\*"/>
<ReferenceCopyLocalPaths Include="@(_VCRedistFiles32bit)" DestinationSubDirectory="x86\" />
<ReferenceCopyLocalPaths Include="@(_VCRedistFiles64bit)" DestinationSubDirectory="x64\" />
</ItemGroup>
</Target>
Visual C++ Runtime
Details on deploying/redistributing the Visual C++ 2019 runtime
.
Universal CRT
For those looking for more detail on the Universal CRT
Is this only for NET Core? According to
you only need the 2019 redistributables if you target NET Core, otherwise you can just use the 2015 redistributables.
As a flow on from we will be forced to migrate from Visual C++ 2015 as the minimum to Visual C++ 2019 runtime
VC++ 2019 is required for all packages now.
According to https://github.com/cefsharp/CefSharp/wiki/Output-files-description-table-(Redistribution)#Requirements
Wiki has been updated, thanks.
CEF is dropping support for compiling the C++ wrapper with Visual Studio 2015/2017 see https://groups.google.com/g/cef-announce/c/IMgnaeWipwc/m/so6nGWgWBgAJ for details.
As a flow on from we will be forced to migrate from Visual C++ 2015 as the minimum to Visual C++ 2019 runtime. A lot of users will already have the Visual C++ 2015-2019 runtime, so no action will be required.
I will provide further updates once M93 builds are available and I can confirm exactly what changes are required.
For those using the
.Net Core 3.1/.Net 5.0
packagesVC++ 2019
is already required.