CefSharp有很多依赖和库需要运行。构建文件夹混乱。如何将所需的.dll和.pak依赖项移动到子文件夹?如何将CefSharp依赖项和文件移动到子目录?
1
A
回答
5
首先,为了使一切更容易,我建议向Visual Studios添加一个文件夹,并将所有必需的文件放在那里。如果您在资源管理器中该文件夹,单击“显示所有文件”解决方案资源管理解决方案上面:
这右击该文件夹(S)和文件(县)要包括和选择'包含在项目中'。
一定要包括所有需要的CefSharp文件 - more info on github
你应该用一个文件树,看起来类似于这样结束了:
一定要改变“复制到输出Directy”来在所有文件的属性下“始终复制”。
现在的代码。你的解决方案应该有一个'App.config'文件(如果没有,谷歌周围,你会找到方法来产生一个)。
你要到一个新的assemblyBinding
和probing
元素添加进去(MSDN - probing)
的probing
元素告诉它应该在其他文件夹图书馆的窗户。因此,我们可以通过这种方式加载CefSharp所需的所有.dll文件。
实施例的App.config:
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="resources/cefsharp" />
</assemblyBinding>
</runtime>
</configuration>
注意:路径相.exe文件的位置。
现在需要处理.dll文件,但我们现在需要更改CefSharp的设置,以便它知道在哪里查找.pak文件以及语言环境和BrowserSubprocess.exe。
为此,我们将定义所有文件路径并将其手动分配给CefSharp。
下面是它应该是什么样子的例子:
// File location variables
static string lib, browser, locales, res;
[STAThread]
static void Main()
{
// Assigning file paths to varialbles
lib = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\libcef.dll");
browser = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\CefSharp.BrowserSubprocess.exe");
locales = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\locales\");
res = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\");
var libraryLoader = new CefLibraryHandle(lib);
bool isValid = !libraryLoader.IsInvalid;
Console.WriteLine($"Library is valid: {isValid}");
LoadForm();
libraryLoader.Dispose();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private static void LoadForm()
{
var settings = new CefSettings();
settings.BrowserSubprocessPath = browser;
settings.LocalesDirPath = locales;
settings.ResourcesDirPath = res;
Cef.Initialize(settings, shutdownOnProcessExit: false, performDependencyCheck: false);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new CefWinForm());
}
所有这一切都是改编自:https://github.com/cefsharp/CefSharp/issues/601
原来的问题是难以完全遵循并获得正常工作,所以我想我会分享以防将来遇到类似麻烦的知识。
注意:Visual Studio仍然会在输出目录中包含.dll,.pak,.xml等,但是您可以通过从主文件夹中删除依赖关系来检查构建是否成功(将资源文件夹)。
相关问题
- 1. CMake子目录依赖项
- 2. 将文件组移动到子目录
- 3. 将文件移动到子目录
- 4. Gradle - 如何将目录/ jar文件库从根项目引用到子项目以获得依赖关系
- 5. 如何将SQLite库文件移动到.NET项目中的子目录输出?
- 6. 如何将cmake项目移动到子目录?
- 7. 在Eclipse中,如何将不依赖库的项目文件移动到更抽象的项目?
- 8. 如何递归地将工件和所有依赖项下载到目录中?
- 9. 如何将单个maven依赖项的jar文件复制到dest目录中?
- 10. Gradle:依赖Maven的子项目(子项目),依赖父项中的dependencyManagement项目
- 11. 如何下载所有依赖项和包到目录
- 12. 如何移动文件和目录
- 13. 如何将wordpress从根目录移动到子目录?
- 14. 如何将目录移动到Linux的子目录中
- 15. 将maven项目的依赖项复制到特定文件夹
- 16. 将依赖项添加到Android项目
- 17. 生成文件和项目目录结构中的自动依赖关系
- 18. Powershell基于文件名将文件从目录移动到子目录
- 19. 递归从子目录将文件移动到文件夹中的父目录
- 20. 如何将gradle添加到子项目根项目作为依赖关系?
- 21. 将文件从目录移动到子目录,除了一个目录
- 22. cmake的子项目依赖
- 23. 将文件移动到一个目录
- 24. 将文件移动到目录
- 25. iPhone sdk - 将文件移动到目录
- 26. 将文件移动到目录
- 27. 如何将子文件夹与文件移动到另一个目录?
- 28. 如何将文件从子文件夹移动到其父目录(unix,终端)
- 29. 移动文件到目录
- 30. 如何从Visual Studio中将项目依赖项/引用从一个项目继承到依赖项目
非常有帮助的教程,谢谢。 然而,你错过了'CefLibraryHandle'的定义,你(需要它的人)可以在这里找到它: https:// github。COM/cefsharp/CefSharp /斑点/主/ CefSharp/CefLibraryHandle.cs – Jhollman