Нативная dll не может быть найдена .Net Core, но может быть найдена .Net Framework - PullRequest
0 голосов
/ 03 января 2019

У меня есть проект .Net Standard, который ссылается на нативный dll, который я построил для всех целей.

Затем я опубликовал проект в частном фиде nuget, используя nuspec в виде:

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    ...
  </metadata>
  <files>
    <file src="..\bin\NetStandard20\Managed.dll" target="lib\netstandard2.0" />
    <file src="..\bin\NetStandard20\Managed.xml" target="lib\netstandard2.0" />
    <file src="..\bin\2017\Win32\Release\Native.dll" target="build\netstandard2.0\x86" />
    <file src="..\bin\2017\x64\Release\Native.dll" target="build\netstandard2.0\x64" />
    <file src="..\bin\2016\linux-x64\Release\Native.dll" target="build\netstandard2.0\linux-x64" />
    <file src="..\bin\2016\osx-x64\Release\Native.dll" target="build\netstandard2.0\osx-x64" />
    <file src="shared\Core\build\Managed.targets" target="build\netstandard2.0\Managed.targets" />
    <file src="shared\Core\lib\Managed.config" target="lib\netstandard2.0" />
  </files>
</package>

Теперь, когда я устанавливаю этот пакет nuget в приложение .Net Core, работающее в Windows 10, и запускаю приложение, ориентированное на x86, я получаю сообщение об ошибке:

Необработанное исключение: System.DllNotFoundException: Невозможно загрузить DLL 'Native.dll': указанный модуль не найден.(Исключение из HRESULT: 0x8007007E)

Странно то, что если я изменю приложение на приложение .Net Framework, ориентированное на ту же архитектуру, все будет работать нормально.

У кого-нибудь есть идеи, почему это может быть?

1 Ответ

0 голосов
/ 03 января 2019

Полагаю, в вашем проекте возник конфликт из-за того, какую архитектуру процессора выбрать. Строка win7-x86 указывает NuGet использовать версию Native.DLL для x86, а AnyCPU указывает приложению компилироваться как AnyCPU, что означает, что процесс может работать как x64. Это несоответствие, вероятно, является источником ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...