.net 使用REGASM&COM时,程序集的多个搜索路径不在GAC中

.net 使用REGASM&COM时,程序集的多个搜索路径不在GAC中,.net,com,interop,assembly-resolution,.net,Com,Interop,Assembly Resolution,我正在创建一个.NET程序集,该程序集将为COM注册,以便Microsoft Excel VBA可以引用它 该程序集引用了第三方.NET程序集,该程序集包含一些GAC中没有的有用类,我的程序集的部署有问题,因为第三方程序集的路径并不总是在同一位置,这取决于用户的区域设置以及第三方程序集的安装时间 这意味着,在使用REGASM部署我的程序集时,根据安装它的系统,REGASM有时会崩溃,因为它无法找到我的程序集对第三方程序集的依赖关系 理想情况下,我希望在我的程序集中使用早期绑定,但是如果我这样做,

我正在创建一个.NET程序集,该程序集将为COM注册,以便Microsoft Excel VBA可以引用它

该程序集引用了第三方.NET程序集,该程序集包含一些GAC中没有的有用类,我的程序集的部署有问题,因为第三方程序集的路径并不总是在同一位置,这取决于用户的区域设置以及第三方程序集的安装时间

这意味着,在使用REGASM部署我的程序集时,根据安装它的系统,REGASM有时会崩溃,因为它无法找到我的程序集对第三方程序集的依赖关系

理想情况下,我希望在我的程序集中使用早期绑定,但是如果我这样做,并且第三方程序集的路径与Visual Studio中的引用不同,那么REGASM将失败

我意识到在VS中复制本地可以解决这个问题,但由于第三方程序集有时会被修补,因此我不希望将它的过期版本保存在与我的程序集相同的文件夹中


有没有办法避免使用“复制本地”功能?我想我可以使用第三方程序集的某种动态加载,但仍然可以使用早期绑定?REGASM会工作吗?

为什么不在第一次使用时使用“复制本地”,并在应用程序启动时有一个例行程序,该程序会遍历可能存在较新版本的位置列表,并在不可访问时覆盖或安排覆盖等。如果可能,请访问本地程序集

此外,您可能希望为用户提供一个选项,手动设置一个打开dll的位置,然后始终或按需检查新版本

另一个方面是,如果应用程序的功能取决于某个版本,那么为什么要更新新程序集,因为如果他们更改了某个功能或发生了什么事情,您的程序将因为更新而失败,这只是一个想法