"Предопределенный тип System.ValueTuple не определен или не импортируется" после обновления до .NET 4.7
Я обновляю существующее решение от .NET 4.6.2 до .NET 4.7. Это решение зависит от нескольких пакетов nuget, которые нацелены на .NET 4.6.2 и, следовательно, зависят от пакета nuget System.ValueTuple.
Но после обновления я получаю целую кучу ошибок сборки:
Error CS8179 Predefined type 'System.ValueTuple`2' is not defined or imported
Я не могу удалить пакет System.ValueTuple
, как это предложено в комментариях здесь, потому что от него зависят другие пакеты. (И если я его заставляю, они, похоже, взорвутся.)
Любые предложения?
Обновление 8/8/17
Я понял, что могу удалить пакет System.ValueTuple
, и я могу получить решение для компиляции таким образом. Тем не менее, у меня есть десяток пакетов NuGet в решении, которые, как представляется, нацелены на .NET 4.6.2 и, следовательно, требуют System.ValueTuple
в качестве зависимости. Я могу установить их, а затем принудительно удалить пакет System.ValueTuple
, но если какой-либо из этих пакетов имеет обновление, и я устанавливаю обновление, то пакет System.ValueTuple
снова устанавливается, и система перестает строить, пока я не удалю пакет снова.
Другими словами, я могу заставить все это работать, но это кажется неудобным и клочковым. Наверняка есть лучший способ приблизиться к этому?
Ответы
Ответ 1
Да, перейдите на System.ValueTuple 4.4.0.
Вот почему:
Пакет NuGet System.ValueTuple
предоставляет типы ValueTuple
, которые необходимы для синтаксиса кортежа С#. В .NET Framework 4.7 мы добавили типы непосредственно в mscorlib
. Если вы используете как пакет NuGet, так и .NET Framework 4.7, вы в конечном итоге будете видеть одни и те же типы несколько раз. В результате возникают проблемы, подобные описанным в Stack Overflow.
Мы обновили пакет NuGet, чтобы набирать типы кортежей в .NET Framework 4.7 до mscorlib
. Это унифицирует типы и, таким образом, позволяет потреблять другие библиотеки и пакеты NuGet, которые зависят от System.ValueTuple
, в то же время нацеливаясь на .NET Framework 4.7.
См. примечания к выпуску.