我正在使用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 开发者包,这样我的应用程序就能够编译成功了,不再出现错误。