You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6 WINUI 3项目搭建Azure数据库时加载hostpolicy.dll失败

解决.NET 6 WINUI 3项目中Scaffold-DbContext的hostpolicy.dll加载错误

1. 临时调整项目输出类型

WINUI 3项目默认是Windows应用程序(MSIX),EF Core Tools处理这类项目时易出现宿主环境不兼容问题。可临时修改输出类型为控制台应用,执行完命令后改回:

  • 打开项目.csproj文件,将<OutputType>WinExe</OutputType>改为<OutputType>Exe</OutputType>
  • 执行Scaffold-DbContext命令
  • 完成后恢复原输出类型

2. 显式指定命令的目标框架与运行时

在Package Manager Console中执行命令时,明确指定适配WINUI3的框架和32位运行时,避免环境匹配偏差:

Scaffold-DbContext "你的Azure数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Data -Context YourDbContext -f -TargetFramework net6.0-windows -Runtime win-x86

参数说明:

  • -TargetFramework net6.0-windows:匹配WINUI3对应的目标框架
  • -Runtime win-x86:强制使用32位运行时,和你确认的dll位数保持一致

3. 修复.csproj配置冲突

确保项目配置中无框架或运行时冲突,以下是兼容EF Core的.NET6 WINUI3项目配置片段参考:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
    <TargetPlatformMinVersion>10.0.17763.0</TargetPlatformMinVersion>
    <RootNamespace>你的项目命名空间</RootNamespace>
    <ApplicationManifest>app.manifest</ApplicationManifest>
    <Platforms>x86;x64;ARM64</Platforms>
    <RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
    <UseWinUI>true</UseWinUI>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.12" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.12" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.12">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>

重点检查:

  • RuntimeIdentifiers包含win10-x86,与32位dll匹配
  • EF Core相关包版本统一为6.0.12,避免版本不一致引发的问题

4. 改用.NET CLI执行命令

若Package Manager Console环境仍有问题,尝试使用32位命令行环境执行:

  1. 打开x86 Native Tools Command Prompt for VS 2022(根据你的VS版本选择对应工具)
  2. 导航到项目根目录
  3. 执行命令:
dotnet ef dbcontext scaffold "你的Azure数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer --output-dir Models --context-dir Data --context YourDbContext --force --target-framework net6.0-windows --runtime win-x86

5. 清理工具缓存并重建

工具缓存损坏可能导致加载错误,执行以下步骤修复:

  • 删除项目目录下的bin和obj文件夹
  • 在Package Manager Console中执行:
Update-Package -reinstall Microsoft.EntityFrameworkCore.Tools
  • 重启Visual Studio后重新执行Scaffold命令

内容的提问来源于stack exchange,提问作者E. A. Bagby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 16:55:25