Visual Studio(Xamarin)在每次构建、清理或重建时卡顿,同时AAPT.exe在后台运行。

10
我已经连续几天在尝试解决这个问题,但一直没有头绪。
以下是具体情况:
  1. 每次我打开项目时,VS都会卡住,有时候要等一分钟左右才能响应我之前点击的某个按钮。如果你观察任务管理器,你会看到AAPT.exe每隔几秒钟就会弹出来运行一会儿,大约3-5分钟后,它会完成它正在做的事情,然后VS才会恢复工作,直到我再次触发它。
  2. 清理项目时也是同样的情况。
  3. 构建/重建项目时也是同样的情况。
  4. 调试到实体设备时,它会构建并部署到设备上,然后出现相同的问题,需要几分钟时间才能开始调试。
我所发现的:
这个问题可能与此bug报告有关:https://bugzilla.xamarin.com/show_bug.cgi?id=43081 但按照那里提供的说明不起作用,只会导致更多错误。
似乎aapt在压缩我的png文件,导致了这个问题,但是我整个项目中只有几个小图标,不应该需要2-3分钟的时间来压缩。
我所尝试的:
  1. 将所有android SDK和资源更新到最新版本。
  2. 更新java(64位)并删除除最新版本外的所有其他实例。
  3. 删除并重新安装所有android资源。
  4. 修复Visual Studio(社区版2015)。
  5. 使用https://github.com/Microsoft/VisualStudioUninstaller/releases卸载VS。
  6. 尝试安装VS 2017社区版,但它从未正常工作,出现了CLR20r3从mscorlib 4.6.1的错误,错误是找不到'remoteHostService.servicehub.service.json'(我检查过它存在于应该在的位置,并引用了VsixServiceDiscovery:由'Microsoft.VisualStudio.Settings.15.0.dll'导入的一个过程无法加载。(不幸的是,我没有完整的跟踪信息,因为我已经卸载了17)。
  7. 在所有这些尝试之后,我重新安装了VS 15,虽然勉强能用,但仍然存在和一开始一样的问题。
现在,我的下一步计划是彻底清除电脑,但我真的不想这样做,所以我迫切希望有人知道如何解决这个问题。

你能否将诊断构建输出附加到你的问题上?https://msdn.microsoft.com/zh-cn/library/jj651643.aspx - Jon Douglas
这是一个重建过程。构建完成后,aapt.exe继续在VS中挂起了另外5分钟。我将尝试清理并进行完整的构建,看看是否有任何不同。 - Taylor
@JonDouglas 如果有任何区别的话,我确实已经使用你的指南修改了Android SDK,以解决7.1上的Proguard问题,具体请参考https://dev59.com/C1kS5IYBdhLWcg3wu4zL#39514706。 - Taylor
我看到14495 ms _CompileToDalvikWithDx 1 calls是主要的罪魁祸首。但这还不到30秒。我们看到6701 ms Aapt 2 calls,但那甚至更少。我怀疑这个构建只花了大约30秒,这是根据摘要所述的事实:Time Elapsed 00:00:30.63。如果构建只需要30秒,而aapt.exe却挂起了5分钟,我怀疑其他问题正在发生。这个挂起是在构建期间还是之后?你能使用进程资源管理器并悬停在aapt.exe进程上,看看是什么调用了它吗? - Jon Douglas
@JonDouglas 这里有两张 aapt 在构建后被调用的截图。我注意到在系统构建时它是由 MSBuild.exe 调用的,但当出现挂起问题时,devenv 直接调用它。 http://prntscr.com/ejjqx1 http://prntscr.com/ejjr6a - Taylor
1个回答

7
在尝试了一些东西后,我注意到我的解决方案中来自NuGet的相当一部分包上有一个三角形,表示没有引用。
最终,我发现在我上述每个事件之后,AAPT实际上会重新下载我解决方案中的所有约20个软件包,因为由于某种原因,它未能将项目链接到本地副本,尽管它们已经存在。
解决方案可以在这个线程中找到: https://forums.xamarin.com/discussion/89926/the-referenced-component-xamarin-android-support-xxx-could-not-be-found-after-upgrade-with-nuget Ronald Peters说道: 2月23日 我通过强制重新安装软件包来修复了黄色标记:打开NuGet Package Manager控制台并执行“Update-Package-reinstall”。
这迫使所有软件包从项目中删除所有引用并重新安装自己。大多数软件包最终只需找到本地副本并需要重新链接即可。
运行此操作后,VS不再在上述任何事件后挂起,并且一切似乎都正常工作。

Worked for me!! - Simon
谢谢您。实际上那个方法并没有起作用,但我成功地更新了所有的软件包以解决问题。 - gregoryp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接