Visual Studio 2022 FileNotFoundException при доступе к dll без локальной копии

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

Недавно у меня возникла проблема: компилятор сообщает о следующей ошибке: FileNotFoundException: файл или сборка «My.Extensions.IO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null» или зависимость от него не найдены. Система не может найти указанный файл.

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

Однако как только я хочу получить доступ к методу или свойству DLL, он сообщает об этой ошибке.

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

  • Я удалил файл .suo
  • Я удалил весь .vs
  • Я удалил справочную запись в файле .csproj.
  • Я снял и перепроверил флажки сборки в диспетчере конфигурации как для «Отладки как», так и для выпуска.
  • Я попробовал сборку как релиз

Ничего не помогает пока...

Если я установлю ссылку на local copy = true, это сработает, но я не хочу этого делать, потому что не хочу каждый раз отправлять DLL.

Я использую Visual Studio 2022 Professional.

Есть ли у кого-нибудь идеи о том, что еще я могу протестировать помимо того, что я уже тестировал?

Спасибо

Скорее всего версия dll неправильная. Это часто происходит, когда вы меняете целевую версию Net. Удаление ссылки, а затем ее добавление обычно устраняет проблему с версией. При добавлении будет указана версия библиотеки dll, установленная в вашей системе. Net/Core, чтобы машина сборки и машина развертывания имели одну и ту же версию DLL, чтобы код работал. При публикации в сети библиотеки DLL машины сборки устанавливаются на машину публикации. В Core библиотеки DLL находятся в библиотеке Core. Версия Core должна совпадать при сборке и развертывании.

jdweng 09.08.2024 15:38

Спасибо @jdweng, извини, я этого не писал. Соответствующая структура остается той же и неизменной. Версия DLL тоже не изменилась. Все действительно осталось по-прежнему и старые проекты продолжают работать с этой конфигурацией без проблем, только при создании новых проектов возникает эта ошибка. Я подозреваю ошибку в последнем обновлении Visual Studio? Сейчас у меня установлена ​​17.10.5

A. Drews 09.08.2024 16:13

DLL либо должна быть зарегистрирована на компьютере, либо находиться в той же папке, что и исполняемый файл. Проверьте папку bin старого проекта и посмотрите, находится ли dll в папке проекта. Если это не так, то dll была зарегистрирована. Где находится dll в старом проекте. Вы можете открыть файл csproj в старом проекте с помощью блокнота и найти любые инструкции для dll.

jdweng 09.08.2024 17:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используя эту командную строку, вы можете добавить свою DLL в GAC, если ваша DLL имеет строгое имя, чтобы ваш проект мог читать DLL из GAC:

gacutil -i [YourDLLPath]

Большой! Спасибо! Это отлично работает.

A. Drews 13.08.2024 15:59

Другие вопросы по теме