新しいカスタム ページ レイアウトを使用する Microsoft Band アプリを作成しています。Microsoft Visual Studio Community 2013 update 4 を使用しています。すべて正常に動作しており、アプリはテスト環境でうまく動作します (つまり、アプリをコンピューターから電話にプッシュした場合)。ただし、ストア ビルドを作成し、ベータ アプリ パッケージを作成してストアからダウンロードし、アプリを介してバンド タイルをインストールしようとすると、例外が発生します。繰り返しますが、アプリを介してバンド タイルをインストールした場合、アプリが開発環境からプッシュされた場合、例外は発生しませんが、同じコードを使用してアプリ パッケージを作成し、プロセスを繰り返した場合は発生しますが、新しくダウンロードされたバイナリ。
バンド タイルがバンドに正常に追加されましたが、バンド アプリには、追加しようとした 5 つのカスタム ページ レイアウトの最初のものしかありません。多くの試行錯誤の結果、私はこれを知っています (App Store にアップロードされた数十のベータ版アプリ パッケージ)。
私は他のベータ テスターに依頼しましたが、全員が同じ例外を受け取りました。
例外の詳細はこちら
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 アプリ ストアを通じてアプリを送信した最初の開発者です。Microsoft 側にバグがあるように感じます。