3

我正在使用Windows 7 Pro x64 SP1和Visual Studio 2012 Update 4.我无法让我的VB.NET WPF项目编译当使用TPL Dataflow包和.NET 4.5.2时。我创建了一个基地项目什么也没有,除了这个代码和编译只针对x64:使用PCL'TPL Dataflow'的项目在编译时不会编译.NET 4.5.2

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,版本= 4.5.23.0文化=中性公钥= b03f5f7f11d50a3a,ProcessorArchitecture用于= MSIL” 不能被解析,因为它对框架程序集“System.Runtime,Version = 4.0.10.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”具有间接依赖性,这在目前的目标框架中无法解决。 ” .NETFramework,版本= v4.5.2" 。要解决此问题,请移除引用“System.Threading.Tasks.Dataflow,版本= 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,版本= 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在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:\项目\ TPLDataflow4.5.2Demo \ TPLDataflow4.5.2Demo \ MainWindow.xaml.vb 4月21日TPLDataflow4.5.2Demo

解决方案:

原来在Microsoft .NET Framework 4.5。 2我使用的开发包有一个不会让PCL编译正确的错误。

我从http://support.microsoft.com/kb/2901951下载并安装了Microsoft .NET Framework 4.5.2开发包的更新版本,我的应用程序能够无错地编译。

+0

您如何定位这些版本的Runtime和Tracing? .NET 4.0和4.5的正确强名称的版本为“4.0.0.0” – 2014-09-02 17:29:23

+0

TPL Dataflow是来自NuGet的封闭的Microsoft软件包,它们在那里引用。我意识到4.5.2是一个就地升级,但我不确定你在这里问什么。 – VoteCoffee 2014-09-02 17:54:21

+0

此外,这些版本确实来自Microsoft,可在“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.5.2 \ RedistList \ FrameworkList.xml”中找到。版本是正确的,但由于某些原因重定向失败,因为使用.NET 4.5.2而不是4.5 – VoteCoffee 2014-09-02 18:49:56

回答

2

connect上有一张票,指定使用.NET 4.5.2和PCL库导致构建失败。

这被固定在Microsoft .NET Framework 4.5.2 Developer Pack

当您重新编译使用.NET便携库瞄准的Microsoft .NET Framework 4.5.2的Microsoft .NET Framework 4.5.1应用程序,您会收到以下错误编译期间的消息:

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