我在运行 XP Professional 的远程计算机上安装了各种版本的 .NET Framework(版本 1.1 到 4.0)。我也安装了 Reactive Extension 以获得良好的测量效果。
我还有一个可以在我的机器上运行的应用程序,因为它引用了此处找到的 System.Threading:
C:\Program Files\Microsoft Reactive Extensions\redist\desktopV2\System.Threading.dll
我在 GAC 中也有两个版本的 DLL。
两个问题:
i) 当我从列表中选择而不是浏览到文件时,为什么 Visual Studio 决定这是要引用的版本(实例)?
ii) 为什么远程机器上不存在 System.Threading?
(我认为这是框架的核心部分)
谢谢
最佳答案
System.Threading.dll 是在 .NET 4.0 中添加的(尽管命名空间 System.Threading
从 v1 开始就已经存在了)。 Rx 包含一个向后移植到 .NET 3.5 SP1 的 System.Threading.dll 版本。
听起来您的目标是 .NET 3.5。在这种情况下,运行时不会加载仅 4.0 版本的 System.Threading.dll(显然)。除非您在程序中包含 System.Threading.dll 的 Rx 版本,否则您的加载将失败。
直接回答问题:
要解决您的问题,请让您的程序以 .NET 4.0 为目标,或者在您的程序中包含 Rx 的 System.Threading.dll。
附言我建议升级到最新版本的 Rx。
desktopV2
文件夹在最近的几个版本中没有被使用。升级时,先卸载旧版本 - 这样效果会更好。关于.net - 为什么 Windows\Assembly 中可能会缺少 System.Threading.dll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3405662/