微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何防止具有相同文件名的dll被SolidWorks重用

如何解决如何防止具有相同文件名的dll被SolidWorks重用

我为3D CAD设计软件SolidWorks开发了插件/插件。您在COM中注册了您的插件,并且在SolidWorks UI中启用该插件时,SolidWorks将实例化您的插件

我希望能够同时运行多个加载项。问题在于,即使文件位于不同的文件夹或具有不同的版本,SolidWorks也不会区分两个具有相同名称的DLL。如果文件名相同,SolidWorks将重用已加载的DLL。

问题

这是一个问题,因为我将SolidDna框架用作NuGet程序包,该程序包实现了SolidWorks ISwAddin接口:

  • SolidDna.AddInIntegration:ISwAddin

我有两个都使用SolidDna的外接程序项目/产品:

  • MyAddin1:AddInIntegration
  • MyAddin2:AddInIntegration

一旦加载MyAddin1并启用MyAddin2,已加载的SolidDna实例将用于MyAddin1。 SolidDna不能处理两个加载项,因此无法正常工作。这也意味着我无法调用Assembly.LoadFile加载所需的Dll,因为第一个dll已用于实现。

这将导致第二个加载项无法正常启动。由于我在两个项目中都使用相同的log4net NuGet包,因此日志记录也很复杂。如果其他公司的产品也使用SolidDna,也会引起问题。

我想通过改进SolidDna或更改自己的产品来正确解决此问题。到目前为止,唯一有效的方法是创建SolidDna项目的副本并重命名所有程序集和名称空间。 并非每次参考都这样做。

我的问题

我有几个问题,因为我仍在尝试了解正在发生的事情:

  1. 即使已使用不同版本,重用已加载的DLL是标准的.net行为吗?或者这是SolidWorks问题吗?
  2. 是否可以防止这些DLL被重用?每个产品/解决方案在build文件夹中都有自己的副本。
  3. 在哪里可以找到有关这里发生的情况的更多信息?我不知道要搜索什么。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。