社区
Revit,Navisworks建筑施工BIM讨论区
欢迎访问欧特克Revit, Navisworks论坛!分享知识,发帖提问,浏览论坛热帖。
取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Revit二次开发 revit无法加载dll

4 条回复4
已解决
回复
1 条消息(共 5 条)
834939691
322 次查看, 4 条回复

Revit二次开发 revit无法加载dll

我在Nuget安装了HandyControl包,在软件加载插件时出现了报错:FileNotFoundException: 未能加载文件或程序集“HandyControl, Culture=neutral”或它的某一个依赖项。系统找不到指定的文件。请问应该如何解决

4 条回复4
2 条消息(共 5 条)

看下这个是否有帮助

Could not load file or assembly 'HandyControl, Culture=neutral' · Issue #1420 · HandyOrg/HandyContro...

CONG XU
您认为此帖子是否有用?欢迎为此帖点赞。
您的问题是否已得到解答?请点击“接受解答”按钮。

EESignature


- BIM THE FUTURE - 
3 条消息(共 5 条)

你好,我尝试后仍然无法解决问题。在其他wpf程序开发中使用HandyControl库没有任何问题,只有当revit引用带有HandyControl.dll的项目中才会出现这个问题

4 条消息(共 5 条)
scgq425
回复: 834939691

Hi @834939691 :

这个问题在引用其他框架的时候也会出现这种情况,放到当前目录和添加引用都无法解决。我再引用"MatetialThemeWPF"时也遇到过,你可以使用下面的方法debug一下

1. 使用Assmenly.Load()强制加载,并将dll放到文件夹中,检测一下有没有载入,因为Revit在引用某些框架的时候会出现无法加载的问题

2. 在初始化WPF窗口之前,new一个handyControol的类,任意一个,让runtime自动调用查找这个dll

3. 如果有低版本更换一下版本试一下

 

 

 

public static Assembly AssemblyResolve(object sender, ResolveEventArgs args)
        {
            var assName = new AssemblyName(args.Name).FullName;
            try
            {
                if (assName.Contains("WPF_CaptureShot") && !assName.Contains("resources"))
                {
                    string file = Path.GetDirectoryName(typeof(MakeDataRevitCommand).Assembly.Location) + "\\" + assName.Split(',')[0] + ".dll";

                    byte[] buff = System.IO.File.ReadAllBytes(file);
                    var da = Assembly.Load(buff);
                    return da;
                }
                else if (assName.Contains("MaterialDesignThemes.Wpf") && !assName.Contains("resources"))
                {
                    string pathLoc = Assembly.GetExecutingAssembly().Location;
                    FileInfo finfo = new FileInfo(pathLoc);
                    var pathDir = finfo.DirectoryName;
                    var load = Assembly.LoadFrom($"{pathDir}\\MaterialDesignThemes.Wpf.dll");
                    Assembly.LoadFrom($"{pathDir}\\MaterialDesignColors.dll");
                    return load;
                }
                else if (assName.Contains(".resources"))
                {
                    
                    return null;
                }
                else
                {
                    throw new DllNotFoundException("BIMCooperative" + assName);
                }

            }
            catch (Exception ex)
            {
                throw new DllNotFoundException(assName);//否则抛出加载失败的异常
            }
        }

 

 

LanHui Xu
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

5 条消息(共 5 条)

@834939691 您好!请问您的问题解决了吗?
如果以上专家 @scgq425 的回答解决了您的问题,或者对您的问题有参考作用,请将他的回复点击  【接受解答】 按钮。这可以帮助其他人更快地找到解决方案,谢谢您的参与!





Lynn Zhang
Community Manager


找不到想要的内容?向社区提问或分享您的知识。

到论坛发帖  

”