Я использую свою собственную DLL в своих проектах уже несколько месяцев без каких-либо проблем. DLL интегрируется без локальной копии, все библиотеки DLL хранятся в каталоге, из которого они интегрированы. Путь правильный и файл определенно существует!
Недавно у меня возникла проблема: компилятор сообщает о следующей ошибке: FileNotFoundException: файл или сборка «My.Extensions.IO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null» или зависимость от него не найдены. Система не может найти указанный файл.
Ошибка возникает только тогда, когда вы хотите получить доступ к DLL. Если вы не используете DLL, даже если она интегрирована, она не будет жаловаться, и проект запустится без проблем.
Однако как только я хочу получить доступ к методу или свойству DLL, он сообщает об этой ошибке.
Я уже видел несколько решений этой или подобных проблем, но ни одно из них мне не помогло.
Ничего не помогает пока...
Если я установлю ссылку на local copy = true, это сработает, но я не хочу этого делать, потому что не хочу каждый раз отправлять DLL.
Я использую Visual Studio 2022 Professional.
Есть ли у кого-нибудь идеи о том, что еще я могу протестировать помимо того, что я уже тестировал?
Спасибо
Спасибо @jdweng, извини, я этого не писал. Соответствующая структура остается той же и неизменной. Версия DLL тоже не изменилась. Все действительно осталось по-прежнему и старые проекты продолжают работать с этой конфигурацией без проблем, только при создании новых проектов возникает эта ошибка. Я подозреваю ошибку в последнем обновлении Visual Studio? Сейчас у меня установлена 17.10.5
DLL либо должна быть зарегистрирована на компьютере, либо находиться в той же папке, что и исполняемый файл. Проверьте папку bin старого проекта и посмотрите, находится ли dll в папке проекта. Если это не так, то dll была зарегистрирована. Где находится dll в старом проекте. Вы можете открыть файл csproj в старом проекте с помощью блокнота и найти любые инструкции для dll.
Используя эту командную строку, вы можете добавить свою DLL в GAC, если ваша DLL имеет строгое имя, чтобы ваш проект мог читать DLL из GAC:
gacutil -i [YourDLLPath]
Большой! Спасибо! Это отлично работает.
Скорее всего версия dll неправильная. Это часто происходит, когда вы меняете целевую версию Net. Удаление ссылки, а затем ее добавление обычно устраняет проблему с версией. При добавлении будет указана версия библиотеки dll, установленная в вашей системе. Net/Core, чтобы машина сборки и машина развертывания имели одну и ту же версию DLL, чтобы код работал. При публикации в сети библиотеки DLL машины сборки устанавливаются на машину публикации. В Core библиотеки DLL находятся в библиотеке Core. Версия Core должна совпадать при сборке и развертывании.