不能 运行 来自 Visual Studio 的 iPhone 模拟器中的 Xamarin 应用程序 Mac

Can't run a Xamarin App in iPhone Simulator from Visual Studio For Mac

简而言之:我无法在 iPhone 模拟器中 运行 我的应用程序。没有“播放按钮”(三角形),只有调试器按钮(锤子):

正如您在上面看到的,我有“通用模拟器”。当我点击它时,没有可供选择的各种iPhones/iPads列表:

如果我选择 Android,我可以 运行 应用程序:

我已经安装了 XCode。我运行XCode一次。 我还安装了命令行工具。

我创建了一个新的 Xamarin Forms 应用程序: 这是我的 iOS 构建选项:

我可以单独 运行 模拟器:

在 XCode 和 运行 模拟器中创建应用程序有效:

info.plist:

首选项 -> SDK 位置 -> Apple

构建 -> 配置:

这里是更重要的。如果我 运行 我的 Windows 机器上的 Xamarin 应用程序使用 Mac 上的 iPhone 模拟器,它就可以工作! 我需要做什么才能在模拟器中 运行 我的应用程序 vis Visual Studio for Mac?

我假设您已经尝试了一些基本操作,例如重新启动 Mac 等。所以这里有一些可能会解决您的问题的方法:

  • 检查您的构建配置,here 是一个不错的视频
  • 为 Mac 关闭 VS,启动 Xcode 并在模拟器上创建一个测试项目 运行。如果有效,请在 VS 中重试 Mac
  • 关闭 Mac 的 VS,转到 Xcode -> 首选项 -> 帐户并下载您的开发者帐户的手动配置文件。在 VS 中重试 Mac
  • 清理您的项目:在 Mac 的 VS 中,转到构建 -> 全部清理。然后关闭 Mac 的 VS,转到您的项目文件夹并删除“yourprojectname”和“yourprojectname”。iOS 所有 bin 和 obj 文件夹。再试一次

如果这些都不起作用,我会尝试重新安装它(如果您有任何重要的项目,请备份):

  • 为 Mac 和 Xcode
  • 卸载 VS
  • 从 App Store 重新安装 Xcode
  • 为 Mac
  • 安装 Visual Studio

希望它有用..

几乎没有值得您检查的选项。 @WorldOfBasti 建议的选项加上以下内容。

  1. 配置

右键单击解决方案 -> 选项 -> 配置 -> 配置管理器 -> ProjectName.iOS with Debug|iPhoneSimulator 应该被选中,或者如果配置“ProjectName.iOS with Debug|iPhoneSimulator”不是可用然后从“常规”选项卡添加它

  1. Apple SDK 路径

检查 Apple SDK 路径是否设置正确(首选项 -> SDK 位置 -> Apple)。它应该有带有 Xcode 版本和 SDK 路径位置的绿色勾号。

  1. 最低系统版本(部署目标)

将部署目标更改为最低版本(即低于您的模拟器版本)

  1. 切换调试<->发布

今天我也遇到了和你一样的问题。我已经将调试切换到发布,iOS 到 Android。然后恢复到 iOS 并从顶部设备选择状态栏进行调试。然后出现模拟器选项。因此,UI 可能会在 Visual studio 中为 mac 更新问题。请试一试。

查看 Mac 日志的 Visual Studio,特别是 IDE 日志,我发现这一行 ... '目标 无法添加模拟设备的名称,因为它已被缓存'。

欢迎您通读所有这些……但您可能只想查看附录 2(最终版?),看看它是否适合您...它最终比我发现的任何其他东西都更简单、更快。

所以,起初,我开始使用终端的 'xcrun simctl erase all' 命令清除缓存,当我开始 Visual Studio for Mac 时,我可以 运行 Xamarin应用程序,但启动模拟器花了很多时间。

我发现了一些您可能想尝试的作品...

  • 在 Mac 上关闭 iOS 模拟器(如果有的话)。
  • 关闭连接到 Mac 的 Visual Studio 的所有副本 ... 在 Mac 本身或连接到 Mac 的另一台计算机上(如果任何)。
  • 开始 Visual Studio Mac。
  • 如果您无法 运行 Xamarin 应用程序,请为 Mac 关闭 Visual Studio。
  • 手动启动模拟器(我把它放在 Dock 中,所以我只需单击它)...等待它完全启动。
  • 现在关闭模拟器(从模拟器菜单)。
  • 现在为 Mac.
  • 重启 Visual Studio
  • 如果您仍然看不到 运行 上的模拟器设备...请再试一次上述步骤(这次您只需要关闭 Visual Studio for Mac 然后手动启动模拟器,等待它启动,然后退出模拟器,最后重新启动 Visual Studio for Mac).

它仍然不是很好,但这(到目前为止)一直对我有用。如果我从终端执行 'xcrun simctl erase all' 命令,模拟器的启动速度要快得多。

附录:上面的大部分时间都有效。但偶尔我仍然需要使用 'xcrun simctl erase all' 命令从终端清除缓存。

Also:我还发现(虽然这可能只是我的想象)清除 Visual Studio for Mac 临时 .binlog 文件是写在 'T' 文件夹中 有时 可以解决问题(如果你查看来自 Visual Studio 的 IDE 日志以获取 Mac;对在“无法添加目标 模拟设备的名称 消息之后,您应该会看到正在创建一些 .tmp 文件。创建它们的目录是我正在谈论的 'T' 文件夹)。我有时会删除 tmp*.binlog 和 tmp*.tmp 作为最后的努力,然后再使用 'xcrun simctl erase all' 命令尝试返回到 Visual Studio for Mac 将看到 iOS模拟器设备。

最后: 这真的开始感觉像是 Visual Studio 中 Mac 启动(或可能在 iOS 项目期间)的错误加载)。我这么说的原因是我总是可以从 Visual Studio 看到 Windows 的 iOS 设备列表(只要我可以连接到 Mac)。此外,我可以将 Visual Studio 保留 Mac 运行ning(甚至隐藏)并在 Windows 的 iOS 模拟器上测试应用程序,然后,留下iOS Mac 上的 运行 模拟器,Mac Visual Studio 上的 运行 应用程序。如果模拟器真的有 'caching issue',在我看来,在使用来自 Windows 的 iOS 模拟器后,我应该 运行 在 Mac 上设置任何东西,但它始终有效。现在,我正在 Mac 上开发一个 Xamarin 项目(我不使用 Mac 做任何其他事情),所以我只让 Visual Studio 代表 Mac 'open at login'(停靠设置)并自动 'load previous solution on startup'(Visual Studio 用于 Mac 设置),隐藏 Visual Studio 用于 Mac(停靠设置)和如果我需要它,Mac 的 Visual Studio 已经加载并且能够看到 iOS 设备到 运行 应用程序,只需快速单击 Dock 图标。

附录 2(最终版?): 我现在发现,如果我只是关闭我打开的显示 'Generic Simulator' 的解决方案,然后重新打开它而不退出 Visual Studio for Mac(有时我必须多次这样做......我想在它最终起作用之前我已经数了 5 次),它会开始显示设备列表,我可以运行 模拟器中的 iOS 应用程序。如果模拟器已经 运行ning,我什至不必关闭它,这样可以节省大量时间。

对我来说它仍然感觉像是一个错误,我不明白为什么我必须多次 close/open 解决方案才能列出 iOS 设备并能够 运行 一个 iOS 应用程序。真正让我着迷的是,如果我重新启动 Mac,不要打开模拟器并为 Mac 启动 Visual Studio,然后打开一个解决方案,我 still 必须完成 close/re-open 解决步骤...有时不止一次。模拟器未设置为自动启动或类似的设置。但是,至少,它变得越来越简单,花费的时间也越来越少,我可以 运行 一个 iOS 应用程序。