2016-12-25 1 views
3

클라이언트 컴퓨터에 배포 된 C# 콘솔 응용 프로그램이 있습니다. 클라이언트 컴퓨터에 배포하는 동안 System.TypeInitializationException이 발생합니다.필수 Cef/CefSharp 종속성을 찾을 수 없습니다.

는 debug.log를, 나는 다음과 같은 오류를 얻을 :

Unable to locate required Cef/CefSharp dependencies: 
Missing:CefSharp.BrowserSubprocess.exe 
Missing:CefSharp.BrowserSubprocess.Core.dll 
Missing:CefSharp.Core.dll 
Missing:CefSharp.dll 
Missing:icudtl.dat 
Missing:libcef.dll 
Executing Assembly Path:C:\myapp 

문제는 모든 파일이 C에 존재하는 것입니다 : (여기에 지정)의 MyApp \ 디렉토리. 따라서 왜 이러한 파일이로드되지 않는지 잘 모르겠습니다. 또한 msvcp120.dll, msvcr120.dll, vccorlib120.dll은 c : \ myapp 디렉토리에 포함되어 있습니다.

+0

참조 http://stackoverflow.com/help/mcve – amaitland

+0

종속성 검사를 비활성화 할 수 있습니다. Cef.Initialize의 매개 변수입니다. – amaitland

+0

@ amitland 다시 시뮬레이션하기 위해 내 코드를 되 돌린 후 문제가 사라져서 아마도 환경과 관련되었을 것입니다. . –

답변

1

같은 문제가있었습니다. 첫째 나는 Cef.Initialize() 함수 만 작동하지 않는 것을보고, 그래서 나는이 같은 performDependencyCheck 옵션을 사용 :

Cef.Initialize(BrowserSettings, performDependencyCheck: true, browserProcessHandler: null); 

(이 예 https://github.com/cefsharp/CefSharp.MinimalExample/blob/master/CefSharp.MinimalExample.OffScreen/Program.cs에 따라) 나는 나는 보았다 일부 파일이 없습니다.

그 후에도 아무 것도 놓치지 않지만 오류가 계속 나타납니다. 그래서 performDependencyCheck 옵션을 비활성화하고 일했다 (같은 :.

Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null); 

그것은 당신을 도울 것입니다 희망

+0

55.0.0 패키지는 gitlink를 지원하므로 개발자의 컴퓨터에서 소스를 쉽게 디버깅 할 수 있습니다. https : // github.co.kr/GitTools/GitLink # gitlink – amaitland

+0

performDependencyCheck도 사용하지 않도록 유혹을 받았지만 메인 프레임에서 JavaScript를 실행할 수 없다는 것을 깨달았습니다. 그래서 나는 그렇게하지 않을 것입니다. 내 대답을 대신 참조하십시오. –

2

으로 많은 사람들이, 내가 설정은 "모든 CPU"로 공식 Quick Start article의 단계를 따라 갔다. performDependencyCheck가있을 때 구성 및 I 누락 의존성과 같은 문제가 있었다.

기사가 실제로 불완전하기 때문이다!은 "모든 CPU가"구성이 작동하려면

, 모든 따라야합니다 Feature Request - Add AnyCPU Support #1714의 단계 (특히 마지막 하나!) : 프로젝트 속성에서 Prefer 32bit을 설정 https://msdn.microsoft.com/en-us/library/4191fzwb.aspx

  • 에 설명 된대로

    01 아래 23,516,

    예 :

    [STAThread] 
    public static void Main() 
    { 
        var settings = new CefSettings(); 
        settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe"; 
    
        Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null); 
    
        var browser = new BrowserForm(); 
        Application.Run(browser); 
    } 
    

    참고 :이 코드를 사용할 때, 나는 아직도 지금 정품 오류를보고하기 때문에 당신이 performDependencyCheck: true를 사용하는 권합니다.

  • +1

    performDependencyCheck를 true로 두었습니다. –

    +1

    맞습니다. performDependencyCheck는 "true"로 두어야합니다. 방금 티켓에서 예를 인용했습니다. 나는 대답을하지 않을 것이다. 감사 –