Скопировать локальный = ложный файл не найден исключение проблема
Привет, я знаю, что это спросили, но он не получил ответа. У меня проблема, когда я хочу использовать DLL, установленную на C:\Program Files (x86)\Dummu_API.dll
Когда я запускаю свое приложение, оно выдает исключение:
Не удалось загрузить файл или сборку 'Dummy_API, Version=1.0.0.0, Culture= нейтральный, PublicKeyToken=null' или одну из ее зависимостей. Система не может найти указанный файл.
У моего проекта есть ссылка Копировать локально = ложь и конкретная версия = ложь. Мой проект также является целевой платформой x86.
Я не знаю, почему мое приложение не находит сборки. Есть идеи, что это происходит?
3 ответа
Опция 1
Вы можете сообщить своему заявлению, что сами решите Ассамблеи, если они не найдены в ссылках. Для этого:
В ваших приложениях основной метод прикрепите ассемблер разрешения:
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
Убедитесь, что вы не используете динамически разрешенную сборку в вашем основном методе.
Ваш код метода распознавателя (здесь вы загружаете сборку - посмотрите на ResolveEventArgs. Я только что жестко запрограммировал один, но вы можете разрешить различные сборки здесь из разных мест)
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
return Assembly.LoadFile(@"C:\temp\ClassLibrary1.dll");
}
Вариант 2
Добавьте это в ваш app.config (работает только для подпапок каталога приложения)
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="PathToMyAssemblies\" />
</assemblyBinding>
</runtime>
Таким образом, файл не находится в GAC, и нет локальной копии. Вы исключили только два места, из которых он мог загружаться - я не знаю, почему вы ожидаете, что это сработает.
Вам нужно установить Copy Local=true или установить Dummy_API.dll в глобальный кэш сборок на компьютере, на котором будет выполняться ваш код. Один или другой.
Я не знаю, правильно ли вы выбрали тип проекта, как по мне, я обнаружил, что в самом начале выбрал проект типа dot net core (консольное приложение), затем я переместил проект на dot net framework(консольное приложение), и у меня это работает.
Есть еще один быстрый способ проверить, есть ли у вас та же проблема, что и у меня:
- После того, как вы создали элемент app.config и скомпилировали его, вы нашли .dll.config, но не .exe.config
- Вкладка "Справочная информация" заменена вкладкой "Dependencys"
- Выбор структуры свойств проекта может быть только core xx или net 5.0, но не framework 3.0 / 4.0 / 4.5 и т. Д.
Просто намек или подсказка, надеюсь, помогли!