.NET MAUI iOS模拟器启动报错CS0017:存在多个入口点
解决.NET MAUI iOS模拟器启动时的CS0017入口点重复错误
排查与修复步骤
1. 检查多平台Program.cs的编译范围
- 确认
Platforms/iOS目录下仅存在一个Program.cs,同时打开项目的.csproj文件,检查各平台的Program.cs是否通过Condition限定了仅对应平台编译。比如Android的Program.cs配置应该如下:
若发现iOS编译时意外包含了其他平台的<Compile Include="Platforms\Android\Program.cs" Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'" />Program.cs,修正对应的Condition,保证每个平台的入口文件只在自身编译目标中生效。
2. 给iOS编译目标强制指定入口点
在.csproj中添加针对iOS的配置,明确指定入口类,避免编译器混淆:
<PropertyGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'"> <MainEntryPoint>你的应用命名空间.Platforms.iOS.Program</MainEntryPoint> </PropertyGroup>
将你的应用命名空间替换为项目实际的命名空间。
3. 彻底清理重建项目
- 执行以下命令清理缓存:
dotnet clean dotnet restore - 手动删除项目根目录下的
bin和obj文件夹,再重新生成整个解决方案——缓存残留常导致这类无厘头问题。
4. 确认Visual Studio的启动目标配置
- 检查顶部启动目标是否选择了iOS模拟器,避免误选Android(错误提示显示
net6.0-android,大概率是目标选择混淆)。 - 右键项目→属性→生成,找到iOS目标的“启动对象”,确认选中的是iOS平台的
Program类。
5. 验证iOS的Program.cs内容
确保iOS的Program.cs为标准MAUI入口结构,无多余Main方法:
namespace 你的应用命名空间.Platforms.iOS; public class Program { static void Main(string[] args) { UIApplication.Main(args, null, typeof(AppDelegate)); } }
内容的提问来源于stack exchange,提问作者Enes Bartu Unal
相关产品推荐
相关产品推荐

