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