感谢巴里对此的回答,这对我帮助很大。我在下面使用他的答案,但使用 Visual Studio 2015 更新它以适用于最新的 CEF。
注意:我只构建/定位 x86 平台。您可能需要在下面的复制命令中更改或包含 x64 以满足您的需要。
安装 CefSharp
配置构建
- 为了让 CefSharp DLL 复制到我们的构建文件夹中......我认为对于 CefSharp 的更高版本不再需要这样做。我发现我不需要任何“构建后事件命令行”xcopy 东西来让 Click-Once 将其发送出去。(是的,DevTools 也可以!)
处理 Visual C++ 2012 运行时文件
在这一点上,一切都应该建立。要使用 ClickOnce 发布应用程序,我们需要它来推送所有 CEF DLL。您可以相应地调整它...
确保使用 ClickOnce 部署 CEF 和 C++ 运行时文件
- 在 Visual Studio 中右键单击您的项目,然后选择“卸载项目”。
- 右键单击并选择以编辑 csproj 文件。
在结束标记之前添加以下内容:
<!-- BEGIN: CUSTOM ITEM GROUP INCLUDES INTO THE PROJECT (SO CLICK-ONCE PUBLISHES THEM) -->
<ItemGroup>
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\**\*" Exclude="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\x86\**\*;$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\locales\**\*.pak">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\**\en-GB.*;$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\**\en-US.*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(SolutionDir)packages\cef.redist.x86.3.2704.1432\CEF\x86\**\*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(SolutionDir)packages\CefSharp.Common.51.0.0\CefSharp\x86\**\CefSharp.BrowserSubprocess.*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(ProjectDir)lib\Microsoft.VC120.CRT\**\*">
<Link>%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Content>
</ItemGroup>
<!-- END: CUSTOM ITEM GROUP INCLUDES INTO THE PROJECT (SO CLICK-ONCE PUBLISHES THEM) -->
这会将 cef 文件夹中的所有内容添加到项目中,并确保 C++ 二进制文件在部署时复制到项目的根目录。设置为 false 您将看不到解决方案资源管理器中的项目。
- 记住:我只是在构建/定位 x86 平台。您可能需要在下面的复制命令中更改或包含 x64 以满足您的需要。
发布
现在,如果您发布您的应用程序,它应该会复制所有必需的文件和文件夹。
(额外信息)支持下面的旧操作系统信息
如果您需要在较旧的机器(XP 和 Vista)上使用 CefSharp,只需使用较旧的 v47.0.0 版本通过 NuGet 安装 CefSharp.Wpf,并将您的 .NET 目标更改为 .NET 4.0 客户端配置文件。
Chromium 在 2016 年 4 月结束了对 XP 和 Vista 的支持,CefSharp 版本 47(或大约版本)仍然支持它。
关于 XP 的问题和修复的另一个说明:
XP 部署存在 Chromium 问题。以下是描述修复的文章,以及为 JBCB 部署修复的步骤。
这是文章的链接:
https ://bitbucket.org/chromiumembedded/cef/issues/1787
...在其中您将看到下载“dbghelp.dll”的参考。下载并解压。
您可以采用如下所示的安装后方法,或选择将 DLL 与您发布的其他文件一起包含在内。我选择不部署额外的 DLL,只在 XP 机器上手动部署(我们只有少数)。
采取这些步骤来修复 XP 机器上的部署:
- 在 XP 机器上安装 CefSharp 浏览器(通过 Click-Once)
- 复制“dbghelp.dll”
- 将其粘贴到 XP 机器上的本地安装目录中(按照上一个链接中的说明:在“libcef.dll”文件旁边)。
注意:对于单击一次安装,将位于此位置下的子文件夹中:
C:\Documents and Settings\<UserName>\Local Settings\Apps\2.0\<auto-gen ostificated ID>