向Microsoft Band磁贴添加自定义页面布局时出现BandIOException(仅限存储二进制文件)

时间:2015-08-05 17:34:05

标签: microsoft-band

我正在创建一个使用新自定义页面布局的Microsoft Band应用程序。我正在使用Microsoft Visual Studio社区2013更新4.我的一切工作正常,应用程序在我的测试环境中运行良好(即当我将应用程序从我的计算机推送到我的手机时)。但是,一旦我创建了商店版本并创建了一个测试版应用程序包并从商店下载并尝试通过应用程序安装Band图块我就会得到一个例外。我再说一遍,当我从开发环境中推送应用程序时,我通过应用程序安装Band磁贴时没有异常,但是当我使用相同的代码创建应用程序包并重复该过程时,我会这样做,但是新下载的二进制文件。

Band磁贴成功添加到我的乐队,但我的乐队应用只有我试图添加的5个自定义页面布局中的第一个。我经过多次试验和错误后知道这一点(已将数十个测试版应用程序包上传到App Store)。

我已经征求了其他beta测试人员,他们都收到了同样的例外。

以下是例外详情

Microsoft.Band.BandIOException:
Exception of type 'System.Resources.MissingManifestResourceException' was thrown. ---> System.Resources.MissingManifestResourceException: 
Exception of type 'System.Resources.MissingManifestResourceException' was thrown.
at
System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
at
Microsoft.Band.BandResources.get_CommandStatusError()
at
Microsoft.Band.BandClient.CheckStatus(CargoStatus status, CommandStatusHandling statusHandling)
at
Microsoft.Band.BandClient.DynamicPageLayoutSetLayout(Guid appId, UInt32 layoutIndex, PageLayout layout)
--- End of inner exception stack trace ---
at
Microsoft.Band.BandClient.DynamicPageLayoutSetLayout(Guid appId, UInt32 layoutIndex, PageLayout layout)
at
Microsoft.Band.BandClient.AddTileOutsideSync(BandTile tile)
at
Microsoft.Band.BandClient.<>c__DisplayClass9b.<AddTile>b__9a()
at
Microsoft.Band.BandClient.RunUsingSynchronizedFirmwareUI(Action insideSync, Action afterSync)
at
Microsoft.Band.BandClient.AddTile(BandTile tile, Guid applicationId, IReadOnlyList`1 installedTiles)
at
Microsoft.Band.BandClient.<>c__DisplayClass6f.<<AddTileAsync>b_6c>d__71.MoveNext()
-- End of stack tracke from previous location where exception was thrown ---

经过多次尝试和错误后,我将问题简化为以下代码。当从App Store检索二进制文件并执行该方法时,它会产生错误。但是,当通过Microsoft Visual Studio 2013环境从本地计算机推送二进制文件并执行该方法时,它不会产生任何错误。此外,如果我删除添加自定义页面布局的行并通过商店和测试发送我的应用程序,则不会抛出任何异常。

public async Task CreateBandTile() {
        try
        {
            Guid tileId = new Guid("2D3A78E2-84BB-4E56-AFEB-B160B2433E20");
            IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
            IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);

            BandTile myTile = new BandTile(tileId)
            {
                Name = "My Band Tile",
                TileIcon = await LoadIcon("ms-appx:///Assets/IconLarge.png"),
                SmallIcon = await LoadIcon("ms-appx:///Assets/IconSmall.png"),
                IsBadgingEnabled = false
            };

            FlowPanel page = new FlowPanel(
                new TextBlock()
                {
                    ElementId = 1,
                    Rect = new PageRect(0, 0, 100, 30),
                    Font = TextBlockFont.Small
                }
            )
            {
                Rect = new PageRect(0, 0, 245, 30)
            };

            // *** If I remove the following line, no exception is thrown ***
            myTile.PageLayouts.Add(new PageLayout(page));

            // Remove the Tile from the Band, if present. 
            await bandClient.TileManager.RemoveTileAsync(tileId);

            // Create the Tile on the Band.
            await bandClient.TileManager.AddTileAsync(myTile);
        }
        catch (Exception)
        {
            throw;
        }
}

我在这里做错了什么?也许我是第一个通过使用自定义布局的MS应用商店发送应用的开发人员。我觉得这里有一个微软的错误。

1 个答案:

答案 0 :(得分:0)

通过发布新的Microsoft Band SDK,该错误已得到解决。