2017-07-27 53 views
16

mam modernizacji istniejącego rozwiązania z .NET 4.6.2 do .NET 4.7. To rozwiązanie zależy od kilku pakietów nugetowych, które są ukierunkowane na .NET 4.6.2, a zatem zależą od pakietu nuget System.ValueTuple.„predefiniowany typ System.ValueTuple nie jest zdefiniowana lub importowane” po uaktualnieniu do .NET 4.7

Ale po modernizacji, dostaję całe grono tych budujących błędów:

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

nie mogę usunąć pakiet System.ValueTuple, jak sugeruje się w komentarzach here, ponieważ zależą inne pakiety to. (A jeśli zmusić go, wydają się wysadzić.)

Wszelkie sugestie?

Aktualizacja 8/8/17

Mam zorientowali się, że może usunąć pakiet System.ValueTuple i mogę uzyskać roztwór do kompilacji w ten sposób. Mam jednak kilkanaście pakietów NuGet w rozwiązaniu, które wydają się być ukierunkowane na .NET 4.6.2, a więc wymagają zależności System.ValueTuple. mogę zainstalować tych, a następnie wymusić usunięcie pakietu System.ValueTuple, ale jeśli któryś z tych pakietów aktualizacji i zainstalować aktualizację - wtedy pakiet System.ValueTuple zostanie ponownie zainstalowany, a system zatrzyma budowę aż znowu usunąć pakiet all .

Innymi słowy, mogę zrobić to wszystko działa - ale wydaje się niezgrabny i kludgy. Na pewno jest lepszy sposób na podejście do tego?

+0

Jakiej wersji pakietu używasz? Spodziewam się, że zostanie to naprawione, jeśli zaktualizujesz do wersji przedpremierowej (4.4) pakietu ValueTuple. –

+0

Wysyłka VS2017 i C# v7 przed ukończeniem 4,7 była niczym w porównaniu z ogromnym dużym błędem. Te rzeczy jeszcze się nie skończyły, a kierowanie na 4.7 jest zbyt wcześnie. Dajesz mi dość duży ból głowy, nie mogę dostać 4.7 zainstalowanego na moim komputerze i nie mogę uzyskać porządnej diagnostyki. Radzenie sobie z aktualizacjami Microsoftu staje się ostatnio bardzo niedużą pitą. Poczekaj. –

+1

Przepraszamy za nieszczęście. Po prostu pchnęliśmy zaktualizowany (stabilny) pakiet System.ValueTuple, który w pełni obsługuje .NET Framework 4.7. Proszę, spróbuj. –

Odpowiedz

18

Tak, upgrade do System.ValueTuple 4.4.0.

Oto dlaczego:

Pakiet Nuget System.ValueTuple zapewnia ValueTuple rodzajów, które są wymagane do składni C# krotki. W .NET Framework 4.7 dodaliśmy typy bezpośrednio do mscorlib. Jeśli użyjesz zarówno pakietu NuGet, jak i .NET Framework 4.7, zobaczysz te same typy wiele razy. Powoduje to problemy takie jak ten zgłoszone w Stack Overflow.

Zaktualizowaliśmy pakiet Nuget do typu forward typy krotka na .NET Framework 4.7 do mscorlib. Ujednolica typy, dzięki czemu można korzystać z innych bibliotek i pakietów NuGet, które zależą od System.ValueTuple, a jednocześnie są kierowane na .NET Framework 4.7.

Zobacz release notes.