У меня есть консольное приложение.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, что не помогает.
Ссылка на файлы 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.
Не уверен, что это будет считаться исправлением, но по крайней мере обходным путем.
Вместо ссылки на DLL я просто добавил проект для библиотеки классов в консольное приложение, включил ссылку зависимостей в проект библиотеки классов в консольном приложении и очистил/перестроил. Работает нормально.
Очевидно, что это не проблема для DLL, которые являются собственностью, но это может помочь.
Add -> Reference
в Visual Studio, я прикрепил DLL как новый проект как часть общего решения.