Upgrade to 88.2.90 (#131)

* Upgrade to v88.2.40-pre

WPF - Add https scheme to default URL to workaround upstream issue
https://bitbucket.org/chromiumembedded/cef/issues/3079/cant-load-urls-without-scheme

* Net Core - Add AnyCPU Platform to projects/solution

* Net Core - Add RuntimeIdentifier based on PlatformTarget

- Set RuntimeIdentifier based on PlatformTarget (PlatformTarget isn't set of AnyCPU)
- Set SelfContained to false so as not to provide a Framework Dependant build (don't include the whole .net framework)

* WPF/WinForms - Change CefSharpBuildAction to Content

For testing of ClickOnce publish

* Net 5.0 - Update to include PublishSingleFile settings

- .Net 5.0 Publish Settings for PublishSingleFile
  https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file
  Defaults differ compared to .Net Core 3.1
- Set RollForward to Major so runs on newer runtime version
- Add net5.0-windows TargetFramework

* .Net 5.0 - Publish Single Exe Example

- Use the main application exe as the BrowserSubprocess when self publishing a .Net 5.0 exe
- Only the WPF and WinForms examples have been updated

https://github.com/cefsharp/CefSharp/issues/3407

* Upgrade to 88.2.90
This commit is contained in:
Alex Maitland 2021-03-05 12:15:53 +11:00 committed by GitHub
parent f65fe59122
commit 07049f5e62
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 311 additions and 69 deletions

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.87.1.13\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.87.1.13\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.87.1.13\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.87.1.13\build\cef.redist.x64.props')" />
<Import Project="..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.88.2.9\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.88.2.9\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.88.2.9\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.88.2.9\build\cef.redist.x64.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -87,16 +87,16 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="CefSharp, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.87.1.132\lib\net452\CefSharp.dll</HintPath>
<Reference Include="CefSharp, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.88.2.90\lib\net452\CefSharp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CefSharp.Core, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.87.1.132\lib\net452\CefSharp.Core.dll</HintPath>
<Reference Include="CefSharp.Core, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.88.2.90\lib\net452\CefSharp.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CefSharp.OffScreen, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.OffScreen.87.1.132\lib\net452\CefSharp.OffScreen.dll</HintPath>
<Reference Include="CefSharp.OffScreen, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.OffScreen.88.2.90\lib\net452\CefSharp.OffScreen.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
@ -117,8 +117,8 @@
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.targets')" />
<Target Name="CefSharpAfterBuildDebug" AfterTargets="AfterBuild">
<CallTarget Targets="CefSharpAfterBuildDiagnostic"/>
<CallTarget Targets="CefSharpAfterBuildDiagnostic" />
</Target>
<Import Project="..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.targets')" />
</Project>

View File

@ -7,15 +7,30 @@
<BaseOutputPath>bin.netcore\</BaseOutputPath>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks>
<RootNamespace>CefSharp.MinimalExample.OffScreen</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Platforms>x86;x64</Platforms>
<Platforms>x86;x64;AnyCPU</Platforms>
<!--
Run on a newer version of .Net if the specified version (.Net Core 3.1) is not installed
https://github.com/dotnet/docs/issues/12237
-->
<RollForward>Major</RollForward>
</PropertyGroup>
<PropertyGroup Condition="'$(PlatformTarget)' == 'x86'">
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x86</RuntimeIdentifier>
<SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>
<PropertyGroup Condition="'$(PlatformTarget)' == 'x64'">
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x64</RuntimeIdentifier>
<SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>
<ItemGroup>
@ -28,8 +43,12 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.OffScreen.NetCore" Version="87.1.132" />
<None Remove="app.config" />
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
<ItemGroup>
<PackageReference Include="CefSharp.OffScreen.NetCore" Version="88.2.90" />
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
</Project>

View File

@ -36,8 +36,8 @@ namespace CefSharp.MinimalExample.OffScreen
var dependencyCheck = true;
#if NETCOREAPP
//This should be fixed shortly.
#if NETCOREAPP || ANYCPU
//For .Net Core/.Net 5 this should be fixed as part of https://github.com/cefsharp/CefSharp/issues/3388
dependencyCheck = false;
#endif

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cef.redist.x64" version="87.1.13" targetFramework="net452" />
<package id="cef.redist.x86" version="87.1.13" targetFramework="net452" />
<package id="CefSharp.Common" version="87.1.132" targetFramework="net452" />
<package id="CefSharp.OffScreen" version="87.1.132" targetFramework="net452" />
<package id="cef.redist.x64" version="88.2.9" targetFramework="net452" />
<package id="cef.redist.x86" version="88.2.9" targetFramework="net452" />
<package id="CefSharp.Common" version="88.2.90" targetFramework="net452" />
<package id="CefSharp.OffScreen" version="88.2.90" targetFramework="net452" />
</packages>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.87.1.13\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.87.1.13\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.87.1.13\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.87.1.13\build\cef.redist.x64.props')" />
<Import Project="..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.88.2.9\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.88.2.9\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.88.2.9\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.88.2.9\build\cef.redist.x64.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@ -72,16 +72,16 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="CefSharp, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.87.1.132\lib\net452\CefSharp.dll</HintPath>
<Reference Include="CefSharp, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.88.2.90\lib\net452\CefSharp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CefSharp.Core, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.87.1.132\lib\net452\CefSharp.Core.dll</HintPath>
<Reference Include="CefSharp.Core, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.88.2.90\lib\net452\CefSharp.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CefSharp.WinForms, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.WinForms.87.1.132\lib\net452\CefSharp.WinForms.dll</HintPath>
<Reference Include="CefSharp.WinForms, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.WinForms.88.2.90\lib\net452\CefSharp.WinForms.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
@ -141,8 +141,8 @@
<None Include="Resources\chromium-256.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.targets')" />
<Target Name="CefSharpAfterBuildDebug" AfterTargets="AfterBuild">
<CallTarget Targets="CefSharpAfterBuildDiagnostic"/>
<CallTarget Targets="CefSharpAfterBuildDiagnostic" />
</Target>
<Import Project="..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.targets')" />
</Project>

View File

@ -17,7 +17,8 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Platforms>x86;x64</Platforms>
<ProjectGuid>{1D1D63D1-5257-4AA0-A284-7EF4574878CB}</ProjectGuid>
<ProjectGuid>{1D1D63D1-5257-4AA0-A284-7EF4574878CB}</ProjectGuid>
<StartupObject>CefSharp.MinimalExample.WinForms.Program</StartupObject>
</PropertyGroup>
<ItemGroup>
@ -30,11 +31,11 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.WinForms" Version="87.1.132" />
<PackageReference Include="CefSharp.WinForms" Version="88.2.90" />
</ItemGroup>
<Target Name="CefSharpAfterBuildDebug" AfterTargets="AfterBuild">
<CallTarget Targets="CefSharpAfterBuildDiagnostic"/>
<CallTarget Targets="CefSharpAfterBuildDiagnostic" />
</Target>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />

View File

@ -11,12 +11,41 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks>
<UseWindowsForms>true</UseWindowsForms>
<RootNamespace>CefSharp.MinimalExample.WinForms</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Platforms>x86;x64</Platforms>
<Platforms>x86;x64;AnyCPU</Platforms>
<!--
Run on a newer version of .Net if the specified version (.Net Core 3.1) is not installed
https://github.com/dotnet/docs/issues/12237
-->
<RollForward>Major</RollForward>
<StartupObject>CefSharp.MinimalExample.WinForms.Program</StartupObject>
</PropertyGroup>
<!--
.Net 5.0 Publish Settings for PublishSingleFile
https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file
Defaults differ compared to .Net Core 3.1
-->
<PropertyGroup Condition="'$(TargetFramework)' == 'net5.0-windows' AND '$(PublishSingleFile)' == 'true'">
<!-- Extract all files to disk at runtime -->
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
<!-- Include our native files in the resulting exe -->
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<StartupObject>CefSharp.MinimalExample.WinForms.ProgramPublishSingleFile</StartupObject>
</PropertyGroup>
<PropertyGroup Condition="'$(PlatformTarget)' == 'x86'">
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x86</RuntimeIdentifier>
<SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>
<PropertyGroup Condition="'$(PlatformTarget)' == 'x64'">
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x64</RuntimeIdentifier>
<SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>
<ItemGroup>
@ -29,8 +58,26 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.WinForms.NetCore" Version="87.1.132" />
<None Remove="app.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.WinForms.NetCore" Version="88.2.90" />
</ItemGroup>
<Target Name="CefSharpAfterBuildDiagnostic" AfterTargets="AfterBuild">
<Message Importance="high" Text="CefSharp After Build Diagnostic" />
<Message Importance="high" Text="RuntimeIdentifier = $(RuntimeIdentifier)" />
<Message Importance="high" Text="Platform = $(Platform)" />
<Message Importance="high" Text="PlatformName = $(PlatformName)" />
<Message Importance="high" Text="Platforms = $(Platforms)" />
<Message Importance="high" Text="PlatformTarget = $(PlatformTarget)" />
<Message Importance="high" Text="PlatformTargetAsMSBuildArchitecture = $(PlatformTargetAsMSBuildArchitecture)" />
<Message Importance="high" Text="TargetFramework = $(TargetFramework)" />
<Message Importance="high" Text="TargetFrameworkVersion = $(TargetFrameworkVersion)" />
<Message Importance="high" Text="NuGetProjectStyle = $(NuGetProjectStyle)" />
<Message Importance="high" Text="OutDir = $(OutDir)" />
</Target>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
</Project>

View File

@ -0,0 +1,60 @@
// Copyright © 2021 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
using CefSharp.WinForms;
using System;
using System.IO;
using System.Windows.Forms;
namespace CefSharp.MinimalExample.WinForms
{
/// <summary>
/// For .Net 5.0 Publishing Single File exe requires using your own applications executable to
/// act as the BrowserSubProcess. See https://github.com/cefsharp/CefSharp/issues/3407
/// for further details. <see cref="Program.Main(string[])"/> for the default main application entry point
/// </summary>
public class ProgramPublishSingleFile
{
[STAThread]
public static int Main(string[] args)
{
//To support High DPI this must be before CefSharp.BrowserSubprocess.SelfHost.Main so the BrowserSubprocess is DPI Aware
Cef.EnableHighDPISupport();
var exitCode = CefSharp.BrowserSubprocess.SelfHost.Main(args);
if (exitCode >= 0)
{
return exitCode;
}
var settings = new CefSettings()
{
//By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data
CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache"),
BrowserSubprocessPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
};
//Example of setting a command line argument
//Enables WebRTC
// - CEF Doesn't currently support permissions on a per browser basis see https://bitbucket.org/chromiumembedded/cef/issues/2582/allow-run-time-handling-of-media-access
// - CEF Doesn't currently support displaying a UI for media access permissions
//
//NOTE: WebRTC Device Id's aren't persisted as they are in Chrome see https://bitbucket.org/chromiumembedded/cef/issues/2064/persist-webrtc-deviceids-across-restart
settings.CefCommandLineArgs.Add("enable-media-stream");
//https://peter.sh/experiments/chromium-command-line-switches/#use-fake-ui-for-media-stream
settings.CefCommandLineArgs.Add("use-fake-ui-for-media-stream");
//For screen sharing add (see https://bitbucket.org/chromiumembedded/cef/issues/2582/allow-run-time-handling-of-media-access#comment-58677180)
settings.CefCommandLineArgs.Add("enable-usermedia-screen-capturing");
//Don't perform a dependency check
Cef.Initialize(settings, performDependencyCheck: false);
var browser = new BrowserForm();
Application.Run(browser);
return 0;
}
}
}

View File

@ -43,8 +43,8 @@ namespace CefSharp.MinimalExample.WinForms
var dependencyCheck = true;
#if NETCOREAPP
//This should be fixed shortly.
#if NETCOREAPP || ANYCPU
//For .Net Core/.Net 5 this should be fixed as part of https://github.com/cefsharp/CefSharp/issues/3388
dependencyCheck = false;
#endif

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cef.redist.x64" version="87.1.13" targetFramework="net452" />
<package id="cef.redist.x86" version="87.1.13" targetFramework="net452" />
<package id="CefSharp.Common" version="87.1.132" targetFramework="net452" />
<package id="CefSharp.WinForms" version="87.1.132" targetFramework="net452" />
<package id="cef.redist.x64" version="88.2.9" targetFramework="net452" />
<package id="cef.redist.x86" version="88.2.9" targetFramework="net452" />
<package id="CefSharp.Common" version="88.2.90" targetFramework="net452" />
<package id="CefSharp.WinForms" version="88.2.90" targetFramework="net452" />
</packages>

View File

@ -33,13 +33,19 @@ namespace CefSharp.MinimalExample.Wpf
var dependencyCheck = true;
#if NETCOREAPP
//This should be fixed shortly.
#if NETCOREAPP || ANYCPU
//For .Net Core/.Net 5 this should be fixed as part of https://github.com/cefsharp/CefSharp/issues/3388
dependencyCheck = false;
#endif
//Perform dependency check to make sure all relevant resources are in our output directory.
Cef.Initialize(settings, performDependencyCheck: dependencyCheck, browserProcessHandler: null);
//Example of checking if a call to Cef.Initialize has already been made, we require this for
//our .Net 5.0 Single File Publish example, you don't typically need to perform this check
//if you call Cef.Initialze within your WPF App constructor.
if (!Cef.IsInitialized)
{
//Perform dependency check to make sure all relevant resources are in our output directory.
Cef.Initialize(settings, performDependencyCheck: dependencyCheck, browserProcessHandler: null);
}
}
#if ANYCPU

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.87.1.13\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.87.1.13\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.87.1.13\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.87.1.13\build\cef.redist.x64.props')" />
<Import Project="..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.88.2.9\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.88.2.9\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.88.2.9\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.88.2.9\build\cef.redist.x64.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -93,16 +93,16 @@
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="CefSharp, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.87.1.132\lib\net452\CefSharp.dll</HintPath>
<Reference Include="CefSharp, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.88.2.90\lib\net452\CefSharp.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CefSharp.Core, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.87.1.132\lib\net452\CefSharp.Core.dll</HintPath>
<Reference Include="CefSharp.Core, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Common.88.2.90\lib\net452\CefSharp.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="CefSharp.Wpf, Version=87.1.132.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Wpf.87.1.132\lib\net452\CefSharp.Wpf.dll</HintPath>
<Reference Include="CefSharp.Wpf, Version=88.2.90.0, Culture=neutral, PublicKeyToken=40c4b6fc221f4138">
<HintPath>..\packages\CefSharp.Wpf.88.2.90\lib\net452\CefSharp.Wpf.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
@ -178,8 +178,8 @@
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.87.1.132\build\CefSharp.Common.targets')" />
<Target Name="CefSharpAfterBuildDebug" AfterTargets="AfterBuild">
<CallTarget Targets="CefSharpAfterBuildDiagnostic"/>
<CallTarget Targets="CefSharpAfterBuildDiagnostic" />
</Target>
<Import Project="..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.88.2.90\build\CefSharp.Common.targets')" />
</Project>

View File

@ -11,13 +11,42 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks>
<UseWPF>true</UseWPF>
<RootNamespace>CefSharp.MinimalExample.Wpf</RootNamespace>
<ApplicationIcon>chromium-256.ico</ApplicationIcon>
<ApplicationManifest>app.manifest</ApplicationManifest>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Platforms>x86;x64</Platforms>
<Platforms>x86;x64;AnyCPU</Platforms>
<!--
Run on a newer version of .Net if the specified version (.Net Core 3.1) is not installed
https://github.com/dotnet/docs/issues/12237
-->
<RollForward>Major</RollForward>
<StartupObject>CefSharp.MinimalExample.Wpf.App</StartupObject>
</PropertyGroup>
<PropertyGroup Condition="'$(PlatformTarget)' == 'x86'">
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x86</RuntimeIdentifier>
<SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>
<PropertyGroup Condition="'$(PlatformTarget)' == 'x64'">
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)' == ''">win-x64</RuntimeIdentifier>
<SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
</PropertyGroup>
<!--
.Net 5.0 Publish Settings for PublishSingleFile
https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file
Defaults differ compared to .Net Core 3.1
-->
<PropertyGroup Condition="'$(TargetFramework)' == 'net5.0-windows' AND '$(PublishSingleFile)' == 'true'">
<!-- Extract all files to disk at runtime -->
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
<!-- Include our native files in the resulting exe -->
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<StartupObject>CefSharp.MinimalExample.Wpf.ProgramPublishSingleFile</StartupObject>
</PropertyGroup>
<ItemGroup>
@ -32,7 +61,11 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf.NetCore" Version="87.1.132" />
<None Remove="App.config" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CefSharp.Wpf.NetCore" Version="88.2.90" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.19" />
</ItemGroup>

View File

@ -41,7 +41,7 @@
</Grid>
<Border Grid.Row="1" BorderBrush="Gray" BorderThickness="0,1">
<wpf:ChromiumWebBrowser x:Name="Browser"
Address="www.google.com">
Address="https://www.google.com">
<behaviors:Interaction.Behaviors>
<behaviours:HoverLinkBehaviour x:Name="HoverLinkBehaviour"/>
</behaviors:Interaction.Behaviors>

View File

@ -0,0 +1,62 @@
// Copyright © 2021 The CefSharp Authors. All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
using CefSharp.Wpf;
using System;
using System.IO;
namespace CefSharp.MinimalExample.Wpf
{
/// <summary>
/// For .Net 5.0 Publishing Single File exe requires using your own applications executable to
/// act as the BrowserSubProcess. See https://github.com/cefsharp/CefSharp/issues/3407
/// for further details. <see cref="Program.Main(string[])"/> for the default main application entry point
/// </summary>
public class ProgramPublishSingleFile
{
[STAThread]
public static int Main(string[] args)
{
//To support High DPI this must be before CefSharp.BrowserSubprocess.SelfHost.Main so the BrowserSubprocess is DPI Aware
Cef.EnableHighDPISupport();
var exitCode = CefSharp.BrowserSubprocess.SelfHost.Main(args);
if (exitCode >= 0)
{
return exitCode;
}
var settings = new CefSettings()
{
//By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data
CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache"),
BrowserSubprocessPath = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
};
//Example of setting a command line argument
//Enables WebRTC
// - CEF Doesn't currently support permissions on a per browser basis see https://bitbucket.org/chromiumembedded/cef/issues/2582/allow-run-time-handling-of-media-access
// - CEF Doesn't currently support displaying a UI for media access permissions
//
//NOTE: WebRTC Device Id's aren't persisted as they are in Chrome see https://bitbucket.org/chromiumembedded/cef/issues/2064/persist-webrtc-deviceids-across-restart
settings.CefCommandLineArgs.Add("enable-media-stream");
//https://peter.sh/experiments/chromium-command-line-switches/#use-fake-ui-for-media-stream
settings.CefCommandLineArgs.Add("use-fake-ui-for-media-stream");
//For screen sharing add (see https://bitbucket.org/chromiumembedded/cef/issues/2582/allow-run-time-handling-of-media-access#comment-58677180)
settings.CefCommandLineArgs.Add("enable-usermedia-screen-capturing");
//Don't perform a dependency check
//By default this example calls Cef.Initialzie in the CefSharp.MinimalExample.Wpf.App
//constructor for purposes of providing a self contained single file example we call it here.
//You could remove this code and use the CefSharp.MinimalExample.Wpf.App example if you
//set BrowserSubprocessPath to an absolute path to your main application exe.
Cef.Initialize(settings, performDependencyCheck: false);
var app = new App();
app.InitializeComponent();
return app.Run();
}
}
}

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cef.redist.x64" version="87.1.13" targetFramework="net452" />
<package id="cef.redist.x86" version="87.1.13" targetFramework="net452" />
<package id="CefSharp.Common" version="87.1.132" targetFramework="net452" />
<package id="CefSharp.Wpf" version="87.1.132" targetFramework="net452" />
<package id="cef.redist.x64" version="88.2.9" targetFramework="net452" />
<package id="cef.redist.x86" version="88.2.9" targetFramework="net452" />
<package id="CefSharp.Common" version="88.2.90" targetFramework="net452" />
<package id="CefSharp.Wpf" version="88.2.90" targetFramework="net452" />
<package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.19" targetFramework="net452" />
</packages>

View File

@ -11,32 +11,46 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CefSharp.MinimalExample.Off
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Debug|x64.ActiveCfg = Debug|x64
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Debug|x64.Build.0 = Debug|x64
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Debug|x86.ActiveCfg = Debug|x86
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Debug|x86.Build.0 = Debug|x86
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Release|Any CPU.Build.0 = Release|Any CPU
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Release|x64.ActiveCfg = Release|x64
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Release|x64.Build.0 = Release|x64
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Release|x86.ActiveCfg = Release|x86
{4E27910D-3B6C-41C1-84B4-A05C58EE8AE8}.Release|x86.Build.0 = Release|x86
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Debug|Any CPU.Build.0 = Debug|Any CPU
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Debug|x64.ActiveCfg = Debug|x64
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Debug|x64.Build.0 = Debug|x64
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Debug|x86.ActiveCfg = Debug|x86
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Debug|x86.Build.0 = Debug|x86
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Release|Any CPU.ActiveCfg = Release|Any CPU
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Release|Any CPU.Build.0 = Release|Any CPU
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Release|x64.ActiveCfg = Release|x64
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Release|x64.Build.0 = Release|x64
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Release|x86.ActiveCfg = Release|x86
{83E2C9C4-2967-4A49-8B2A-D31D33DCFB03}.Release|x86.Build.0 = Release|x86
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Debug|x64.ActiveCfg = Debug|x64
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Debug|x64.Build.0 = Debug|x64
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Debug|x86.ActiveCfg = Debug|x86
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Debug|x86.Build.0 = Debug|x86
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Release|Any CPU.Build.0 = Release|Any CPU
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Release|x64.ActiveCfg = Release|x64
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Release|x64.Build.0 = Release|x64
{AB1B7B81-D472-43B2-AFE3-DE5D1B22B9CE}.Release|x86.ActiveCfg = Release|x86

View File

@ -1,4 +1,4 @@
SET cefsharpversion=87.1.132
SET cefsharpversion=88.2.90
..\nuget restore CefSharp.MinimalExample.sln