如何为所述 DLL 中的功能引用特定的 DLL

How to reference a specific DLL for functionality in said DLL

美好的一天,

我开发了一个应用程序,可以在两台机器("site" 和 "server")之间传输文件。此应用程序设置为目标 dotNet 3.5。此外,我正在使用 Renci.SshNet 来处理机器之间的连接和上述文件的传输。

我目前面临的问题是,大约 70% 的 "site" 机器没有标准的 dotNet,而且也很旧;因此这些机器不支持所有必需的功能,因为外部 dll 调用 System.Threading.WaitHandle.WaitOne()System.Threading.WaitHandle.WaitAny(WaitHandle[], Int32) 以及这些方法的其他重载。

我对此的解决方法是安装 netfx20SP2 或 netfx30SP1,但我无法在所有机器上执行此更新,因为它们分散在全国各地并且有数据限制(带宽和上限) .

我想做的可能是嵌入我下载的 System.Threading dll,然后应用程序应该使用那些 类,或者只是指向应用程序使用所述 dll .

这完全可能吗,还是必须将 dll 加载到 GAC 中?而且,当系统本身处于较低框架版本时,是否可以在应用程序中 "run" System.Threading 这个更高版本。有些事情告诉我,最好的办法是实际 运行 安装服务包以避免不必要的编码,但我不确定如何解决这个问题。

提前感谢您的任何帮助/建议, 京东

允许执行以 .Net 4 为目标的应用程序;虽然机器本身只安装了 .Net 3.5,但可以重定向 Windows 以检查本地(执行)目录中的 dll,这些 dll 应包含加载到内存中的所需符号,而不是加载的默认符号执行时(默认是机器上安装的 NetFx - 我相信在执行开始时加载时可以找到的最高版本的框架,或者是低于或等于目标框架的最高可用版本) .

忽略此文件的内容 (myApp.exe.local)。它只是告诉 Windows 在该文件夹中查找适用的符号,如果未找到,系统将回滚以尝试从 NetFx 目录加载这些符号。

在 Microsoft 开发人员中心阅读更多信息 - 文档(link 附在以下段落中,该段落是本文档的一部分的复制粘贴)。

To use DLL redirection, create a redirection file for your application. The redirection file must be named as follows: App_name.local. For example, if the application name is Editor.exe, the redirection file should be named Editor.exe.local. You must install the .local file in the application directory. You must also install the DLLs in the application directory.