2017-02-23 151 views
2

我有一个与Xamarin的Visual Studio 2015上的Android应用程序,它经常冻结。Visual Studio 2015 Xamarin冻结

我每次都可以复制的唯一场景就是在部署之后。 VS在应用程序部署在仿真器或设备上后立即冻结。该应用程序工作正常,但VS站立冻结了几秒钟。它也冻结在其他情况下。

无论我做什么,VS都不会显示“无法响应”的信息。它似乎在做一些后台工作,并没有真正冻结,但我无法弄清楚问题所在。

我重新创建了我的项目,当我添加资源并安装了一些NuGet包(appcompat v7和firebase云消息传递)时,问题又重新出现。

我猜它以某种方式与VS在一些布局文件不承认一些属性,如

shown in this image

1 - 有关冻结问题的任何帮助?

2 - 我能做些什么来VS识别这些属性?

3 - 我可以配置仅在构建时重新生成resources.cs吗?

更新

找到this,但并没有为我工作!

更新2

好了,现在我100%确定问题是与Android资源的产生。 aapt.exe是这个历史的恶棍,但我仍然无法让它每次都停止执行并冻结Visual Studio。是否有一些设置忽略布局文件或类似的XML错误?

回答

0

我是创建你引用的bugzilla文章的人。

您确定您在正确的地方有<AndroidResgenExtraArgs>--no-crunch </AndroidResgenExtraArgs>?它必须是你使用里面的配置,即.csproj必须是这样的,如果你是在Debug | AnyCPU配置部署:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
<AndroidResgenExtraArgs>--no-crunch </AndroidResgenExtraArgs> 

(也注意到--no-crunch后的尾部空间)

顺便说一句我也有麻烦在安装Nugets时使用aapt.exe--no-crunch对此没有帮助。什么是暂时重命名aapt.exeaapt2.exe - Visual Studio不运行aapt进程,因为它无法找到exe文件,并且Nuget安装速度很快。但是这可能无法用于构建和部署,我认为它会引发错误。

+0

其实我添加了 true,因为这另外一个会导致一些用户界面问题......我也把我所有的PNG文件都改成了PNG,但是没用。但重新组织我的csproj文件做到了。我现在将添加我的解决方案。 – user3701240

0

好吧,在尝试了很多东西之后,我做出了一个幸运的猜测,它很有效。

我一直在寻找我的csproj,发现一些奇怪的东西,比如:

<ItemGroup> 
    <AndroidResource Include="Resources\layout\onefile.axml" /> 
</ItemGroup> 
<ItemGroup> 
    <AndroidResource Include="Resources\layout\anotherfile.axml" /> 
</ItemGroup> 
<ItemGroup> 
    <AndroidResource Include="Resources\layout\onemorefile.axml"> 
     <SomeOtherAttributes /> 
    </AndroidResource> 
</ItemGroup> 

所以我想到的是组织ItemGroups就值得一试,并把所有ItemGroups(类,布局,图像,字符串等)在一起,如:

<ItemGroup> 
    <AndroidResource Include="Resources\layout\onefile.axml" /> 
    <AndroidResource Include="Resources\layout\anotherfile.axml" /> 
    <AndroidResource Include="Resources\layout\onemorefile.axml" /> 
</ItemGroup> 

它的工作超出了我的预期。不仅解决了我的冻结问题......它使VS比我之前的冻结问题更快......真的更快!

我不知道重组csproj文件是否会导致任何类型的问题,但是我会和其他项目一样做,看看会发生什么。

我做了一个关于csproj和ItemGroup的快速调查,发现没有什么相关的......我相信这是一种错误!