Visual studio 如何在物理iOS设备上调试Xamarin.iOS应用程序

Visual studio 如何在物理iOS设备上调试Xamarin.iOS应用程序,visual-studio,xamarin,xamarin.ios,xamarin-studio,ios-provisioning,Visual Studio,Xamarin,Xamarin.ios,Xamarin Studio,Ios Provisioning,对于这个冗长的问题,我提前表示歉意,但我已经浪费了3天时间试图建立一个Xamarin.iOS开发环境,该环境允许我在物理设备(而不是iPhone模拟器)上进行调试,但没有成功,我不知下一步该怎么做 我相信我的设置是相当标准的Xamarin配置: 运行Visual Studio 2015和Xamarin v4.2.0.703的Windows 10 PC HTC phone USB连接到PC进行Android调试(工作正常) 使用Xamarin Studio v6.1.1和Xcode v8.0运行

对于这个冗长的问题,我提前表示歉意,但我已经浪费了3天时间试图建立一个Xamarin.iOS开发环境,该环境允许我在物理设备(而不是iPhone模拟器)上进行调试,但没有成功,我不知下一步该怎么做

我相信我的设置是相当标准的Xamarin配置:

  • 运行Visual Studio 2015和Xamarin v4.2.0.703的Windows 10 PC
  • HTC phone USB连接到PC进行Android调试(工作正常)
  • 使用Xamarin Studio v6.1.1和Xcode v8.0运行OS X 10.11的MacBook
  • iPhone或iPad USB连接到Mac进行iOS调试
我首先在VisualStudio中创建了一个Xamarin解决方案,最初是在Android上开发和调试的

为了进行iOS调试,我使用Xcode和Xamarin Studio设置了Mac,启用了远程登录,并创建了一个虚拟Xcode项目,该项目与我的Xamarin.iOS应用程序具有相同的绑定标识符。我还尝试了一个相当复杂的过程,为应用程序创建签名身份和配置文件,并在Mac上下载/安装它们。这个过程非常不直观(Xcode中的视觉反馈非常差),以至于我不能确定我是否正确地完成了它。但是,我能够在iPhone上运行虚拟Xcode项目,所以我认为它一定可以吗

在Windows PC上,Visual Studio设置中的XamariniOS选项窗格确认Visual Studio已连接到Mac,并且连接的iPhone也被列为候选目标设备,因此似乎已为设备上调试设置了一切

如果我尝试在VisualStudio的iPhone模拟器上调试应用程序,它会正常工作。但是,在物理iPhone上调试失败,并显示以下无用消息:

Xamarin.Messaging.Exceptions.MonotouchException: error MT1006: Could not install the
application '/Users/Tim/Library/Caches/Xamarin/mtbs/builds/Test.iOS/c4f40041b6c58fc579a727bccfc18614/bin/iPhoneSimulator/Debug/TestiOS.app' 
on the device 'Tim’s iPhone': AMDeviceSecureInstallApplicationBundle returned: 0xe8008001.
作为比较,我还尝试直接在Mac上使用Xamarin Studio进行调试。同样,iPhone模拟器工作正常,但甚至无法使用物理设备启动调试会话,因为连接的iPhone未被列为调试| iPhone配置的候选目标设备

如果打开项目选项并导航到iOS调试视图,我可以看到与调试配置关联的平台是iPhoneSimulator。将其更改为iPhone,并保存看似有效的配置,但更改并未实际保存。我想这就是我的测试设备未被列出的原因,但我不清楚我需要做什么才能让Xamarin Studio接受我的更改

所以,在所有这些实验之后,我完全迷路了。这将是有益的,有一个完整的,健全的a-Z教程为这个设置过程,但如果失败,任何建议,我应该尝试下一步将非常感谢


更新:如果我使用特别的项目配置(在Visual Studio或Xamarin Studio中),它会在设备上正确部署和启动应用程序,但不会附加调试器。如果在临时项目配置中显式启用调试,Xamarin Studio将忽略它,但Visual Studio随后会附加调试器,但不会命中任何断点。这听起来对吗?它是否提供了我需要更改什么以使真正的调试正常工作的任何线索?

对于任何面临类似问题的人,我最终采用的解决方案需要一种“暴力”方法

我首先创建了一个新的Xamarin.Forms解决方案(使用标准的VisualStudio模板)并删除了不需要的平台项目(UWP和WindowsPhone)。在这个初始状态下,我验证了它能够在Android和iOS设备以及各自的模拟器上启动调试。一切正常,确认了我的Mac设置是正确的,并为我提供了调试所需的确切iOS项目配置

在这一点上,我假设配置问题必须对我以前的问题负责,所以我在原始解决方案中准确地复制了工作配置的每个细节。但它仍然拒绝在iOS上调试

然后我开始怀疑是引用的Nuget包导致了问题,所以我将原始实现中的所有引用包添加到新的测试解决方案中。我本以为这会破坏iOS上的调试,但事实并非如此

最后,我仔细地将原始解决方案的全部内容(XAML&代码隐藏文件、视图模型、资源等)移植到测试解决方案中,并继续正确地进行调试


因此,在没有可行的诊断程序的情况下,我通过从头开始重新构建解决方案,有效地解决了问题。据我所知,没有更改任何代码,也没有更改任何配置设置,但新的实现现在可以在所有目标环境中可靠地进行调试。

正如文档中所述:


(对不起,我只是认为当前接受的答案更适合于故障排除页面,而不是一般情况。)

听起来您并没有为iPhone/iPad配置:@SushiHangover:谢谢。使用Xcode>Window>Devices,我刚刚检查了iPhone上是否安装了配置文件。我在我的苹果帐户中反复检查了安装的配置文件,其中包括我的开发签名ID,并列出了3台设备,其中一台是我正在调试的iPhone。奇怪。。。。我们有一堆机器人,它们不能与Xamarin的调试器一起工作(但可以使用w/a.s.),但如果设置了它们,就不会出现iOS问题。iDevices(10?)上有哪些iOS版本?iOS 9.3版的iPhone 4以及iOS 10版的iPhone 5和6+。您可能需要在iOS项目的属性中的VS中手动设置配置文件,如所述