Подтвердить что ты не робот

Конфликт версии mscorlib во время сборки

В новой переустановке Win8.1, когда весь мой код восстановлен из резервной копии, я вдруг получаю предупреждение Visual Studio при создании основного проекта моего решения:

Нашел конфликты между разными версиями одной и той же зависимой сборки, которые невозможно было решить. Эти ссылочные конфликты перечислены в журнале сборки, когда подробные сведения о журналах заданы.

Я установил уровень журнала вывода в "Детально", и я нашел несколько таких записей:

Произошел конфликт между "mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" и "mscorlib, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes". "mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" был выбран потому, что он имел более высокую версию.

Проблема в том, что я не ссылаюсь на mscorlib в любом месте решения - старого или нового. У меня есть несколько приложений на моей машине, для которых требуется .NET 3.5, но я не вижу, как это может быть связано.

Одно из отличий: старая установка Win8.1, на которой это предупреждение НЕ происходило, была автономной машиной; на этот раз я присоединен к домену. Я не знаю, имеет ли это значение (я не вижу, как это сделать), но я подумал, что должен упомянуть об этом как минимум.

4b9b3361

Ответ 1

Мне удалось это исправить, update-package -reinstall команду update-package -reinstall в консоли диспетчера пакетов.

НО

Будьте осторожны, обновление всех пакетов в вашем решении может вызвать другие проблемы, убедитесь, что вы можете вернуться к хорошей версии, если она пойдет не так!

Ответ 2

Наличие различных версий пакета Nuget в разных проектах может также вызвать эту проблему. Убедитесь, что все ваши пакеты имеют одну и ту же версию:

  • (внутри Visual Studio) Щелкните правой кнопкой мыши по решению
  • Нажмите Управление пакетами Nuget для решения
  • Перейдите на вкладку Консолидация
  • Для каждого пакета на вкладке "Консолидация" обновите пакет до той же версии для каждого проекта.

Ответ 3

Я смог исправить эту проблему, удалив мой файл ".suo" моего решения, а затем снова открыв решение. Затем я перестраиваю решение, и проблема исчезла.

Файл ".suo" находится в папке ".vs", которую я обычно удаляю.

Удачи!

Ответ 4

Следуя совету Memet Olsen, используя сообщество VS2017... почти идентично:

  • Щелкните правой кнопкой мыши Решение в обозревателе решений.
  • Выберите "Управление пакетами Nuget для решения"
  • Проверьте пакеты. Если у кого-либо из них есть синяя стрелка вверх, а не зеленая галочка, используйте кнопку "Обновить"

Ответ 5

Я пробовал все следующее, но никто не решил проблему.

  • команда "update-package -reinstall".
  • Обновить и пакет через вкладку "Консолидация".
  • Удаление файла .suo.

Однако мой вопрос был другим, я думаю, новая версия пакета Xamarin.Forms использовала другую версию mscorlib. поэтому я понизил его, и он отлично работает.

Я предлагаю вам попробовать все вышеперечисленные решения, а также попытаться найти, какой пакет конфликтует.

Ответ 6

Я решил это, установив свою многословность в Диагностику в соответствии с этим ответом.

Как только я сделал это и перестроил свое решение, в журнале сборки были перечислены конкретные пакеты, которые зависят от двух разных версий mscorlib.

В моем конкретном случае мой проект имел ссылки на версию 2.0.20126.16343 System.Net.Http. Я открыл диспетчер пакетов NuGet и обновил этот пакет до последней версии (на тот момент 4.3.4). В следующий раз, когда я построил свое решение, предупреждения исчезли.

Ответ 7

Ну, мое решение немного проще, чем все вышеперечисленное. Я просто добавил ссылку на две сборки, выдавшую эту ошибку (System.Runtime.Serialization и mscorlib), и перестроил проект. Сделав это, я указал версию 4.0.0.0 и удалил неоднозначность.

Один из двух (mscorlib) не может быть добавлен через графический интерфейс, поскольку "Невозможно добавить ссылку на" mscorlib ". На этот компонент уже автоматически ссылается система сборки". ошибка.

Мне нужно было открыть файл .vbproj(.csproj) и добавить ссылку вручную через:

<Reference Include="mscorlib" />

Ответ 8

Я также перепробовал все предложенное решение безрезультатно.

В моем проекте это предупреждающее сообщение было вызвано ссылкой dll, зависящей от другой среды .net, нежели та, на которую ориентирован мой проект.

Чтобы выяснить, какая ссылка на dll вызывала предупреждение, я просто использовал .net рефлектор, чтобы изучить каждую ссылку на dll, чтобы выяснить, какая ссылка ссылалась на другую среду .net(mscorlib).

Чтобы решить эту проблему, необходимо обновить эталонную dll до версии, которая нацелена на ту же платформу .net, что и проект, использующий ее, если такая версия существует.

Надеюсь это поможет.