Файл метаданных… не удалось найти ошибка при создании проектов


98

Каждый раз, когда я запускаю Visual Studio 2008, при первой попытке запустить проект я получаю сообщение об ошибке CS0006. Файл метаданных ... не может быть найден. Если я сделаю перестройку полного решения, оно будет работать.

Немного информации о решении:

  • Я работаю в режиме отладки, и Visual Studio жалуется, что не нашел dll: s в папке выпуска.

  • Проекты, на которые жалуется Visual Studio, используются во многих других проектах решения.

  • Я изменил путь вывода по умолчанию для всех проектов на ...... \ build \ debug \ ProjectName и ...... \ build \ release \ ProjectName соответственно. (Просто чтобы собрать все файлы сборки в одном каталоге)

  • У меня такая же проблема с другим решением.

  • Решение создавалось с нуля.

  • В решении 9 проектов. Один WPF и 8 библиотек классов с использованием dotnet 3.5.

Есть идеи о том, что вызывает эту проблему?


Ответы:


133

У меня была аналогичная проблема, когда «не удалось найти метаданные». в свойстве решения убедитесь, что в диспетчере сборки / конфигурации для каждого проекта установлен флажок «сборка» .


16
Для тех, кто не может его найти, Build / Configuration Manager обращается к меню Build -> Configuration Manager.
Джон Курлак

4
Я только что столкнулся с этой проблемой, причиной была другая ошибка, из-за которой указанный проект не был успешно построен. Это было на чистой проверке, поэтому никаких DLL-файлов от предыдущих успешных сборок не существовало. Исправьте ошибки и убедитесь, что проект, на который есть ссылка, строится правильно.
Moulde

9
Иногда даже это не помогает, как отмечал Ник выше. В этом случае закрытие и перезапуск VS всегда помогало мне. YMMV.
philofinfinitejest

3
Не решил проблему. Я перезапустил VS, и это не решило проблему.
Шимми Вайцхандлер,

26

Обычно это вызвано тем, что проект упоминается в другом решении, нежели тот, который вызывает ошибку. Если вы очистите другое решение или разветвите код, вы, скорее всего, увидите эту ошибку. Решение состоит в том, чтобы прокрутить список ошибок типа «метаданные не найдены» и посмотреть ссылки на проекты. 9 из 10 раз вы увидите неработающую ссылку на проект, которого нет в этом решении. Добавьте проекты, чтобы исправить опорные ошибки, и перестройте. Это должно исправить это.

(Я столкнулся с этим только сегодня, и в прошлом, и это ВСЕГДА работало)


Жалуются только те проекты, которые есть в моем решении.
The Muffin Man

7

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

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

В любом случае кажется, что эти сообщения - отвлекающий маневр, я бы проверил вывод вашей сборки и нашел первый проект, который не удалось собрать, и очень внимательно проверил ссылки на этот проект.


1
+1 за примечание относительно неточности этих сообщений. Это возникло для меня, потому что пути к сборкам, на которые есть ссылки в решении, были нарушены. Их чтение и перекомпиляция решили проблему.
Э. Родригес,

6

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


5

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


Действительно, я удалил все ссылки и добавил их снова.

3

Я прошел все эти шаги в VS2012, но я продолжал сталкиваться с этой проблемой при создании решения в целом (отдельные проекты были созданы отлично, без ошибок).

Я обнаружил, что если вы щелкните правой кнопкой мыши свое решение в обозревателе решений и выберите «Порядок сборки», вы увидите порядок, который VS использует для восстановления вашего решения. Скорее всего, вышло из строя.

Вы можете исправить порядок сборки, щелкнув вкладку «Зависимости» и выбрав проекты, которые зависят от других проектов в решении, и проверив проекты, от которых они зависят. После того, как вы нажмете ОК и выполните восстановление решения, все будет в порядке.


2

То, как я обошел это в прошлом в VS2005, а также сейчас в VS2008, - это убедиться, что все зависимости верны, а ссылки указывают на проекты, а не на библиотеки DLL. Затем пройдите и вручную соберите каждый проект в порядке зависимости. После того, как последняя сборка будет построена, вы можете запустить полную сборку решения и все будет в порядке.

Этот ответ предназначен для использования в будущем для других, поскольку я знаю, что этому вопросу больше 15 месяцев.

Ура


2

Я хотел бы отметить пару моментов.

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

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

Вы должны иметь в виду, что способ создания порядка сборки в Visual Studio не совсем такой, как в MSBuild. Это связано с тем, что MSBuild в первую очередь зависит от файла проекта, чтобы сообщить ему, каковы зависимости, тогда как Visual Studio также может сохранить их в файле решения. Поэтому иногда можно увидеть ситуации, когда Visual Studio идеально создает решение, но MSBuild просто не может этого сделать.

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

Я надеюсь, что приведенная выше информация поможет.


2

Если вы, например, используете контексты данных LinqtoSQL, а файл .designer.cs отсутствует, вы получите сообщение об ошибке «Не удалось найти файл метаданных».

Восстановить файл designer.cs очень просто.

Откройте dbml с помощью xml view. Добавьте пустую строку, затем удалите ее и сохраните. Это должно восстановить ваш файл designer.cs.

В некоторых случаях, если у вас есть код внутри кода программной части контекста данных, этот обходной путь не сработает. В этом случае выньте код из кода позади и поместите его в блокнот или что-то в этом роде. Проделайте трюк добавления, а затем удаления строки из DC и сохраните. Теперь верните код и сохраните.


2

У меня аналогичная проблема возникает каждый раз, когда я обновляю проект из SVN.
Другое решение для ASP.NET:

  1. Закройте IDE.
  2. Удалите файлы в формате C:\WINDOWS\microsoft.net\framework\v…\Temporary ASP.NET File\.

1

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


1

Сначала убедитесь, что флажок «сборка» установлен в меню «Сборка -> Configuration Manager» для каждого проекта.

В случае, если у вас уже есть все проекты, выбранные в меню Build -> Configuration Manager, и перезапуск VS-трюка не работает для вас, чем вам нужно найти ссылку на файл (ы) (может быть dll или cs) в ваш проект и удалите эти ссылки вручную. Эти файлы / ссылки должны отображаться с желтым значком. Ошибка определенно подсказывает вам, какой проект решения вам следует изучить.

Причина этой ошибки заключается в том, что вы удалили файл (ы) вручную в проводнике Windows, а VS не обновил ссылку и не пытается найти файл, который больше не существует!


1

В моем случае я обнаружил, что одно из моих решений ссылается на то, чего не было на компьютере (VBIDE). Как только я удалил оскорбительную ссылку, остальные проекты построились правильно. Надеюсь, это кому-то поможет.

А в другой ситуации я переместил код из одного проекта в другой, и этот фрагмент кода ссылался на Json.net. Я вручную добавил ссылку на Json.net, но из-за этого возникла проблема. Я решил это, установив Json.net через NuGet, и проблема исчезла. Надеюсь, это кому-то поможет.


0

Произошло то же самое. У меня есть несколько решений, относящихся к одним и тем же проектам библиотеки (.net 3.5). Я заметил, что когда один был построен в отладочной / нормальной конфигурации, а другой с использованием другой директивы компилятора (sqlite / local mode), это могло произойти. Просто создайте оба проекта с одинаковыми директивами, и все будет в порядке.


0

Если вы добавили в решение новый проект, убедитесь, что он есть в списке сборки (см. Configuration Manager).


0

У меня возникла проблема с сохранением, когда я хотел включить файл dll, созданный Matlab. И я наконец решил это, скопировав файл .ctf, который, как я полагаю, означает сертификат, и модуль .netmodule, который необходим для правильной работы .dll вместе с файлом .dll. И это действительно сработало! Итак, я предлагаю проверить, нужны ли для .dll другие файлы.


0

Windows 7 Максимальная 32 Visual Studio 2008 SQL Server v2005

Я получал ту же ошибку. И я решил удалить и снова добавить ссылки на проекты. Мне не удалось добавить их обратно, потому что ссылка на базу данных в каждом из упомянутых проектов была пустой.

После того, как я сбросил ссылку на базу данных на правильный параметр, я смог построить без дальнейших проблем. Кроме того, это была моя первая попытка перестроить этот проект после разветвления исходного кода в VSS.

Удачи


0

У меня была эта ошибка, она была вызвана одной из моих зависимостей проекта, где имя сборки было изменено в проекте, но ссылка не была обновлена. Таким образом, обновление ссылки или переименование сборки исправит это.


0

EE - В моем случае проблема была в проекте, который имеет структуру Entity, откройте диаграмму, перетащите любую таблицу на 2 см :) и сохраните, VS обновит все свои ссылки на БД ... создайте эти проекты и создайте решение , Buildssss.


0

Единственное, что меня исправило (потому что я не использую VS2010 под учетной записью администратора), - это вручную переместить переменную среды VS120COMNTOOLS из системных переменных в пользовательские.


0

У меня сработало удаление записей всех исходных файлов, которых больше нет в системе управления версиями и файловой системе, из файла .csproj.


Детальный подход:

Что ж, мой следующий ответ - это не просто краткое изложение всех решений, он предлагает нечто большее.

Секция 1):

В общих решениях:

У меня было 4 ошибки такого типа («файл метаданных не найден») и 1 ошибка «Исходный файл не может быть открыт (« Неопределенная ошибка »)».

Я попытался избавиться от ошибки «файл метаданных не найден». Для этого я прочитал много сообщений, блогов и т. Д. И обнаружил, что эти решения могут быть эффективными (резюмируя их здесь):

  1. Перезапустите VS и попробуйте снова построить.

  2. Перейдите в «Обозреватель решений» . Щелкните правой кнопкой мыши Решение. Зайдите в Свойства . Перейдите в «Диспетчер конфигураций» . Проверьте, отмечены ли флажки в разделе «Сборка» . Если какой-либо из них или все они не отмечены, отметьте их и попробуйте построить снова.

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

  4. Порядок сборки и зависимости проекта:

    Перейдите в «Обозреватель решений» . Щелкните правой кнопкой мыши Решение. Перейдите в «Зависимости проекта ...» . Вы увидите 2 вкладки: «Зависимости» и «Порядок сборки» . Этот порядок сборки используется для сборки решения. Проверьте зависимости проекта и порядок сборки, чтобы убедиться, что какой-то проект (скажем, «project1»), который зависит от другого (скажем, «project2»), пытается построить до этого (project2). Это могло быть причиной ошибки.

  5. Проверьте путь к отсутствующей .dll:

    Проверьте путь к отсутствующей .dll. Если путь содержит пробел или любой другой недопустимый символ пути, удалите его и попробуйте построить снова.

    Если это причина, измените порядок сборки.


Раздел (2):

Мой частный случай:

Я пробовал все вышеперечисленные шаги с различными перестановками и комбинациями с перезапуском VS несколько раз. Но мне это не помогло.

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

Я наткнулся на блог: http://www.anujvarma.com/tfs-errorsource-file-could-not-be-opened-unspecified-error/#comment-1539

Я попробовал шаги, упомянутые в этом блоге, и избавился от ошибки «Исходный файл не может быть открыт (« Неопределенная ошибка »)» и, к удивлению, избавился и от других ошибок («файл метаданных не найден») .


Раздел (3):

Мораль истории:

Попробуйте все решения, упомянутые в разделе (1) выше (и любые другие решения), чтобы избавиться от ошибки. Если ничего не работает, согласно блогу, упомянутому в разделе (2) выше, удалите записи всех исходных файлов, которые больше не присутствуют в системе управления версиями и файловой системе, из вашего файла .csproj .


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.