【发布时间】:2010-12-15 22:36:42
【问题描述】:
我的这个问题让我把头发拔掉了。这与我之前遇到的需要写Mutex that will get destroyed when going out of scope 的问题有关。事实证明我很愚蠢并且不需要互斥锁——我需要锁定的东西不会观察到锁,因为它们实际上是从同一个线程调用的。我没有意识到一组呼叫来自定时器。哎呀。
无论如何,我正在做一些调查,试图帮助缩小我们与该第 3 方 DLL 相关的问题的原因。他们似乎相信,如果我们在不同的文件夹中拥有他们的 C DLL 的多个副本(我们现在将它们称为 a.dll 和 b.dll),并且只在使用它们的 C# 程序集本地,那么生活将会很好,并且我终于可以回家真正见到我的家人了。
建议的文件夹结构如下所示:
+--App folder
+--DeviceA.dll
+--a.dll (linked to by DeviceA)
+--b.dll (linked to by a.dll)
+--Device B Folder
+--DeviceB.dll
+--a.dll
+--b.dll
我的问题是,即使 DeviceB.dll 位于单独的文件夹中,但在加载时,它不会加载并在 Device B 文件夹中查找其依赖项——而是在 App 文件夹中查找。我真的需要能够保证它链接到的 DLL 与 App 文件夹中的完全不同。
我查看了构建属性,阅读了清单上的一些内容,但还没有弄清楚。这甚至可能吗?如果我知道 DeviceB.dll 在不同的文件夹中,我是否必须设置 CurrentDirectory 或类似的东西来强制它链接到自己文件夹中的 DLL,而不是从正在执行的程序集的文件夹中?
编辑——实际上,“设备B文件夹”中的a.dll应该是c.dll。所以a.dll链接到b.dll,c.dll链接到b.dll。我无法更改此行为,因为第 3 方 DLL 已编译为链接到 b.dll。
【问题讨论】: