2017-07-27 63 views
16

我將現有的解決方案從.NET 4.6.2升級到.NET 4.7。該解決方案取決於幾個以.NET 4.6.2爲目標的nuget包,因此取決於nuget System.ValueTuple包。升級到.NET 4.7後「未定義或導入預定義類型System.ValueTuple」

但是升級後,我得到這些構建錯誤的一大堆:

Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported

我不能刪除System.ValueTuple包,在評論here建議,因爲其他包依賴它。 (如果我強制它,他們似乎炸燬。)

有什麼建議嗎?

更新17年8月8日

我已經想通了,我可以刪除System.ValueTuple包,我可以得到解決編譯方式。然而,我在解決方案中有十幾個NuGet包,它們似乎是針對.NET 4.6.2的,因此需要System.ValueTuple作爲依賴。我可以安裝這些軟件,然後強制刪除System.ValueTuple軟件包,但如果其中任何軟件包有更新,並且我安裝了更新 - 那麼將再次安裝System.ValueTuple軟件包,系統會停止生成,直到我再次將軟件包全部移出。

換句話說,我可以做到這一切 - 但它看起來很尷尬和笨拙。當然有更好的方法來解決這個問題?

+0

你使用什麼版本的軟件包?如果您更新到ValueTuple軟件包的預發佈版本(4.4),我希望這會得到解決。 –

+0

在4.7之前發佈VS2017和C#v7是一個巨大的失誤。這個東西還沒有完成,目標4.7太早。你會給我一個非常頭疼的問題,我的機器上無法安裝4.7並且無法獲得體面的診斷。處理微軟的更新最近變得非常糟糕。等一下。 –

+1

對不起,打嗝。我們推送了一個完全支持.NET Framework 4.7的更新(穩定)System.ValueTuple包。請試試看。 –

回答

18

是的,升級到System.ValueTuple 4.4.0

這是爲什麼:

的NuGet包System.ValueTuple提供所需要的C#元組語法ValueTuple類型。在.NET Framework 4.7中,我們直接將這些類型添加到mscorlib。如果你同時使用NuGet包和.NET Framework 4.7,你最終會看到多次相同的類型。這會導致像Stack Overflow這樣的問題。

我們更新了NuGet包以將.NET Framework 4.7中的元組類型轉發到mscorlib。這可以統一這些類型,從而允許您使用依賴於System.ValueTuple而仍以.NET Framework 4.7爲目標的其他庫和NuGet包。

參見release notes

相關問題