美好的一天,
我有一个开发的应用程序,可以在两台机器(“站点”和“服务器”)之间传输文件。此应用程序已设置为以dotNet 3.5为目标。此外,我正在使用Renci.SshNet处理计算机之间的连接以及所述文件的传输。
我目前面临的问题是大约70%的“站点”计算机没有标准的dotNet,而且它已经很旧了。因此,由于外部dll调用System.Threading.WaitHandle.WaitOne()
和System.Threading.WaitHandle.WaitAny(WaitHandle[], Int32)
以及这些方法的其他重载,因此这些机器不支持所有必需的功能。
尽管如此,我要解决的方法是安装netfx20SP2或netfx30SP1,但是我无法在所有计算机上执行此更新,因为它们分散在全国各地并且具有数据限制(带宽和上限)。 / p>
我可能想要做的是嵌入我下载的System.Threading dll,然后应用程序应改为使用这些类,或者将应用程序指向使用该dll的地方。
这是否完全可能,还是您必须将dll加载到GAC中?而且,有可能在系统本身处于较低框架版本时在应用程序中“运行”较高版本的System.Threading。某件事告诉我,最好的选择是实际运行Service Pack安装以避免不必要的编码,但是我不确定确切如何实现此目的。
在此先感谢您的帮助/建议, 京东
答案 0 :(得分:0)
允许执行以.Net 4为目标的应用程序;虽然计算机本身仅安装了.Net 3.5,但可以重定向Windows以检查本地(正在执行)目录中是否包含应将所需符号加载到内存中的dll而不是在执行时加载的默认符号(默认是安装在计算机上的NetFx-我相信可以在执行开始时加载时找到该框架的最高版本,或者是低于或等于目标框架的最高可用版本。)
该文件的内容(myApp.exe.local
)被忽略。只是告诉Windows
在该文件夹中查找适用的符号,如果找不到,系统将回滚以尝试从NetFx目录中加载这些符号。
在Microsoft Dev Center-Docs中了解更多信息(链接附在下面的段落中,该段落是本文档一部分的复制粘贴)。