【发布时间】:2014-09-02 17:14:48
【问题描述】:
我使用的是 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 的外观引用,但没有任何效果。如果我更改为 .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,版本=v4.5.2”。要解决此问题,请删除引用“System.Threading.Tasks.Dataflow, Version=4.5.23.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”或将您的应用程序重新定位到包含“System.Runtime”的框架版本,版本=4.0.10.0,文化=中性,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,版本=v4.5.2”。要解决此问题,请删除引用“System.Threading.Tasks.Dataflow, Version=4.5.23.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL”或将您的应用程序重新定位到包含“System.Diagnostics”的框架版本.Tracing,版本=4.0.10.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a"。 TPLDataflow4.5.2Demo
警告 3 在 Imports '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 Developer Pack 有一个错误,导致 PCL 无法正确编译。
我从http://support.microsoft.com/kb/2901951 下载并安装了 Microsoft .NET Framework 4.5.2 开发包的更新版本,我的应用程序能够顺利编译。
【问题讨论】:
-
您如何定位这些版本的运行时和跟踪? .NET 4.0 和 4.5 的正确强名称具有“4.0.0.0”版本
-
TPL Dataflow 是来自 NuGet 的封闭 Microsoft 包,它们在其中引用。我知道 4.5.2 是就地升级,但我不确定你在这里问什么。
-
另外,这些版本确实来自微软,可以在“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\RedistList\FrameworkList.xml ”。版本是正确的,但由于某种原因,使用 .NET 4.5.2 而不是 4.5 时重定向失败
-
connect 中似乎有一张关于使用 .NET 4.5.2 定位 PCL 库的公开票
-
看起来确实是这样。我发现所有重定向都作为 .NET 多目标包的一部分存在。适用于 4.5.1 和 4.5,但不适用于 4.5.2。哎呀。我会尝试下载更新,看看它是否修复它。
标签: task-parallel-library portable-class-library tpl-dataflow .net-4.5.2