FileNotFoundException при обращении к DLL в .NET Core Application

2

У меня есть консольное приложение.NET Core и библиотека классов.NET Core. Оба являются чрезвычайно простыми, одноклассными проектами. Оба они недавно построены, со свежей установкой последнего.NET Core. Оба целевых.NET Core 1.1.

Эта ошибка возникает во время выполнения, когда я включаю библиотеку классов.NET Core в приложение:

System.IO.FileNotFoundException: 'Не удалось загрузить файл или сборку' NAME, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null '. Система не может найти указанный файл.

Построение обоих проектов прекрасное, и Intellisense показывает мне содержимое библиотеки классов после включения инструкции using... При написании ссылки и написании кода во время компиляции нет проблем.

Я установил параметр " Copy Local в " Yes для ссылочной сборки в консольном приложении. Указанная DLL существует в папке bin консольного приложения во время выполнения.

Вот ссылка csproj:

<Reference Include="NAME">
  <HintPath>path\bin\Debug\netcoreapp1.1\NAME.dll</HintPath>
  <Private>true</Private>
  <SpecificVersion>false</SpecificVersion>
</Reference>

Это происходит только с.NET Core DLL, у меня нет абсолютно никаких проблем с.NET Framework 4.5. * И выше.

Может ли кто-нибудь пролить свет на этот вопрос? Любые страницы SO/MSDN, которые я нашел относительно этого, были конкретными проблемами, такими как таргетинг на неправильную версию DLL, что не помогает.

  • 0
    Используйте .NetCore 2.0. Вы сможете найти эту поддержку в нем. Предварительная версия уже доступна. microsoft.com/net/core/preview#windowscmd
Теги:
.net-core

2 ответа

5
Лучший ответ

Ссылка на файлы DLL в приложении.NET Core не поддерживается с использованием инструментов до 2.0.

Причина в том, что генерация графа зависимостей (deps.json) не включает эти файлы и, скорее всего, не сработает, так как в любом случае он не сможет консолидировать ссылки/зависимости ссылочной DLL.

Для предстоящей версии 2.0 этот сценарий должен работать до тех пор, пока вы также ссылаетесь на все DLL/пакеты, используемые исходным пакетом. Синтаксис:

<Reference Include="path/to/my.dll" />

.NET Core 2.0 также поддерживает ссылки на сборки, которые были созданы для.NET 4.6.1 таким образом, но может быть неудачным во время выполнения, если DLL использует неподдерживаемые вызовы API.

  • 4
    Я на самом деле имею эту проблему с .net Core 2.0, а также. Только проекты asp.net, консольные проекты работают нормально.
  • 0
    Я также сталкиваюсь с той же проблемой в проекте aspnet core 2.0. У кого-нибудь есть решение для этого?
Показать ещё 1 комментарий
1

Не уверен, что это будет считаться исправлением, но по крайней мере обходным путем.

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

Очевидно, что это не проблема для DLL, которые являются собственностью, но это может помочь.

  • 0
    Я не понимаю, что ты сделал? Просьба уточнить. Для моего небольшого C # проекта я не использовал Visual Studio, я предпочитаю CLI.
  • 0
    Я не уверен в использовании CLI, но вместо того, чтобы щелкнуть Add -> Reference в Visual Studio, я прикрепил DLL как новый проект как часть общего решения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню