我有一个类库项目(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,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“。
然后无法解析Rx程序集中的任何符号。我已经验证项目引用指向Rx安装下的Net45文件夹。我在谷歌上没有点击,所以我假设在4.5上使用Rx非常简单。关于是什么导致这个问题的任何想法?
答案 0 :(得分:2)
这通常意味着以某种方式引用了Rx 4.0 DLL。核对引用并明确指出它们为Rx 4.5版本
答案 1 :(得分:2)
首先,请注意错误消息(2.0.20823.0)中的Rx版本与您在问题中提到的版本(2.0.21114)不匹配。 20823是4个版本。
更相关的是,System.Runtime是一个在Portable Class Library和Windows Store应用程序中使用的程序集。这与您的目标不匹配,您选择了完整的框架。它确实与我从Nuget看到的相匹配,我只看到Rx的商店版本可用。
我不清楚你是如何设法添加引用的,我自己无法完成它。我只能猜到你以某种方式得到了你之前在你的机器上安装的旧版本的引用(如20823),并通过安装新的版本获得了。这样的东西,鞋子适合。
答案 2 :(得分:2)
嗯,这对我目前的机器/ VS2012安装来说是个怪癖。我们在另一个开发盒上尝试了一个vanilla项目,并在我的盒子上尝试了相同的项目;它的效果与预期的一样,但在这里失败了相同的消息。我已经开辟了一个新的VM和开发环境,一切都像宣传的一样。
感谢您的建议。
答案 3 :(得分:1)
这有时会在使用Rx的F#项目中发生,修复方法是将System.ComponentModel.Composition
引用到您的项目中。我推测可移植图书馆系统的怪癖。