将CefSharp嵌入到Revit的插件中

时间:2016-08-03 16:10:34

标签: .net wpf webgl cefsharp revit-api

我遇到了将CefSharp(WPF)嵌入到Revit插件中的问题:

  1. 除非所有文件都与Rev.exe一起位于Revit文件夹中,否则Revin无法加载我的插件。这不好,因为它与所有Revit文件混淆。我试图将PATH env变量设置为我的私人文件夹,但它不起作用。任何想法如何使我的库可加载?我不是.NET程序集的专家......
  2. 插件中的CEFSharp呈现网页,但偶尔闪烁。有没有要设置的旗帜?
  3. 插件中的CEFSharp拒绝呈现WebGL。要设置的任何标志吗?
  4. 注意:在Revit之外,CEFSharp工作正常(试过MinimalExample.WPF)

2 个答案:

答案 0 :(得分:1)

对于问题的第一部分,您需要订阅AppDomain.AssemblyResolve事件并将程序指向DLL文件的位置。 另一种方法是使用Assembly.Load命令在IExternalApplication.OnStartup方法中手动加载DLL。

有关AssemblyResolve事件的更多信息,请参阅此处:https://msdn.microsoft.com/en-us/library/system.appdomain.assemblyresolve(v=vs.110).aspx

答案 1 :(得分:0)

我刚刚完成了同样的事情而且效果很好

通过Revit 2018.2中的DockableDialogs示例,我在Revit2018中有一个可停靠的CEF窗口(WPF)

SDK在此处找到:http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=2484975

我目前正在使用CEFSharp.Wpf版本57.0.0.0

是的,你应该像这样重新映射Cef第三方:

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);

别忘了打电话给Cef.Shutdown();最后还