Keith™ 发表于 2020-3-25 16:41:49

WPF用户控件AutoCAD崩溃

我有一个应用程序,可以用自己的自定义工具提示替换AutoCAD工具提示。最近,在AutoCAD中,当尝试创建wpf用户控件时,应用程序将崩溃。基本上,用户控件是一个空容器,我在运行时填充它,但是当我用这一行新建它时,该控件会崩溃。(很抱歉,这是一个旧的应用程序,在VB.NET中)
Dim worxBoxToolTip=New worxBoxToolTip()
用户控件本身有一个空构造函数,实际上是一个空类
公共类WorxBoxToolTip
结束类

控件的xml是:

   
      
      
            
            
      
   

当代码尝试新建控件时,它抛出以下错误:
System.IO.FileNotFoundException: 'Could not load file or assembly 'VIEWWorx, Version=2019.2.259.1223, Culture=neutral' or one of its dependencies. The system cannot find the file specified.'
现在,它显然可以找到当前加载的dll。疯狂的是dll的版本不正确。当前加载的版本是2020.x.x.x。我无法引用早期版本,因为它是循环引用<有什么想法吗?
**** Hidden Message *****

亦菲互动 发表于 2020-3-25 17:11:22

我只是要抛出一些东西来检查:
检查解决方案中每个项目中的引用。
确保你实际上抓住了正确的构建(我知道听起来很愚蠢),但VS有一种方法可以为构建创建多个目标。
您是否曾经自动加载项目,以便引用旧路径?我倾向于为那些“以防万一”的时刻保留我的旧可执行文件。通常我发现自动加载程序指向文件夹\version12\,而它应该指向文件夹\version13\。
无论如何,我知道它并不多,因为你所展示的是金色的,除了投机之外,没有太多可说的。

赵阳 发表于 2020-3-25 17:23:26

是的,我检查了所有的参考资料。 我最终所做的是添加一个解析事件处理程序,以便如果代码找不到自身,那么它就会返回自身。 听起来很愚蠢,但它有效。 我去了Name.StartsWith,所以如果由于某种未知的原因,它正在寻找更改的版本,它仍然会工作。 我花了将近一天的时间试图追踪这个,我厌倦了看这个。 AddHandler currentDomain.AssemblyResolve, AddressOf ResolveWorxToolsHandler。

Private Function ResolveWorxToolsHandler(sender As Object, args As ResolveEventArgs) As Assembly。
如果 (参数.Name.StartsWith(“VIEWWorx,”)) 然后。
Return Assembly.GetExecutingAssembly()。
如果结束。
不返回任何内容。
结束功能** 编辑 **如果有人回来寻找解决方案,请确保在要查找的dll名称后添加逗号, 如果没有,在查找名为“VIEWWorx.resources”的dll资源时,它也会触发, 逗号将阻止这种情况发生。
页: [1]
查看完整版本: WPF用户控件AutoCAD崩溃