添加WinUI 3类库引用至WinUI 3空白应用时出现NETSDK1022错误
解决WinUI3应用引用类库后出现NETSDK1022重复Page项错误
问题分析
你遇到的NETSDK1022错误,是因为WinUI3的SDK默认会自动包含项目目录下所有Page类型文件,添加类库引用后,类库中的XAML文件(或主应用显式声明的文件)与默认规则包含的文件发生重复。而你之前设置的EnableDefaultCompileItems属性对WinUI3的Page项无效,错误提示里明确指向的是EnableDefaultPageItems。
解决方案
1. 修正项目属性并显式声明Page文件
打开WinUI3空白应用的.csproj文件,做以下修改:
- 添加
EnableDefaultPageItems属性并设为false,关闭默认的Page项自动包含规则 - 手动显式添加主应用需要编译的XAML文件
示例配置:
<Project Sdk="Microsoft.NET.Sdk"> <!-- 保留其他现有配置 --> <PropertyGroup> <!-- 替换错误的EnableDefaultCompileItems,改用此属性 --> <EnableDefaultPageItems>false</EnableDefaultPageItems> </PropertyGroup> <ItemGroup> <!-- 显式声明主应用的Page文件 --> <Page Include="MainWindow.xaml" /> <!-- 若有其他XAML页面,需手动添加 --> </ItemGroup> <!-- 保留其他现有ItemGroup --> </Project>
2. 消除类库与应用的文件命名冲突
如果WinUI3类库中存在和主应用同名的XAML文件(比如MainWindow.xaml),直接重命名类库中的文件是更彻底的解决方式,从根源上避免重复项问题。
3. 清理缓存并重建项目
修改项目文件后,执行以下操作确保配置生效:
- 清理NuGet缓存:在终端运行
dotnet nuget locals all --clear - 在Visual Studio中依次执行
Build -> Clean Solution,再Build -> Rebuild Solution
注意事项
WinUI3的项目编译规则和WPF/WinForms存在差异,它对默认项的包含逻辑更严格,跨项目引用时需要明确管控编译文件列表,不能直接套用WPF的配置方式。
内容的提问来源于stack exchange,提问作者user3912437
相关产品推荐
相关产品推荐

