为什么Windows \ Assembly中可能缺少System.Threading.dll?

时间:2010-08-04 12:54:12

标签: .net multithreading system.reactive

我在运行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? (我认为这是框架的核心部分)

由于

2 个答案:

答案 0 :(得分:9)

在.NET 4.0中添加了System.Threading.dll(尽管名称空间 System.Threading自v1以来一直存在)。 Rx包含一个版本的System.Threading.dll,它被反向移植到.NET 3.5 SP1。

听起来你的目标是.NET 3.5。在这种情况下,运行时将不会加载仅限4.0的System.Threading.dll(显然)。除非您将System.Threading.dll的Rx版本与程序一起包含在内,否则您的加载将失败。

直接回答问题:

  1. Rx将自己的私有目录注册为框架扩展。这就是VS。
  2. 的结果
  3. System.Threading.dll仅包含在.NET 4.0中,因此如果您要定位较早的框架,则无法找到它。
  4. 要解决您的问题,请将您的程序定位到.NET 4.0或将Rx的System.Threading.dll与您的程序一起包含。

    P.S。我建议升级到最新版本的Rx。 desktopV2文件夹尚未用于最近几个版本。升级时,首先卸载旧版本 - 这样做效果更好。

答案 1 :(得分:0)

i)参考列表应显示已注册组件的所有版本,您选择该特定版本,或者如果它不在列表中,则必须已取消注册或删除。

ii)System.Threading存在since framework 1,如果它不在机器上,则必须已取消注册或删除。

我不知道Reactive Extensions,经过一些搜索我找不到太多信息是否删除了System.Threading.dll