Visual Studio просит меня ссылаться на несуществующую сборку
Я каким-то образом перенес свой проект в состояние, когда Visual Studio 2013 не удалось скомпилировать его с нелепой ошибкой:
Тип 'System.Collections.Generic.Dictionary'2' определен в сборке, на которую не ссылаются. Вы должны добавить ссылку на сборку "System.Collections, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a".
Во-первых, такой сборки нет, ее не существует. Во- вторых, Dictionary<TKey, TValue>
определяется в mscorlib.dll
, который ссылается по умолчанию, конечно. Resharper (у которого есть собственный механизм анализа кода) сообщает, что решение должно компилироваться в обычном режиме.
Я не знаю, как на Земле это может произойти, потому что мои последние изменения не имеют ничего общего с предположительно ошибочным местом. Линия ссылается на некоторые стандартные функции LINQ (GroupBy
и ToDictionary
), и она работала месяцами без каких-либо изменений. К сожалению, я не могу создать никаких MRE: очевидно, эта ошибка появляется только в контексте моего огромного решения и только с некоторыми конкретными изменениями, сделанными в предположительно нерелевантных местах.
Вот что я пробовал, и это не сработало:
- Очистить + Восстановить
- Изменение целевой платформы от.NET 4.5 до.NET 4.5.1 или.NET 4.0
Кто-нибудь видел такую причуду раньше?
Ответы
Ответ 1
Убедитесь, что все ссылки (core.net) в вашем проекте действительны, и все они ссылаются на одну и ту же версию платформы.NET.
Если есть сомнения, удалите все ссылки и добавьте их снова (используя версии 4.0.0.0).
Мне это случалось со мной однажды (с той же ошибкой), и это было связано с некоторыми "зависаниями" над версией ссылок. Я никогда не узнал, ПОЧЕМУ это произошло, но удаление всех ссылок и добавление их снова работало для меня.
Ответ 2
У меня была та же проблема, но это было на веб-сайте - не было простого способа удалить и повторно добавить ссылки. К счастью, я обнаружил, что этот ответ сработал для меня - и был еще быстрее, чем возиться со ссылками fooobar.com/questions/497958/...
добавление нового тега сборки в web.config, похоже, решило эту проблему. Я добавил тег под тегом и следующим образом:
<assemblies>
<add assembly="System.Collections, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
Ответ 3
У меня была такая же проблема, и, похоже, она связана с двумя пакетами NuGet, содержащими ту же сборку "System.Collections.Immutable". Два пакета NuGet, где "Microsoft.Bcl.Immutable" ("Непосчитанные") и "System.Collections.Immutable".
Я не смог достоверно воспроизвести проблему, и, похоже, проблема была решена с помощью VS2015.
Тем не менее, я бы предложил искать пакеты NuGet, содержащие одну и ту же сборку.
Удаление Microsoft.Bcl.Immutables решило это для меня.