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

.NET MAUI iOS模拟器启动报错CS0017:存在多个入口点

解决.NET MAUI iOS模拟器启动时的CS0017入口点重复错误

排查与修复步骤

1. 检查多平台Program.cs的编译范围

  • 确认Platforms/iOS目录下仅存在一个Program.cs,同时打开项目的.csproj文件,检查各平台的Program.cs是否通过Condition限定了仅对应平台编译。比如Android的Program.cs配置应该如下:
    <Compile Include="Platforms\Android\Program.cs" Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'" />
    
    若发现iOS编译时意外包含了其他平台的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:16:07