Band SDK:MissingManifestResourceException при вызове TileManager.AddTileAsync(

Привет, у меня проблема с MissingManifestResourceException, что я нашел аналогичный пост на форумах MSDN, в котором им было рекомендовано опубликовать здесь, чего не было в OP. Поэтому я повторно разместил его здесь, потому что ОП объясняет проблему гораздо более красноречиво, чем я могу...

Исходное сообщение

Hi,

не знаю, правильный ли это форум.

Я попытался создать простую тестовую плитку на MS Band, и я схожу с ума. Я разрабатываю с использованием Windows 10 10074 и VS 2015 CTP.

Прежде всего, когда выдается исключение, вы всегда получаете вводящее в заблуждение System.Resources.MissingManifestResourceException, скрывающее ваше фактическое исключение (из того, что кажется невозможным найти локализованное содержимое ресурса). Проверяя трассировку стека, вы получаете фактическое исключение во второй позиции сверху.

Во-вторых, когда я создаю простую плитку без макетов и прочего, все идет хорошо. Но как только я добавлю что-то такое простое, как это:

var controlsPageLayout = new PageLayout(new FilledPanel() { Rect = new PageRect(0, 0, 245, 102) });

tile.PageLayouts.Add(controlsPageLayout);

Я получаю и System.Resources.MissingManifestResourceException, и Microsoft.Band.BandIOException. Вот трассировка стека:

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()

Знаете ли вы, какова возможная причина этих проблем? Спасибо


person Numpty    schedule 15.05.2015    source источник
comment
Не могли бы вы опубликовать трассировку для первого исключения? Я думаю, что знаю, в чем проблема, и я работаю над образцом, чтобы воспроизвести проблему и решение :)   -  person Iris Classon    schedule 15.05.2015
comment
Привет, Ирис, спасибо за помощь. Как вы можете видеть ниже, я почти уверен, что это как-то связано с его запуском в 2015 RC.   -  person Numpty    schedule 15.05.2015


Ответы (2)


Хорошо, я думаю, проблема как-то связана с Visual Studio 2015 RC. Я переустановил обновление 4 2013 года (на Windows TP 10074), и проблема больше не возникает.

Я надеюсь, что это поможет кому-то другому.

person Numpty    schedule 15.05.2015

Использование VS 2015 CTP6 работало хорошо. Теперь у меня есть VS2015RC и это исключение.

Быстрое и грязное исправление: просто поместите AddTileAsync вокруг try/catch! Я сделал это, увидев, что даже если он выдает исключение, плитка находится на моей полосе, и похоже, что исключение возникает при получении локализованного статуса для команды добавления (мой ноутбук настроен на французский язык). Так что обойдите исключение и попробуйте запустить .SetPagesAsync: работает как шарм... Вот мой код:

await bandClient.TileManager.RemoveTileAsync(myTile.TileId);
try
{
    await bandClient.TileManager.AddTileAsync(myTile);
    System.Diagnostics.Debug.WriteLine("AddTileOk");
}
catch (BandIOException bandex)
{
    System.Diagnostics.Debug.WriteLine($"ex:{bandex.Message}{Environment.NewLine}InnerException : {bandex.InnerException}");
    if (bandex.Message != "Exception of type 'System.Resources.MissingManifestResourceException' was thrown.")
        throw;
}
await bandClient.TileManager.SetPagesAsync(myTile.TileId, page);

Для информации, вот InnerException:

{System.Resources.MissingManifestResourceException: было выдано исключение типа «System.Resources.MissingManifestResourceException». в System.Resources.ResourceManager.GetString(имя строки, язык и региональные параметры CultureInfo) в Microsoft.Band.BandResources.get_CommandStatusError() в Microsoft.Band.BandClient.CheckStatus(состояние CargoStatus, CommandStatusHandling statusHandling) в Microsoft.Band.BandClient.DynamicPageLayoutSetLayout(Guid appId, UInt32 layoutIndex, макет PageLayout)} [System.Resources.MissingManifestResourceException]: {System.Resources.MissingManifestResourceException: было создано исключение типа «System.Resources.MissingManifestResourceException». в System.Resources.ResourceManager.GetString(имя строки, язык и региональные параметры CultureInfo) в Microsoft.Band.BandResources.get_CommandStatusError()
в Microsoft.Band.BandClient.CheckStatus(состояние CargoStatus, CommandStatusHandling, statusHandling) в Microsoft.Band.BandClient. DynamicPageLayoutSetLayout(Guid appId, UInt32 layoutIndex, макет PageLayout)} Данные: {System.Collections.ListDictionaryInternal} HelpLink: null HResult: -2146233038 InnerException: null Сообщение: "Выдано исключение типа System.Resources.MissingManifestResourceException". Источник: «mscorlib» StackTrace: «в System.Resources.ResourceManager.GetString (имя строки, культура CultureInfo)\r\n в Microsoft.Band.BandResources.get_CommandStatusError()\r\n в Microsoft.Band.BandClient.CheckStatus( Статус CargoStatus, статус CommandStatusHandlingHandling)\r\n в Microsoft.Band.BandClient.DynamicPageLayoutSetLayout(Guid appId, UInt32 layoutIndex, макет PageLayout)

Надеюсь это поможет!

person DarkAngel    schedule 19.05.2015