Файл метаданных VS 2017 '.dll не найден


86

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

Я только что создал новый проект ASP.NET MVC и присоединился к нескольким '.dll' в решении. Теперь, когда я пытаюсь собрать проект, я получаю сообщение об ошибке, показанное ниже, в 3 из 5 библиотек.

Error   CS0006  Metadata file 'C:\Users\...\source\Database\bin\Debug\DataAccessLayer.dll' could not be found   Logic   C:\Users\...\source\Logic\CSC   1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\Logic\bin\Debug\Logic.dll' could not be found    PTS2-MVC    C:\Users\...\source\PTS2-MVC\CSC    1   Active

Error   CS0006  Metadata file 'C:\Users\...\source\PTS2-MVC\bin\PTS2-MVC.dll' could not be found    PTS2-MVC.Tests  C:\Users\...\source\PTS2-MVC.Tests\CSC  1   Active

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

Наиболее распространенный ответ должен пойти на свойства этого решения и перейти к конфигурации и снимите флажок -> применить -> Проверка и применить снова, но это не работа


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

Очистить ^ восстановить || перезапустите визуал, проверьте еще раз
Асиф Раза

@AsifRaza Я уже столько раз делал это, но думаю вместе со мной :)
Свенмарим

1
@TheNoob Так ты говоришь, мне нужно попробовать очистить свое решение, а затем создать его? потому что я уже пробовал это
Свенмарим

удалите все из папки bin, затем перестройте ^ check
Asif Raza

Ответы:


121

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

Убедитесь, что в вашем проекте нет других сообщений об ошибках, и если они есть, сначала исправьте их!


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

23
Здесь та же проблема. Кажется, есть ошибка в окне списка ошибок, когда ошибки иногда не появляются (а в других случаях ошибки, которые были исправлены, продолжают отображаться, несмотря на выполнение очистки / восстановления). Окно вывода более надежно, поэтому проверьте его, когда столкнетесь с этой проблемой.
Сантош

1
Я обнаружил, что мне нужно включить предупреждения на вкладке «Список ошибок» в Visual Studio. Именно в предупреждениях я увидел, что ссылка на .dll не может быть разрешена. Мне пришлось удалить существующую ссылку и добавить новую в правильный каталог. Теперь все хорошо.
user1431072

см. мой комментарий выше, но в основном то же самое, за исключением некоторой ошибки в VS, не позволяющей отображать ошибки, пока я не снял / не проверил параметры сборки на страницах свойств решения.
Робаст

1
Это единственный ответ, который мне действительно помог. Превосходно! Благодаря!
ɐsɹǝʌ ǝɔıʌ

34

Действия по устранению этой ошибки: Не удалось найти файл .dll метаданных.

  1. Чистые все проекты.

  2. Выгрузить все проекты.

  3. Перезагрузить все проекты.

  4. Решение ReBuild.

Тогда проблема решена.


Это действительно исправило мой случай.
Ву Нгуен

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

15

В моем случае произошла ошибка, но она не была должным образом проанализирована VS и отображена в окне «Список ошибок». Чтобы найти его, вы часто просматриваете «Вывод» из окна сборки, анализируете сообщения, начиная сверху вниз, и устраняете фактическую ошибку. M $, исправьте пожалуйста! Это огромная трата времени коллективных разработчиков миров.


1
Это решило проблему для меня. Пробовал все другие решения, но окно вывода указывало мне на то, что мой проект был построен против netframework 4.7.2, который был выше, чем целевой framework netframework 4.6. Просто пришлось отредактировать .csjproj, чтобы указать на 4.6.
Calum Mullen

11

Дважды проверьте имя папки вашего проекта. В моем случае папка моего проекта была названа с пробелами. Когда я клонировал проект из Team Foundation Server с помощью git bash, пробелы в имени папки были преобразованы в: «% 20». Вернув их обратно к пробелам, я решил проблему.


2
Та же проблема, из-за ГЛУБОКОГО VSTS.
Арсен Хачатурян

2
Это была точная причина указанной выше ошибки. Спасибо за совет. это сработало
user3785553

10

У меня возникла проблема с решением, содержащим несколько проектов.

Это произошло из-за дублирования .csproj и добавления копии в решение. A .csproj файл содержит <ProjectGuid>элемент. Я установил GUID скопированного проекта на новый.

Обновление: какой GUID вы используете, не имеет значения, он просто должен отличаться от GUID другого проекта. Вы можете создать новый GUID изнутри Visual Studio: Tools -> Create GUIDи скопировать часть между фигурными скобками, то есть {...}. Используйте это как новое значение для <ProjectGuid>элемента.

Я также выполнил следующие шаги (не обязательно, но они не повредят):

  1. Закройте решение
  2. Удалить папку bin
  3. Удалить все папки obj
  4. Открыть решение и построить

6

Я исправляю эту проблему, выполнив следующие действия:

  1. Чистое решение
  2. Закройте Visual Studio
  3. Удаление / bin из каталога проекта
  4. Перезапустите Visual Studio
  5. Восстановить решение

1
Спасибо, после 5 часов поиска и попыток ваше решение спасло меня :)
Masoud

3

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

например:

/Repo/Project Name/src

должно быть

/Repo/ProjectName/src

То же самое здесь, но у меня было %20имя папки.
Wojtek Turowicz

3

Для меня уборка и строительство не работали. Выгрузка проекта не сработала. Перезапуск Visual Studio или даже ПК не работал. Вот что сработало:

Перейдите в каждый из проектов, в которых возникает ошибка, и в разделе «Ссылки» удалите ссылку на проблемный проект и добавьте ее снова. Это решает проблему.

Проблема, похоже, связана с перемещением проекта (например, переместите его в папку), а затем с другим проектом, который ссылается на него, имеет неправильный путь и не может его найти.


Я изменил каталоги своих проектов, что привело к тому, что dll не строится с помощью rebuild all, и этот ответ устраняет мою проблему.
Ален Элемия

3

У меня была та же проблема, даже если другие ошибки не отображались в представлении «Список ошибок» после «Восстановить решение». Однако в представлении «Вывод» я увидел ошибку, которая стояла за этой проблемой:

Первичная ссылка «C: ... \ myproj.dll» не может быть разрешена, поскольку она была создана на основе платформы «.NETFramework, Version = v4.6.1». Это более поздняя версия, чем текущая целевая платформа .NETFramework, Version = v4.5.

Как только я исправил это, проблема была решена.


2

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

У меня была эта проблема, я попробовал все ранее предложенные ответы, а затем с догадкой проверил фреймворки. Один из упомянутых проектов был нацелен на 4.6.1, в то время как вызывающий проект был только на 4.5.2.


То же самое и здесь.
Энтони Куин

2

Выполнение этой команды в bash для удаления всех ящиков сработало для меня

$ find . -iname "bin" -o -iname "obj" | xargs rm -rf

Не могу гарантировать, что это сработает для кого-то еще

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


2

Очистка моего решения вызвала эту проблему с Visual Studio 2017. Выгрузка / перезагрузка проектов или дополнительная очистка не имели никакого значения. Единственное, что сработало, это закрытие и перезапуск Visual Studio.


То же самое в VS 2019: помогло просто закрытие VS и повторное открытие решения.
Heri

2

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


2

В моем случае мне пришлось открыть файл .csproj и добавить ссылку вручную, вот так (Microsoft.Extensions.Identity.Stores.dll отсутствовал):

<Reference Include="Microsoft.Extensions.Identity.Stores">
  <HintPath>..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.identity.stores\2.0.1\lib\netstandard2.0\Microsoft.Extensions.Identity.Stores.dll</HintPath>
</Reference>

2

Закройте Visual Studio, найдите файл .suo решения, удалите его, снова откройте Visual Studio.


2

Что сработало для меня:

Консоль диспетчера пакетов (сообщество Visual Studio 2019):

Install-Package NuGet.CommandLine
nuget locals all -clear

Восстановить решение.


1

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


1

У меня была такая же ошибка. В моем случае я создал библиотеку (назовем ее commsLibrary), которая ссылалась на другие библиотеки, включая их в качестве проектов в мое решение. Позже, когда я построил проект и добавил свою библиотеку commsLibrary , всякий раз, когда я создавал , я получал, что файл метаданных не может быть найден. Поэтому я добавил библиотеки, которые моя библиотека comms ссылалась на текущий проект, после чего он смог построить.


1

После того, как я столкнулся с таким количеством проблем, вот решение, которое я нашел.

  1. откройте папку вашего проекта.
  2. найдите Your_Project_Name.csproj [файл проекта Visual C # (.csproj)]
  3. откройте этот файл в любом текстовом редакторе и найдите недостающий файл ItemGroup.

    <ItemGroup> <None Include="..." /> </ItemGroup>

  4. удалите эту ItemGroup и снова откройте свой проект и создайте

  5. Если эта ссылка важна для вас, добавьте еще раз.

1

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

но ничего из этого не сработало.

Итак, после проб и ошибок я исправил это, выгрузив и перезагрузив проект, выполнив сброс файла конфигурации и исправив проблему.


1

Я построил 10 проектов из 25 проектов в решении индивидуально, один за другим, на основе зависимостей. Затем соберите решение. Это исправлено для меня


Это было мое решение
Ласита

0

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

Для меня было 44 ошибки; 43 оканчивалась на .dll (поиск зависимости), а первая в списке ошибок заканчивалась на .cs (поиск фактического класса). Я пробовал чистую сборку и очистку, выгрузку, перезагрузку, сборку, но ничего не работало. В итоге я нашел класс в проекте и просто удалил его, так как он все равно отображался как недоступный, после чего последовала чистая сборка.

Это помогло мне! Надеюсь это поможет.


0

У меня было 2 файла (и 2 класса) в одном проекте с тем же именем.


0

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


0

Для меня сработало:

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


0

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


0

Эта проблема возникает, когда вы переименовали свое решение, и .NET Framework не может найти старое решение.

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

Файлы , которые , как правило , поражаются AssemblyInfo.cs, имя и пространство имен по умолчанию. Обязательно обновите их новым именем..slnProperties > Application > Assembly

Откройте файловый менеджер, если папка со старым именем все еще существует, ее необходимо удалить. Затем очистите и создавайте решение, пока ошибка не исчезнет. (При необходимости очистите и постройте проект один за другим, особенно затронутый проект.)


0

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

Например, ProjectApp ссылается на ProjectUtility. В ProjectUtility у меня был только 1 .csфайл. Я больше не использовал его, поэтому закомментировал весь файл. В ProjectApp я не вызывал код из ProjectUtility, но у меня был using ProjectUtility;один из .csфайлов ProjectApp . Единственная ошибка, которую я получил от компилятора, - это ошибка CS0006 .

Я раскомментировал .cs файл в ProjectUtility, и ошибка исчезла. Поэтому я не уверен, что отсутствие кода в проекте приводит к тому, что компилятор создает недопустимую сборку или вообще не генерирует DLL. Для меня исправление заключалось в том, чтобы просто удалить ссылку на ProjectUtility, а не комментировать весь код.

Если вам интересно, почему я прокомментировал весь код из указанного проекта вместо удаления ссылки, я сделал это, потому что я что-то тестировал и не хотел изменять ProjectApp.csprojфайл.

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