自贡市网站建设_网站建设公司_营销型网站_seo优化
2025/12/25 1:38:08 网站建设 项目流程

目录

方案一:添加 ARM64 运行时(推荐)

方案二:指定目标平台为 x64

方案三:禁用 FaceRecognitionDotNet 的自动部署(临时方案)

方案四:手动添加缺失的 DLL

方案五:条件编译(针对不同架构)

方案六:检查并清理 NuGet 包缓存

快速解决方案

根本原因分析


这个错误是因为FaceRecognitionDotNet包缺少 ARM64 架构的支持文件。这个问题通常出现在你在 ARM64 架构的设备(如 Apple Silicon Mac 或 Windows ARM 设备)上编译项目。

以下是几种解决方案:

方案一:添加 ARM64 运行时(推荐)

在项目文件中添加 ARM64 运行时的回退配置:

xml

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- 其他配置 --> <RuntimeIdentifiers>win-x64;win-x86;win-arm64</RuntimeIdentifiers> </PropertyGroup> <ItemGroup> <!-- 为 ARM64 添加回退 --> <RuntimeHostConfigurationOption Include="System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture" Value="X64" Condition="'$(RuntimeIdentifier)' == 'win-arm64'" /> </ItemGroup> </Project>

方案二:指定目标平台为 x64

在项目文件中显式指定目标平台:

xml

<PropertyGroup> <PlatformTarget>x64</PlatformTarget> <!-- 或者 --> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>

或者在 Visual Studio 中:

  1. 右键点击项目 → 属性

  2. 选择“生成”选项卡

  3. 将“平台目标”设置为x64

方案三:禁用 FaceRecognitionDotNet 的自动部署(临时方案)

xml

<PropertyGroup> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <!-- 禁用特定包的自动复制 --> <ExcludeAssets>runtime</ExcludeAssets> </PropertyGroup> <ItemGroup> <PackageReference Include="FaceRecognitionDotNet" Version="1.3.0.7"> <ExcludeAssets>runtime</ExcludeAssets> </PackageReference> </ItemGroup>

方案四:手动添加缺失的 DLL

如果项目需要支持 ARM64,你可以手动处理:

  1. 下载或编译 ARM64 版本的 DLL

  2. 创建目录结构:

    text

    YourProject/ ├── runtimes/ │ ├── win-arm64/ │ │ └── native/ │ │ └── DlibDotNetNativeDnnAgeClassification.dll │ └── win-x64/ │ └── native/ │ └── (原有的 x64 DLL)
  3. 在项目文件中确保包含这些文件:

xml

<ItemGroup> <Content Include="runtimes\**\*.*"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> </ItemGroup>

方案五:条件编译(针对不同架构)

xml

<PropertyGroup> <TargetFrameworks>net6.0;net6.0-windows</TargetFrameworks> <Platforms>AnyCPU;x64;ARM64</Platforms> </PropertyGroup> <PropertyGroup Condition="'$(Platform)' == 'ARM64'"> <!-- 对于 ARM64 平台,使用 x64 的运行时 --> <RuntimeIdentifier>win-x64</RuntimeIdentifier> </PropertyGroup>

方案六:检查并清理 NuGet 包缓存

有时 NuGet 包缓存可能损坏:

  1. 清理 NuGet 缓存:

    powershell

    # 清除所有 NuGet 缓存 dotnet nuget locals all --clear
  2. 删除binobj文件夹

  3. 重新生成项目

快速解决方案

如果你只是想在当前设备上运行,最快速的方法是:

  1. 在 Visual Studio 中

    • 点击顶部菜单:生成 → 配置管理器

    • 将“活动解决方案平台”改为x64

    • 如果没有x64,点击“新建”创建

  2. 或者修改项目文件

xml

<PropertyGroup> <PlatformTarget>x64</PlatformTarget> </PropertyGroup>

根本原因分析

这个错误是因为FaceRecognitionDotNet包(版本 1.3.0.7)不包含 ARM64 架构的原生 DLL 文件。该包只提供了win-x86win-x64的运行时。

建议:如果项目需要支持 ARM64,考虑联系FaceRecognitionDotNet包的维护者,请求添加 ARM64 支持,或者寻找替代的库。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询