如何在应用程序中包含Visual C ++ Redistribution

时间:2018-03-07 01:04:59

标签: c# c++ visual-studio

我在Visual Studio 2010中编写了一个大型的C#4.0应用程序。前段时间我添加了CEF框架(版本43.0.0.0),以便在我的WinForms应用程序中使用Web浏览器。

如果我从Visual Studio运行我的应用程序,则浏览器可以正常运行。但是,在使用ClickOnce部署我的应用程序时,它会抛出以下错误:"无法加载文件或程序集' CefSharp.Core.dll'或其中一个依赖项。找不到指定的模块。"虽然所有CEF文件都存在于bin \ Debug文件夹中。事实上,我在GitHub上找到了一个页面,列出了哪些文件是必需的,仔细检查确认所有文件都存在于可执行文件夹中。

A list of required files can be found here:

上述文章中提到的一点是,Visual C ++ Redist文件是必需的,并询问问题6.如何在目标应用程序中包含Visual Studio C ++ 2012/2013可再发行组件?

具体说明CefSharp版本43.0.0及以下版本需要VC ++ Version 2012.因此,我下载了vcredist_x86.exe(2012版) 我在Microsoft SDKs文件夹中创建了package.xml和product.xml Bootstrapper文件。我将这些包含在Visual Studio 2010的“发布”屏幕中作为先决条件。

但是,在ClickOnce部署和尝试启动CEF Web浏览器时,它会立即抛出异常"无法加载文件或程序集' CefSharp.Core.dll'或其中一个依赖项。找不到指定的模块。"

我不知道该怎么做,以使浏览器在我的开发环境之外工作,即最终用户成功使用。 我已经完成了我在线发现的所有步骤,包括Stackoverflow和Github上的CefSharp。还有什么需要让这个工作?

请帮忙!

1 个答案:

答案 0 :(得分:0)

我添加这个附录,以防任何使用CefSharp的人遇到同样的问题,即"无法加载文件或程序集' CefSharp.Core.dll'或其中一个依赖项。找不到指定的模块。"。事实证明这是一个ClickOnce问题。 ClickOnce包括所有"托管"资源,但不包括非托管资源,即cef.pak,cef_100_percent.pak,d3dcompiler,libcef.dll,icudtl.dat等。

如果我右键单击“引用”并尝试浏览这些资源以添加它们,Visual Studio会抱怨它们不受管理,并且不允许添加它们。

使用Microsoft ClickOnce and Deployment论坛后,建议我右键单击该项目,添加>现有项目并添加它们。然后将他们的Build Action设置为" Content"并复制到输出目录到"始终复制。"

这允许资源显示在“发布”选项卡上的“应用程序文件...”中。在另一次ClickOnce部署之后,启动Web浏览器成功。没有更多关于丢失文件的投诉。