7

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

谢谢

4

2 回答 2

10

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 版本与您的程序一起包含,否则您的加载将失败。

直接回答问题:

  1. Rx 将自己的私有目录注册为框架扩展。这就是VS找到它的方式。
  2. System.Threading.dll 仅包含在 .NET 4.0 中,因此如果您针对的是较早的框架,则不会找到它。

要解决你的问题,要么让你的程序以 .NET 4.0 为目标,要么在你的程序中包含 Rx 的 System.Threading.dll。

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

于 2010-08-04T13:32:48.010 回答
0

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

ii) System.Threading自框架 1 以来就存在,如果它不在机器上,则它必须已取消注册或删除。

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

于 2010-08-04T13:01:57.533 回答