【问题标题】:Embedding CefSharp in a plugin for Revit在 Revit 插件中嵌入 CefSharp
【发布时间】:2018-01-19 04:01:43
【问题描述】:

我在 Revit 插件中嵌入 CefSharp (WPF) 时遇到问题:

  1. Revit 无法加载我的插件,除非所有文件都与主 exe 一起位于 Revit 文件夹中。这不好,因为它会混淆所有 Revit 文件。我试图将 PATH 环境变量设置为我的私人文件夹,但它不起作用。任何想法如何使我的库可加载?我不是 .NET 程序集等方面的专家...
  2. 插件中的 CEFSharp 呈现网页,但它们偶尔会闪烁。有什么要设置的标志吗?
  3. 插件中的 CEFSharp 拒绝呈现 WebGL。有什么要设置的标志吗?

注意:在 Revit 之外,CEFSharp 工作正常(尝试过 MinimalExample.WPF)

【问题讨论】:

    标签: .net wpf webgl cefsharp revit-api


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我刚刚做了同样的事情,效果很好

      按照 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();最后也是

      【讨论】:

        猜你喜欢
        • 2019-03-11
        • 1970-01-01
        • 2019-03-03
        • 2017-03-30
        • 2021-09-20
        • 2013-10-18
        • 2017-12-04
        • 2021-11-24
        • 1970-01-01
        相关资源
        最近更新 更多