2016-08-03 47 views
0

Ich habe Probleme CefSharp (WPF) in einem AddIn für Revit Einbetten:Embedding CefSharp in einem Plug-In für Revit

  1. My Addin kann nicht von Revit geladen werden, wenn alle Dateien im Revit Ordner neben stellen mit den Haupt-exe. Das ist nicht gut, weil es mit allen Revit-Dateien verwechselt. Ich habe versucht, die Umgebungsvariable PATH auf meinen privaten Ordner zu setzen, aber es funktioniert nicht. Irgendwelche Ideen, wie ich meine Bibliotheken ladbar machen kann? Ich bin kein Experte für .NET Assemblies etc ...
  2. CEFSharp im Addin rendert Webseiten, aber sie flackern gelegentlich. Gibt es eine Flagge zu setzen?
  3. CEFSharp im Addin weigert sich, WebGL zu rendern. Irgendeine Flagge zu setzen?

Hinweis: außerhalb von Revit arbeitet CEFSharp fein (versuchte MinimalExample.WPF)

Antwort

1

Zum ersten Teil Ihrer Frage, die Sie benötigen, um das AppDomain.AssemblyResolve Ereignis abonnieren und zeigen das Programm auf Der Speicherort Ihrer DLL-Dateien. Die Alternative besteht darin, die DLLs manuell in der IExternalApplication.OnStartup-Methode mit dem Assembly.Load-Befehl zu laden.

Für weitere Informationen über das AssemblyResolve Ereignis finden Sie hier: https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve(v=vs.110).aspx

0

ich getan gerade genau das Gleiche und es funktioniert ziemlich gut

Ich habe eine andockbare CEF Fenster (WPF) in Revit2018 durch folgende DockableDialogs Probe in Revit 2018,2

SDK finden Sie hier: http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=2484975)

ich bin derzeit mit CEFSharp.Wpf Version 57.0.0.0

Und ja, sollten Sie Cef Dritte wie folgt neu zuordnen:

CefSettings settings = new CefSettings(); settings.CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache"); string rootPath = FileUtility.GetAssemblyPath(); settings.BrowserSubprocessPath = Path.Combine(rootPath, "CefSharp.BrowserSubprocess.exe"); settings.LocalesDirPath = Path.Combine(rootPath, "locales"); settings.ResourcesDirPath = Path.Combine(rootPath); Cef.EnableHighDPISupport(); //settings.CefCommandLineArgs.Add("disable-gpu", "1"); Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);

Vergessen Sie nicht, rufen Cef.Shutdown(); am ende auch