解决插件加载动态库的冲突问题

最近发给用户的插件在使用过程中,UI界面一直未能加载成功,分析后发现和其他的插件发生冲突了,同时用到了一个UI库:MahApps.Metro(自己改造过的版本)。
分析过程中使用ProcessExplorer查看Revit运行过程中所加载的dll,发现MahApps.Metro.dll已经被成功加载了,但是加载路径是另外一个插件的安装目录,而我们自己的MahApps.Metro.dll并没有出现在Revit.exe的依赖dll列表中。
原因:多个dll同名且强命名相同,则在一个exe中只能加载一个。

现将解决步骤记录如下:
注:该解决方案仅适用于第三方的开源库

1. Fork the Repository

在这里插入图片描述
确保不要勾选:仅复制main分支,这样我们就可以复制该仓库的所有分支。
然后将仓库克隆到本地,
git clone https://github.com/xxxx.git

2. 重新构建该解决方案

2.1 新建snk强命名文件

VS2022----工具----命令行----开发者命令提示,然后输入sn -k myKey.snk
在这里插入图片描述

2.2 修改MahApps.Metro的项目属性

主要修改以下几处:程序集名称、强名称秘钥文件(也就是刚才新建的.snk文件)、勾选:在生成操作期间创建包文件、修改包ID、修改包版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改完成后,重新生成项目即可。在生成目录中,可以找到.nuget文件。

3. 发布到nuget

注册账号,上传.nuget文件即可,然后就可以在vs中的nuget包管理器中搜到这个nuget了。
当然了,也可以直接拷贝dll使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值