Win10 20H1预览版首个SDK 18890发布
微软已经在开发Windows 10 20H1预览版,预计将在明年4月份发布。近期,微软发布了Windows 10 20H1 SDK的第一个预览版本build 18890。包括了消息编译器,Windows跟踪预处理器等更新。
下面是更新内容:
Message Compiler(mc.exe)
现在检测.mc文件中的Unicode字节顺序标记(BOM)。如果.mc文件以UTF-8 BOM开头,则它将被读取为UTF-8文件。如果它以UTF-16LE BOM开头,它将被读作UTF-16LE文件。否则,如果指定了-u参数,它将被读取为UTF-16LE文件。否则,将使用当前代码页(CP_ACP)读取它。
现在避免由于冲突配置宏导致MC生成的C/C ++ ETW助手中的单定义规则(ODR)问题(例如,当MCGEN_EVENTWRITETRANSFER定义冲突的两个.cpp文件链接到同一个二进制文件时,MC生成的ETW帮助程序现在将尊重每个.cpp文件中MCGEN_EVENTWRITETRANSFER的定义,而不是任意选择一个或另一个)。
Windows跟踪预处理器(tracewpp.exe)
现在支持Unicode输入(.ini,.tpl和源代码)文件。以UTF-8或UTF-16字节顺序标记(BOM)开头的输入文件将被读取为Unicode。将使用当前代码页(CP_ACP)读取不以BOM开头的输入文件。为了向后兼容,如果指定了-UnicodeIgnore命令行参数,则以UTF-16 BOM开头的文件将被视为空。
现在支持Unicode输出(.tmh)文件。默认情况下,输出文件将使用当前代码页(CP_ACP)进行编码。使用命令行参数-cp:UTF-8或-cp:UTF-16生成Unicode输出文件。
行为更改:tracewpp现在将所有输入文本转换为Unicode,以Unicode执行处理,并将输出文本转换为指定的输出编码。早期版本的tracewpp避免了Unicode转换,并在假定单字节字符集的情况下执行文本处理。在输入文件不符合当前代码页的情况下,这可能会导致行为更改。如果这是一个问题,请考虑将输入文件转换为UTF-8(使用BOM)和/或使用-cp:UTF-8命令行参数以避免编码歧义。
TraceLoggingProvider.h
现在避免由冲突的配置宏引起的单定义规则(ODR)问题(例如,当两个具有冲突的TLG_EVENT_WRITE_TRANSFER定义的.cpp文件链接到同一个二进制文件时,TraceLoggingProvider.h帮助程序现在将遵循每个中TLG_EVENT_WRITE_TRANSFER的定义。cpp文件而不是任意选择一个或另一个)。
在C ++代码中,TraceLoggingWrite宏已更新,以使用可变参数模板在类似事件之间实现更好的代码共享。
还有一个重大变化,即删除irprops.lib,因此链接到它的开发人员现在必须链接到bthprops.lib。此外,自Windows 10版本1903以来,该版本带来了许多新的API。
值得注意的是,最新的SDK预览版可以与之前的SDK以及Visual Studio 2017或更高版本并行使用。你可以继续将以Windows 10版本1903为目标的应用程序提交到商店。此外,此版本仅适用于Windows Insider Preview预览版。
相关阅读: