2016-09-08 1 views

답변

5

먼저 모든 것을 쉽게하기 위해 Visual Studio에 폴더를 추가하고 거기에 필요한 모든 파일을 넣는 것이 좋습니다. 당신이 탐색기에서이 폴더를 만들 경우, 솔루션 탐색기에서 솔루션 위의 '모든 파일 표시'를 클릭 :

enter image description here

이 오른쪽 폴더 (들) 및 파일 (들)을 포함하고 선택하고자을 클릭 '프로젝트에 포함하십시오.'

enter image description here

에 '출력 Directy에 복사'를 변경해야합니다 :이와 비슷한 파일 트리와 끝까지해야 more info on github
-

모든 필요한 CefSharp 파일을 포함해야합니다 모든 파일의 속성에서 '항상 복사'를 선택하십시오. 이제 코드

enter image description here

. 솔루션에는 'App.config'파일이 있어야합니다 (그렇지 않은 경우 Google을 사용하면 생성 방법을 찾을 수 있습니다).

당신은 probing 요소가 라이브러리에 추가 폴더에 보일 것 창을 알려줍니다 그것 ( MSDN - probing)
에 새 assemblyBindingprobing 요소를 추가 할 것입니다. 따라서 우리는 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

매우 유용한 튜토리얼입니다. 감사합니다. 'CefLibraryHandle'정의가 누락되었지만 필요한 사용자는 누구나 여기에서 찾을 수 있습니다. https : // github.co.kr/cefsharp/CefSharp/blob/master/CefSharp/CefLibraryHandle.cs – Jhollman

관련 문제