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

在WINUI 3中使用Entity Framework Core生成模型文件失败求助

WinUI3打包项目使用EF Core Scaffold-DbContext后出现APPX1101错误

问题场景

在打包式桌面WinUI3项目中,通过EntityFrameworkCore.Tools的Scaffold-DbContext命令生成数据库模型后,项目无法构建,抛出APPX1101错误,提示Payload中存在两个相同路径的DbManagerTempModel.deps.json文件,分别来自obj和bin目录。新建空白测试项目重复操作仍出现相同问题,怀疑该流程是否适配WinUI3。

操作流程:

  • 创建打包式桌面WinUI3空白应用项目
  • 安装EntityFrameworkCore.SqlServer和EntityFrameworkCore.Tools NuGet包
  • 在包管理器控制台切换至项目目录,执行以下命令:
    Scaffold-DbContext "Server=tcp:Server.database.windows.net, 1433;Initial Catalog=ProjectName;User ID=UserID;Password=Password;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" 
             Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
    

错误信息:

Error APPX1101
Payload contains two or more files with the same destination path 'DbManagerTempModel.deps.json'.
Source files:
C:\Users\ebagby\Desktop\Temp\DbManagerTempModel\DbManagerTempModel\obj\x86\Debug\net6.0-windows10.0.19041.0\win10-x86\DbManagerTempModel.deps.json
C:\Users\ebagby\Desktop\Temp\DbManagerTempModel\DbManagerTempModel\bin\x86\Debug\net6.0-windows10.0.19041.0\win10-x86\DbManagerTempModel.deps.json

DbManagerTempModel
C:\Users\ebagby.nuget\packages\microsoft.windowsappsdk\1.2.220902.1-preview1\buildTransitive\Microsoft.Build.Msix.Packaging.targets 1480

解决方案

1. 修改项目文件排除重复文件

在WinUI3项目的.csproj文件中添加以下配置,阻止obj目录下的.deps.json文件被纳入打包范围:

<PropertyGroup>
  <AppxPackagePayloadExcludes>$(AppxPackagePayloadExcludes);obj\**\*.deps.json</AppxPackagePayloadExcludes>
</PropertyGroup>

或者直接移除该文件的Content标记:

<ItemGroup>
  <Content Remove="obj\**\*.deps.json" />
  <None Include="obj\**\*.deps.json" Exclude="**" />
</ItemGroup>

2. 将EF Core代码分离到类库项目(推荐)

WinUI3的MSIX打包机制与普通项目存在差异,将数据访问层分离到独立类库可以从根源避免此类冲突:

  • 新建一个与WinUI3项目同框架(如.NET 6)的类库项目
  • 在类库中安装EntityFrameworkCore.SqlServer和EntityFrameworkCore.Tools
  • 切换到类库项目执行Scaffold-DbContext生成模型
  • 让WinUI3项目引用该类库

这种方式不仅解决打包冲突,还符合分层架构的最佳实践,便于后续维护。

3. 手动调整文件的构建操作

如果不想修改项目文件,可手动调整文件属性:

  1. 在解决方案资源管理器中启用“显示所有文件”,找到obj目录下的DbManagerTempModel.deps.json
  2. 右键文件选择“属性”
  3. 将“生成操作”改为“无”

问题原因

WinUI3的MSIX打包流程会扫描并收集bin和obj目录中的特定文件,而EF Core的Scaffold-DbContext操作可能导致obj目录下的.deps.json被错误标记为需要打包的内容,最终与bin目录的同名文件产生冲突。

内容的提问来源于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:31:02