如何解决如何防止具有相同文件名的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项目的副本并重命名所有程序集和名称空间。 并非每次参考都这样做。
我的问题
我有几个问题,因为我仍在尝试了解正在发生的事情:
- 即使已使用不同版本,重用已加载的DLL是标准的.net行为吗?或者这是SolidWorks问题吗?
- 是否可以防止这些DLL被重用?每个产品/解决方案在build文件夹中都有自己的副本。
- 在哪里可以找到有关这里发生的情况的更多信息?我不知道要搜索什么。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。