Известные проблемы с программой для разработчиков UWP для XboxKnown issues with UWP on Xbox Developer Program

В этом разделе описываются известные проблемы с программой для разработчиков UWP для Xbox One.This topic describes known issues with the UWP on Xbox One Developer Program. Дополнительные сведения об этой программе см. в разделе UWP для Xbox.For more information about this program, see UWP on Xbox.

[Если вы поступили отсюда по ссылке в справочном разделе по API и ищете сведения об API универсального семейства устройств, см. раздел функции UWP, не поддерживаемые в Xbox.][If you came here from a link in an API reference topic, and are looking for Universal device family API information, see UWP features not supported on Xbox.]

В следующем списке приведены некоторые известные проблемы, которые могут возникнуть при работе (список не является исчерпывающим).The following list highlights some known issues that you may encounter, but this list is not exhaustive.

Мы хотим услышать ваши отзывы, поэтому сообщайте о любых возникающих проблемах на форуме Разработка приложений для универсальной платформы Windows.We want to get your feedback, so please report any issues that you find on the Developing Universal Windows Platform apps forum.

Если ваша проблема не решена, прочитайте информацию в этом разделе и обратитесь к разделу Вопросы и ответы, а также используйте форумы, чтобы получить помощь.If you get stuck, read the information in this topic, see Frequently asked questions, and use the forums to ask for help.

Развертывание из VS не выполняется при включенном родительском контролеDeploying from VS fails with Parental Controls turned on

Запустить приложение из VS не удастся, если в параметрах консоли включена функция родительского контроля.Launching your app from VS will fail if the console has Parental Controls turned on in Settings.

Чтобы решить эту проблему, временно отключите родительский контроль, либо выполните следующие действия.To work around this issue, either temporarily disable Parental Controls, or:

  1. Разверните приложение на консоли с выключенным родительским контролем.Deploy your app to the console with Parental Controls turned off.
  2. Включите родительский контроль.Turn on Parental Controls.
  3. Запустите приложение с консоли.Launch your app from the console.
  4. Введите ПИН-код или пароль, чтобы разрешить запуск приложения.Enter a PIN or password to allow the app to launch.
  5. Приложение запустится.App will launch.
  6. Закройте приложение.Close the app.
  7. Запустите из VS, нажав F5, и приложение запустится без каких-либо предварительных запросов.Launch from VS using F5, and the app will launch with no prompting.

На этом этапе разрешение является закрепленным до тех пор, пока не будет выполнен выход пользователя, даже если удалить и переустановить приложение.At this point the permission is sticky until you sign the user out, even if you uninstall and reinstall the app.

Существует еще один тип исключения, доступный только для детских учетных записей.There is another type of exemption that is only available for child accounts. Учетная запись ребенка требует, чтобы родитель выполнил вход для выдачи разрешения, однако когда это происходит, родитель может выбрать параметр Всегда, чтобы разрешить ребенку запускать приложение.A child account requires a parent to sign in to grant permission, but when they do, the parent has the option of choosing to Always allow the child to launch the app. Это исключение хранится в облаке и останется в силе, даже если ребенок выйдет из приложения и снова войдет.That exemption is stored in the cloud and will persist even if the child signs out and signs back in.

StorageFile.CopyAsync не удается скопировать зашифрованные файлы в незашифрованное место назначенияStorageFile.CopyAsync fails to copy encrypted files to unencrypted destination

Когда StorageFile.CopyAsync используется для копирования зашифрованного файла в незашифрованное место назначения, вызов завершается ошибкой, за исключением следующих случаев:When StorageFile.CopyAsync is used to copy a file that is encrypted to a destination that is not encrypted, the call will fail with the following exception:

System.UnauthorizedAccessException: Access is denied. (Excep_FromHResult 0x80070005)

Это может повлиять на разработчиков Xbox, которым нужно скопировать файлы, развернутые в составе пакета приложения, в другом расположении.This can affect Xbox developers who want to copy files that are deployed as part of their app package to another location. Причина в том, что содержимое пакета зашифровано в коммерческом режиме Xbox, а не в режиме разработки.The reason for this is that the package contents are encrypted on an Xbox in retail mode, but not in Dev Mode. В результате приложение может работать должным образом во время разработки и тестирования, но затем произойдет сбой после публикации и установки на коммерческой консоли Xbox.As a result, the app may appear to work as expected during development and testing, but then fail once it has been published and then installed to a retail Xbox.

Заблокированные сетевые порты на Xbox OneBlocked networking ports on Xbox One

Приложения для универсальной платформы Windows (UWP) на устройствах Xbox One не могут выполнять привязку к портам в диапазоне [57344, 65535].Universal Windows Platform (UWP) apps on Xbox One devices are restricted from binding to ports in the range [57344, 65535], inclusive. Несмотря на то, что во время выполнения кажется, что привязка к таким портам выполнена успешно, сетевой трафик отбрасывается прежде, чем достигнет вашего приложения.Although binding to these ports might appear to succeed at run-time, network traffic can be silently dropped before reaching your app. По возможности ваше приложение должно осуществлять привязку к порту 0, что позволяет системе выбрать локальный порт.Your app should bind to port 0 wherever possible, which allows the system to select the local port. Если требуется использовать определенный порт, номер порта должен лежать в диапазоне [1025, 49151] и необходимо проверять и избегать возможных конфликтов с реестром IANA.If you need to use a specific port, the port number must be in the range [1025, 49151], and you should check and avoid conflicts with the IANA registry. Дополнительные сведения см. в разделе Имя службы и реестр номера порта транспортного протокола.For more information, see the Service Name and Transport Protocol Port Number Registry.

Покрытие среда выполнения Windows APIWindows Runtime API coverage

Не все среда выполнения Windows API поддерживаются в Xbox.Not all Windows Runtime APIs are supported on Xbox. Список API-интерфейсов, которые мы не работаем, см. в статье о функциях UWP, не поддерживаемых в Xbox.For the list of APIs that we know don't work, see UWP features not supported on Xbox. При обнаружении проблем с другими API следует сообщить о них на форумах.If you find issues with other APIs, please report them on the forums.

Вы получите предупреждение о предоставленном сертификате (см. пример на следующем снимке), потому что сертификат безопасности подписан вашей консолью Xbox One, а она не считается известным и доверенным издателем.You will receive a warning about the certificate that was provided, similar to the following screenshot, because the security certificate signed by your Xbox One console is not considered a well-known trusted publisher. Чтобы перейти на портал устройств Windows, щелкните Перейти к этому веб-сайту.To access the Windows Device Portal, click Continue to this website.

Предупреждение о сертификате безопасности веб-сайта

Пояснение для KnownFolders.MediaServerDevices на XboxKnownFolders.MediaServerDevices caveat on Xbox

На рабочем столе серверы мультимедиа "связываются" с ПК, а служба сопоставления устройств постоянно отслеживает, какие серверы сейчас активны, поэтому первоначальный запрос файловой системы может немедленно вернуть список связанных серверов, активных в настоящее время.On Desktop, media servers are “paired” with the PC, and the Device Association Service is constantly tracking which of the servers are currently on-line, so an initial file system query can immediately return a list of the paired servers that are currently online.

На Xbox не предусмотрены элементы пользовательского интерфейса для добавления или удаления серверов, поэтому первоначальный запрос файловой системы всегда будет возвращаться пустым.On Xbox, there is no UI to add or remove servers, so the initial file system query will always return empty. Необходимо создать запрос и подписаться на событие ContentsChanged, а затем обновлять запрос при каждом получении уведомления.You must create a query and subscribe to the ContentsChanged event and refresh the query each time you get a notification. Серверы будут постепенно добавляться, и большинство из них будут обнаружены в течение 3 секунд.Servers will trickle in and most will have been discovered within 3 seconds.

Простой пример кода:Simple example code:

namespace TestDNLA {

    public sealed partial class MainPage : Page {
        public MainPage() {
            this.InitializeComponent();
        }

        private async void FindFiles_Click(object sender, RoutedEventArgs e) {
            try {
                StorageFolder library = KnownFolders.MediaServerDevices;
                var folderQuery = library.CreateFolderQuery();
                folderQuery.ContentsChanged += FolderQuery_ContentsChanged;
                IReadOnlyList<StorageFolder> rootFolders = await folderQuery.GetFoldersAsync();
                if (rootFolders.Count == 0) {
                    Debug.WriteLine("No Folders found");
                } else {
                    Debug.WriteLine("Folders found");
                }
            } catch (Exception ex) {
                Debug.WriteLine("Error: " + ex.Message);
            } finally {
                Debug.WriteLine("Done");
            }
        }

        private async void FolderQuery_ContentsChanged(Windows.Storage.Search.IStorageQueryResultBase sender, object args) {
            Debug.WriteLine("Folder added " + sender.Folder.Name);
            IReadOnlyList<StorageFolder> topLevelFolders = await sender.Folder.GetFoldersAsync();
            foreach (StorageFolder topLevelFolder in topLevelFolders) {
                Debug.WriteLine(topLevelFolder.Name);
            }
        }
    }
}

См. также разделSee also