提交验证器质量检查

提交验证器识别的问题类型将随着时间的推移而发展和演变,以实现从提交到认证再到市场的平滑过渡。

提交验证器运行以下质量检查。

可用版本

提交验证器检查以确保所安装的版本是最新版本和正确版本。 否则,将在提交验证器输出日志中记录一个故障。 该故障消息如下所示,其中包含正确版本的下载链接。

<component>Available Version Check</component>
<failure>A required update to Submission Validator is available. The latest version can be downloaded from https://go.microsoft.com/fwlink/?LinkId=393356. Download and install the update, then rebuild the package. Contact your 
Developer Account Manager for assistance.</failure> 

已批准的游戏 OS

提交验证器检查 Microsoft 游戏开发工具包 (GDK) 中的游戏 OS 和任何可选组件是否来自 Microsoft 游戏开发工具包 (GDK) 的同一版本,以及它们是否是已发布游戏中使用的批准版本。 如果该版本不在已批准或已弃用的列表中,则验证器日志中将包含一项故障内容,如下所示。

<failure>The GameOS included in this package is not an approved version. Use only 
supported GameOS versions according to the Approved Libraries page on the Developer 
Network Portal</failure>  

如果在已弃用列表中找到了该版本,则将在验证器日志中包含一条警告,指示此功能仅对最初在该弃用版本上发布的游戏的内容更新有效,如下所示。

<warning>The GameOS included in this package is not approved for new title submissions. 
This version is allowed only for Content Updates where the original release used this 
version. Use only supported GameOS versions according to the Approved Libraries page on 
the Developer Network Portal</warning>  

如果这些组件的版本彼此不匹配,或者该版本不在已批准或弃用的列表中,则将记录故障,如下所示。

<failure>The GameOS version does not match the version of other Microsoft components 
included in this package. Use only components from the same Microsoft Game Development Kit (GDK)/Xbox One Software Development Kit release. Refer to the 
Approved Libraries page on the Developer Network Portal</failure>  

注意

如果运行提交验证器的开发电脑不能访问在线信息(例如电脑无法访问 Internet、受到防火墙阻止或根本没有网络连接),那么提交验证器可能无法完成其验证检查。

内容(可下载内容 (DLC))的最终区块中的启动标记

为了确保在所有情况下都能正常操作,Content Package(内容包)必须使用“启动标记”属性标记最终区块。 如果最终区块未包含启动标记,则此包有可能被正确测试,但在某些情况下会导致最终用户出现问题。 故障消息如下所示。

<failure>Content Packages require final layout chunk to include attribute marker="Launch"</failure>  

其他 Resources.pri 文件

提交验证器检查布局的其他目录中是否不存在其他 Resources.pri 文件。 与 MicrosoftGame.config 一样,只使用根中的那一个。 然而,存在多个副本可能会导致关于哪一个是正确的,以及开发者对这些其他文件的意图方面的混淆。

这类似于检查 MicrosoftGame.config 的其他副本。在这种情况下,其他副本会导致日志中的外来文件检查部分出现故障,如下所示。

<failure>D:\path\mytitle\mytitlesubdirectory\resources.pri</failure>  

缺少 Resources.pri 文件

应用程序不需要本地化,但如果应用程序不包含根中的 Resources.pri 文件(与 MicrosoftGame.config 的位置相同),则以下警告将显示在输出日志的外来文件检查部分中。

<warning>Non-localized app: 'resources.pri' is missing</warning>  

每个包一个应用程序

提交验证器现在验证每个包中只包含一个非 DevOnly 应用程序的包。

最大包的大小

提交验证器检查以确保包未超过 49,900,000,000 字节的最大包大小。 这只是一条信息告知消息,而不是一条故障提示消息。

外来文件

在审查 Xbox 360 计划提交时遇到的一个问题是,提交中包含了各种文件,尽管这通常是偶然的,但这不应该是零售游戏的一部分。

外来文件检查使用布局 .xml 文件对导入游戏包的所有文件进行检查,以查找不允许存在于包中的特定文件名和扩展。 此检查仅基于文件名,而不基于文件的内容。 不允许的文件包括:与源文件和调试文件相关的扩展、Thumb.db、外部注册文件(根目录中的文件除外),以及不能在游戏包中出现的 Xbox 操作系统文件完整列表。 此检查用于验证 Xbox 要求 XR-003:提交的游戏质量。

下表显示了提交的游戏包中不允许的文件类型和扩展名。

文件类型 扩展
源代码相关文件 .c .cpp、.cs、.lib、.h、.obj
调试/符号信息文件 .pdb、sym
旧版 Binary(二进制)文件 .xbe

我们认识到一个游戏有可能合法使用几乎任何可能的文件扩展,这可能会导致与扩展检查的潜在冲突。 如果这对于你的游戏来说是一个问题,请提醒你的开发者客户经理 (DAM)。

如果你认为自己有特殊情况,需要在游戏程序包中包含一个文件,并为此在提交验证器日志中收到“失败”消息,则应咨询 DAM。

下面的示例显示了外来文件检查中显示故障的日志输出。

<component>Foreign File Check</component>
<failures>
  <failure>c:\MyTitle\loose\bar.cpp</failure>
  <failure>c:\MyTitle\loose\MySubDir\example.h</failure>
  <failure>c:\MyTitle\loose\MySubDir\PDBs\BlockedFiles\foo.pdb</failure>
</failures>
<filecount>3</filecount>  

Binary(二进制)扫描

Xbox 主机二进制(.exe 和 .dll)文件必须为 AMD64 所构建,并且只能是本机代码。 目前,平台上不支持托管代码 Binary(二进制)文件。 Binary(二进制)扫描检查会检查将包含在游戏包中的每个 .exe 和 .dll 文件,并确保游戏包符合这些要求。 此检查用于验证 XR-003:提交的游戏质量。

Binary(二进制)扫描部分也是检查每个 .exe 和 .dll 文件的依赖项的地方,这些依赖项由于零售主机上的安全原因而被阻塞。 通常,这将采用链接到平台文件、PIXEvt.dll 或 Xbox Studio 调试版本的形式。

下面的示例显示了 Binary(二进制)扫描检查中显示故障的日志输出。 前两个故障是 .exe 文件链接到两个文件的结果,这对于零售主机是不允许的。 第三个故障是托管型 .exe 文件。 最终故障是一个非 AMD64 本机代码 .dll 文件。

<component>Binary Scan</component>
      <dumpbinlocation>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\dumpbin.exe</dumpbinlocation>
      <failures>
   <failure>Non-retail dependency in file c:\MyTitle\loose\ExeWithDebugDependencies.exe: MSVCR110D.dll</failure>
  <failure>Non-retail dependency in file c:\MyTitle\loose\ExeWithDebugDependencies.exe: PIXEvt.dll</failure>
  </failures>
  <failure>Managed: Not AMD64: c:\MyTitle\loose\MySubDir\ABC.exe</failure>
  <failure>Not AMD64: c:\MyTitle\loose\MySubDir\XYZ.dll</failure>
</failures>  

开发者应确保此类以调试为中心的依赖项将排除在(要包括在提交包中的) Binary(二进制)发布版本之外。

Microsoft (MS) 组件版本

在 Xbox 中,许多平台表面区域都包含在游戏操作系统中。 但是,还有一组由 Microsoft 提供的 Binary(二进制)文件会与游戏一起重新分发。 这些文件及其批准的版本将在 Xbox Game 开发者 (XGD) 站点上的“批准的库”页面中列出。

提交验证器将检查这些文件的版本,以确保任何可选 .dll 文件均为匹配版本。 它还将捕获打包到 XVC 中的游戏操作系统的版本 ID 以供专用分区游戏使用。 在提交之前,开发者请务必针对已发布的“批准的库”信息来检查版本。

提交验证器还将提取可选的 Kinect 和 Xbox 服务 .dll 文件的版本信息(如果你的游戏包含它们的话)。

以下示例显示了提交验证器日志文件中的版本信息。

<component>MS Component Versions</component>
<component name="GameOS">60BBA05C-22F0-4452-84B6-DD278594716E</component>
<component name="Microsoft.Xbox.Services.dll">10.0.18362.7198</component>  

另请参阅

提交验证器 (SubmissionValidator.dll)

提交验证程序消息

生成包 (makepkg.exe)

游戏打包、内容更新和流式安装测试

Xbox 要求 (XR) (Xbox 开发人员下载->合作伙伴、发布和发布管理信息->XGD 合作伙伴文档)