Revit Add-in Manager 多重依赖无法更新的问题解决办法

文章讲述了作者在使用RevitAddinManager时遇到的问题,即A方法更新后无法依赖新版本,需要重启才能测试。问题源于Assembly.Load()的LoadFile()函数对重复文件的处理。解决办法包括修改程序文件版本号以支持自动加载依赖项。文章还提到了团队如何利用这一原理创建自定义Add-in以实现更灵活的使用。
摘要由CSDN通过智能技术生成

我使用的是Add-in Manager 是这个开源项目

RevitAddInManager

项目逻辑

  1. 项目采取的办法是通过加载RevitAddinManage这个dll,并在文件中动态加载用户的测试dll从而达到快速加载,快速测试的目的
  2. 通过这种办法可以将多个程序附加到revit中并进行测试

问题点

  1. 我有一个测试文件叫做RevitTest,我的主要的工作文件为 A , A.UI , A.API , 如果我将A的一个方法加载到测试文件中通过附着Add-in 进行测试,那么会出现 A更新之后无法依赖正确项的问题,必须重启才可以完成测试。下图可以看到多次测试会动态加载多个dll,这个是我修正之后的情况,修正之前XGZ_Tool只能依赖最早的一般,问题就出现在这里
    在这里插入图片描述

Assembly.Load()

在具体了解解决办法之前,先了解一下Assembly.Load() , 通过这个函数可以动态加载我们需要的dll也就是add-in的关键函数,Load有三个函数

  1. Load()函数需要将dll的强名称传入进来,类似格式为System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
  2. LoadFrom() 将会根据文件路径加载,如果遇到同名的文件将会放弃加载,继续使用旧版本,可以看到下面两个图依赖的XGZ_Tool版本号一致,但是最新的版本号是1.0.0.84
    在这里插入图片描述
    在这里插入图片描述
  3. LoadFile() 将会根据文件路径加载,但是不考虑重复名称等条件,直接加载,但是无法加载他的依赖项,还需要将依赖项逐步加载进来。此处就是我的问题的原因,因为Add-In只加载测试文件,所以依赖项只在第一次调用时会触发缺项的机制从而引入,后续所有的添加依赖项,程序会首先在Runtime中查找是否有同名版本,由于我的版本号一直是1.0.0.0,程序默认无更改无需载入新的同名文件,导致我的XGZ_Tool更新后,运行无法更新在这里插入图片描述

解决办法

根据上面的分析,解决办法可以有两个 :

  1. 修改程序文件的版本号,将版本号修改为自增版本,这样调用LoadFile()函数将会根据RevitTest的依赖版本进行自动添加
    <PropertyGroup>
        <Version>$(RevitVersion)</Version>
        <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
        <Description>A Peoject for Developer in Revit</Description>
        <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
        <PublishSingleFile>true</PublishSingleFile>
        <TargetFramework>net472</TargetFramework>
        <VersionSuffix>1.0.0.$([System.DateTime]::UtcNow.ToString(mmff))</VersionSuffix>
        <AssemblyVersion Condition="'$(VersionSuffix)' == ''">0.0.0.1</AssemblyVersion>
        <AssemblyVersion Condition=" '$(VersionSuffix)' != '' ">$(VersionSuffix)</AssemblyVersion>
        <Company>XGZ</Company>
        <Authors>XGZ_Xu</Authors>
    </PropertyGroup>
  1. 由于前面讲过RevitAddin的机制,所以如果是公司团队使用可以根据上面你的原理做一个自己的Add-in , 这样就可以更加灵活的使用。
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值