使用PCL的'TPL Dataflow'项目在针对.NET 4.5.2时无法编译

3

我正在使用Windows 7 Pro x64 SP1和Visual Studio 2012 Update 4。当使用TPL Dataflow包和.NET 4.5.2时,我无法使我的VB.NET WPF项目编译。我已经创建了一个基本项目,只有这段代码,并且仅为x64编译:

Imports System.Threading.Tasks.Dataflow

Class MainWindow
    Dim test As New System.Threading.Tasks.Dataflow.BufferBlock(Of String)
End Class

我已经尝试将 System.Runtime.dll 和 System.Diagnostics.Tracing.dll 添加到 fasade 引用中,但没有任何效果。如果我改为 .NET 4.5,则可以成功编译。由于项目中还有其他需要使用 4.5.2 的功能,因此我必须引用它。
具体错误信息:
警告1:主引用“System.Threading.Tasks.Dataflow,Version = 4.5.23.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”无法解析,因为它对框架程序集“System.Runtime,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”具有间接依赖关系,而该程序集在当前目标框架中无法解析。 ".NETFramework,Version = v4.5.2"。要解决此问题,要么删除引用“System.Threading.Tasks.Dataflow,Version = 4.5.23.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”,要么将应用程序重新定向到包含“System.Runtime,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”的框架版本。 TPLDataflow4.5.2Demo
警告2:主引用“System.Threading.Tasks.Dataflow,Version = 4.5.23.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”无法解析,因为它对框架程序集“System.Diagnostics.Tracing,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”具有间接依赖关系,而该程序集在当前目标框架中无法解析。 ".NETFramework,Version = v4.5.2"。要解决此问题,要么删除引用“System.Threading.Tasks.Dataflow,Version = 4.5.23.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL”,要么将应用程序重新定向到包含“System.Diagnostics.Tracing,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”的框架版本。 TPLDataflow4.5.2Demo
警告3:导入中指定的命名空间或类型“System.Threading.Tasks.Dataflow”不包含任何公共成员,或找不到。请确保命名空间或类型已定义并且至少包含一个公共成员。请确保导入的元素名称不使用任何别名。 F:\ Projects \ TPLDataflow4.5.2Demo \ TPLDataflow4.5.2Demo \ MainWindow.xaml.vb 1 9 TPLDataflow4.5.2Demo
错误4:未定义类型“System.Threading.Tasks.Dataflow.BufferBlock”。 F:\ Projects \ TPLDataflow4.5.2Demo \ TPLDataflow4.5.2Demo \ MainWindow.xaml.vb 4 21 TPLDataflow4.5.2Demo
我使用的 Microsoft .NET Framework 4.5.2 开发者包存在一个 bug,导致 PCL 无法正确编译。我从 http://support.microsoft.com/kb/2901951 下载并安装了更新版本的 Microsoft .NET Framework 4.5.2 开发者包,这样我的应用程序就能够编译成功了,不再出现错误。

你是如何针对运行时和跟踪的这些版本的?无论是.NET 4.0还是4.5,这些版本的正确强名称为“4.0.0.0”。 - Cory Nelson
1
似乎在connect中存在一个关于使用.NET 4.5.2针对PCL库的问题的未解决工单。 - Yuval Itzchakov
这看起来确实像是正在发生的事情。我发现所有重定向都作为.NET多目标包的一部分存在。在4.5.1和4.5上运行良好,但在4.5.2上不行。天啊,我会尝试下载更新并查看是否修复了它。 - VoteCoffee
啊,我明白了。“TPL数据流编译不通过”非常误导人。 - Cory Nelson
@Yuval Itzchakov:我安装了更新的4.5.2开发包,问题得到解决。请将您的评论更改为解决方案,以便我接受它。谢谢。 - VoteCoffee
显示剩余3条评论
1个回答

2

Connect上有一张票据指出使用.NET 4.5.2与PCL库会导致构建失败。

这已经在Microsoft .NET Framework 4.5.2开发人员包中得到修复。

当您重新编译一个使用.NET便携式库以针对Microsoft .NET Framework 4.5.2的Microsoft .NET Framework 4.5.1应用程序时,在编译过程中会收到以下错误消息:

类型“{type}”定义在未被引用的程序集中。 您必须添加对程序集“{assembly}”的引用


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接