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}」的引用