【问题标题】:Visual Studio 2015 Xamarin freezingVisual Studio 2015 Xamarin 冻结
【发布时间】:2017-02-23 13:21:18
【问题描述】:

我在带有 Xamarin 的 Visual Studio 2015 上有一个 Android 应用程序,它经常死机。

我每次都能重现的唯一场景是在部署之后。 VS 在应用程序部署到模拟器或设备后立即冻结。该应用程序运行良好,但 VS 冻结了几秒钟。它也会在其他情况下冻结。

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

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

我猜这与 VS 无法识别某些布局文件中的某些属性有关,例如

.

1 - 对冻结问题有帮助吗?

2 - 我可以做些什么来让 VS 识别这些属性?

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

更新

找到this,但对我没有用!

更新 2

好的,现在我 100% 确定问题出在 android 资源的生成上。 aapt.exe 是这段历史的恶棍,但我仍然无法让它每次都停止执行和冻结 Visual Studio。是否有一些设置可以忽略布局文件上的 xml 错误或类似的东西?

【问题讨论】:

    标签: android xamarin visual-studio-2015


    【解决方案1】:

    我是创建您所引用的 bugzilla 帖子的人。

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

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

    (还要注意--no-crunch之后的尾随空格)

    顺便说一句,我在安装 Nugets 时也遇到了 aapt.exe 的问题,而 --no-crunch 对此没有帮助。暂时将aapt.exe 重命名为aapt2.exe 有帮助 - Visual Studio 不运行aapt 进程,因为它找不到 exe 文件并且 Nuget 安装速度很快。但这可能不适用于构建和部署,我认为它会引发错误。

    【讨论】:

    • 实际上我添加了 true 因为另一个会导致一些 UI 问题...我还将所有 png 文件都更改为 PNG,但没有用。但是重组我的 csproj 文件做到了。我现在将添加我的解决方案。
    【解决方案2】:

    好吧,在尝试了很多东西之后,我做了一个幸运的猜测并且成功了。

    我在查看我的 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 进行了快速研究,但没有发现任何相关...我相信这是一个错误!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-19
      • 2017-09-09
      • 2016-07-22
      • 2016-02-14
      • 1970-01-01
      • 2015-12-01
      • 2017-11-12
      • 1970-01-01
      相关资源
      最近更新 更多