JetBrains Rider构建.NET7 MAUI Windows项目时出现MSB3073错误
迁移Xamarin至.NET7后编译net7.0-windows目标框架触发MSB3073错误的排查方案
你遇到的MSB3073错误本质是Windows App SDK的XamlCompiler.exe编译XAML文件时异常退出,代码1通常指向编译过程中存在未被IDE捕获的具体错误,结合Xamarin迁移到.NET7的场景,可按以下方向排查解决:
升级Windows App SDK版本
你当前使用的microsoft.windowsappsdk 1.2.221209.1版本较旧,对.NET7的目标框架支持存在兼容性问题。将包升级到适配.NET7的最新稳定版(如1.4.x系列),新版本的XamlCompiler修复了大量跨框架编译的问题。排查XAML文件的迁移残留问题
Xamarin.Forms的XAML语法与MAUI/WinUI存在差异,残留的旧语法会直接导致编译失败:- 替换Xamarin专属命名空间,比如将
xmlns:xf="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.Core"替换为MAUI标准命名空间xmlns:maui="http://schemas.microsoft.com/dotnet/2021/maui" - 移除Xamarin专属控件、标记扩展或自定义渲染器代码,比如
Xamarin.Forms.Behaviors、旧的x:Static用法,这些在WinUI环境下无法被正确解析。
- 替换Xamarin专属命名空间,比如将
获取更详细的编译错误信息
Rider有时会屏蔽XamlCompiler的具体错误输出,尝试用命令行构建项目,执行以下命令:dotnet build -c Debug -f net7.0-windows10.0.19041.0命令行输出会包含XamlCompiler抛出的具体错误(比如某行XAML的语法问题),这是定位问题最直接的方式。
彻底清理构建残留
常规清理可能无法完全移除旧的编译缓存:- 执行
dotnet clean命令清理项目 - 删除项目根目录下的
obj、bin文件夹 - 删除
C:\Users\<username>\.nuget\packages\microsoft.windowsappsdk缓存目录 - 重新执行
dotnet restore后再构建项目
- 执行
检查.csproj配置的正确性
确认项目文件中已移除Xamarin相关配置,且MAUI/Windows目标框架设置正确:<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>net7.0-android;net7.0-ios;net7.0-windows10.0.19041.0</TargetFrameworks> <UseMaui>true</UseMaui> <SingleProject>true</SingleProject> <WindowsPackageType>MSIX</WindowsPackageType> </PropertyGroup> </Project>移除任何与
Xamarin.Forms相关的PackageReference或Import节点。
内容的提问来源于stack exchange,提问作者XDS
相关产品推荐
相关产品推荐

