c# - Native dll找不到.Net Core,但是可以找到.Net Framework
问题描述
我有一个 .Net 标准项目,它引用了我为所有目标构建的本机 dll。
然后,我使用 nuspec 在私人 nuget 提要上发布了该项目:
<?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 包安装到在 Windows 10 上运行的 .Net Core 应用程序并运行针对 x86 的应用程序时,出现错误:
未处理的异常:System.DllNotFoundException:无法加载 DLL 'Native.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)
奇怪的是,如果我将应用程序更改为 .Net Framework 应用程序,针对相同的架构,一切运行正常。
有谁知道为什么会这样?
解决方案
我想,您的项目中存在关于目标 CPU 架构的冲突。win7-x86 行指示 NuGet 使用 x86 版本的 Native.DLL,AnyCPU 指示应用程序编译为 AnyCPU,这意味着进程可以以 x64 方式运行。这种不匹配可能是错误的根源。
推荐阅读
- c++ - C++ 数组转数字
- javascript - 无法解构“上下文”的属性“用户”,因为它未定义
- php - Laravel 用户被禁用的问题,仍然可以登录
- python - 具有州级美国选民数据的 Choropleth 地图 (Python)
- javascript - 根据数字前后的数字匹配句子组(Javascript)
- c# - System.Data.SqlClient.SqlException:'无效的对象名称 EmpUpdate'
- c++ - 在 C++ 中使用文件 I/O 从文件中删除特定键
- firebase - 我是否错过了火力基地应该如何工作的重点?
- sql - SQL -- 如何编写一个select语句来查找连续5天下订单的客户
- c# - 添加依赖注入会在 .NET Core 中产生异常