【问题标题】:Is there some trick to using Rx from .NET Framework 4.5?从 .NET Framework 4.5 使用 Rx 有什么技巧吗?
【发布时间】:2012-12-01 23:49:39
【问题描述】:

我有一个类库项目(VS2012,.NET Framework 4.5)。我使用 NuGet 安装了 Rx Main 2.0.21114。编译给了我大量的警告:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9):警告 MSB3268:主要参考“System.Reactive.Core, Version=2.0.20823.0, Culture=中性,PublicKeyToken=f300afd708cefcd3,processorArchitecture=MSIL”无法解析,因为它间接依赖于框架程序集“System.Runtime,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”,无法在当前目标框架。 “.NETFramework,版本=v4.5”。要解决此问题,请删除引用“System.Reactive.Core, Version=2.0.20823.0, Culture=neutral, PublicKeyToken=f300afd708cefcd3, processorArchitecture=MSIL”或将您的应用程序重新定位到包含“System.Runtime, Version”的框架版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"。

然后无法解析 Rx 程序集中的任何符号。我已经验证项目引用指向 Rx 安装下的 Net45 文件夹。我在 Google 上的点击率为零,所以我假设在 4.5 上使用 Rx 非常简单。关于是什么导致我遇到此问题的任何想法?

【问题讨论】:

  • 您是否尝试将 System.Runtime 命名空间添加到您的代码中?
  • 我尝试添加 using System.Runtime; 但这无济于事,因为我没有使用该命名空间中的任何类型。

标签: system.reactive .net-4.5


【解决方案1】:

好吧,事实证明这对我当前的机器/VS2012 安装有些古怪。我们在另一个开发盒上尝试了一个普通项目,在我的盒子上尝试了同一个项目;它在那里按预期工作,但在这里失败并显示相同的消息。我已经创建了一个新的虚拟机和开发环境,一切都如宣传的那样。

感谢您的建议。

【讨论】:

    【解决方案2】:

    这有时会发生在使用 Rx 的 F# 项目中,解决方法是将 System.ComponentModel.Composition 引用到您的项目中。我认为是便携式图书馆系统的怪癖。

    【讨论】:

      【解决方案3】:

      首先,请注意错误消息中的 Rx 版本 (2.0.20823.0) 与您在问题中提到的版本 (2.0.21114) 不匹配。 20823 是 4 个版本之前。

      更相关的是,System.Runtime 是用于可移植类库和 Windows 应用商店应用程序的程序集。这与您的目标不符,您选择了完整的框架。它确实与我从 Nuget 看到的相符,我只看到 Rx 的商店版本可用。

      我不清楚您是如何添加对它的引用的,我自己无法完成。我只能猜测您以某种方式获得了对您之前在您的机器上安装的旧版本(如 20823)的引用,并且通过安装新版本得到了修改。像这样,鞋子合脚。

      【讨论】:

      • 使用 ildasm 检查 Rx-Core.2.0.21114\lib\Net45\System.Reactive.Core.dll 的清单显示:// Metadata version: v4.0.30319 .assembly extern System.Runtime { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 4:0:0:0 } .assembly extern System.Reactive.Interfaces { .publickeytoken = (F3 00 AF D7 08 CE FC D3 ) .ver 2:0:20823:0 }
      【解决方案4】:

      这通常意味着以某种方式引用了 Rx 4.0 DLL。核对引用并明确将它们指向 Rx 4.5 版本

      【讨论】:

      • 正如我所提到的,我已经验证了引用指向预期的程序集文件。
      猜你喜欢
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多