기존의 VS2008 기반 C++/CLI 프로젝트 (특히 CefSharp)를 VS2012로 업그레이드하고 그 사이에 몇 가지 문제에 직면하고 있습니다. 컴파일을 위해 VS2008에 의존하지 않기 위해 .NET Framework 4.0을 대상으로 프로젝트를 업그레이드했습니다.가짜 TypeLoadException이 발생하는 이유 " 조립품에서 <baz> 구현이 없습니다"?
방법 '에서는 SetCursor'형태로 "CefSharp.Wpf.WebView '
모두 잘 프로젝트가 제대로 컴파일,하지만 난 그것을 실행하고 웹보기 인스턴스를 만들려고 할 때, 나는 다음과 같은 TypeLoadException이를 얻을 수 "CefSharp.Wpf, Version = 1.25.0.35385, Culture = neutral, PublicKeyToken = null '구현이 없습니다.": "CefSharp.Wpf.WebView"
분명히 WebView .h와 WebView.cpp는 매우 긴밀하게 관련되어 있습니다 (관련 부분) :
public ref class WebView sealed : public ContentControl, IRenderWebBrowser
{
public:
virtual void SetCursor(CefCursorHandle cursor);
}
및 구현 :
void WebView::SetCursor(CefCursorHandle cursor)
{
SafeFileHandle^ handle = gcnew SafeFileHandle((IntPtr)cursor, false);
Dispatcher->BeginInvoke(DispatcherPriority::Render,
gcnew Action<SafeFileHandle^>(this, &WebView::SetCursor), handle);
}
CefCursorHandle는 다음과 같이 정의된다 :
#define CefCursorHandle cef_cursor_handle_t
... 그리고 cef_cursor_handle_t는 다음과 같이 정의된다 :
#define cef_cursor_handle_t HCURSOR
즉 windef.h 구조.
인터페이스 (IRenderWebBrowser) btw. 이와 같은 방법을 정의합니다. 한 지점에서
public interface class IRenderWebBrowser : IWebBrowser
{
public:
void SetCursor(CefCursorHandle cursor);
}
, 나는 문제가 예에서 볼 수 있듯이 "const가 아닌"문제가 있지만, 반군 CONST 지정자가없는 대 "CONST"에 관한 생각했다. :-(
내가 여기에 누락 명백한 잡았다는 무엇? 나는 this post을 통해 미끄러 져하지만 정말 나에게 도움이되지 않았다.
가 나는 또한 매달려 어셈블리의 구/여러 버전의 가능성에 대해 생각 어딘가에서 어셈블리 버전을 부딪 치면서 올바른 버전이로드되었는지 확인했습니다. 어셈블리에서도 ILSpy를 사용하여이 메서드를 확인했습니다. 그러나 메서드 서명은
입니다.public unsafe void SetCursor(HICON__* cursor)
안전하지 않은 부분 또는 매개 변수 (HICON __ *)가 정확하지 않을 수 있습니다. C#/CLR 컨텍스트의 essible? (C# 어셈블리에서 유형을 인스턴스화하려고합니다.) C++/CLI가 실제로 내 전문 분야가 아니라는 것을 인정해야합니다. :-)
사람이 누구입니까?
(자세한 내용을 자세히보고 싶다면 https://github.com/perlun/CefSharp/에서 프로젝트를 복제/조사 할 수 있습니다.이 자료는 vs2012 분기에 있습니다.)