Mt.exe文件是生成签名文件和目录的工具。Microsoft Windows软件开发工具包(SDK)中提供了该工具。Mt.exe要求清单中引用的文件与清单位于同一目录中。
Mt.exe使用安全哈希算法(SHA-1)的CryptoAPI实现生成哈希。哈希作为十六进制字符串插入清单中的文件标记中。尽管清单中的文件可能使用其他哈希方案,但该工具当前仅生成SHA-1哈希。
Mt.exe使用Makecat.exe从目录定义文件(.cdf)生成目录文件(.cat)。该工具使用清单的名称和位置填写标准模板CDF。可以将其与Makecat.exe一起使用以生成程序集目录。
Windows SDK的最新版本中提供的Mt.exe版本也可以用于生成托管程序集和非托管并行程序集的清单。
语法mt.exe [-manifest * ] [-身份: ] [-rgs: ] [-tlb: ] [-dll: ] [-替换:] [-managedassemblyname:] [-nodependency] [-category] [-out:] [-inputresource:; [#] ] [-outputresource:; [#] ] [-updateresource:; [#] ] [-hashupdate [:]] [-makecdfs] [-validate_manifest] [-validate_file_hashes:* ] [-规范化] [-check_for_duplicates] [-nologo] [-详细]
命令行选项Mt.exe使用以下不区分大小写的命令行选项。
Mt.exe uses the following case-insensitive command line options.
COMMAND LINE OPTIONS OptionDescription-manifest指定清单文件的名称。要修改一个清单,请指定一个清单文件名。例如,component.manifest。 要合并多个清单,请在此处指定源清单的名称。使用-out,-outputresource或-updateresource选项指定更新的清单的名称。例如,以下命令行请求将两个清单man1.manifest和man2.manifest合并为新清单man3.manifest的操作。mt.exe -manifest man1.manifest man2.manifest -out:man3.manifest [!注意] -manifest选项 不需要冒号(:) 。 -identity提供清单的assemblyIdentity元素的属性值。-identity选项的参数是一个字符串值,其中包含用逗号分隔的字段中的属性值。在第一个字段中提供name属性的值,但不包括“ name =“子字符串。其余所有字段均使用以下格式指定属性及其值:=。 例如,使用以下信息更新清单的assemblyIdentity元素: 在命令行上包括以下-identity选项:-identity:"Microsoft.Windows.SampleAssembly, processorArchitecture=x86, version=6.0.0.0, type=win32, publicKeyToken=a5aaf5ba15723d5"-rgs指定注册脚本(.rgs)文件的名称。使用-rgs选项需要-dll选项。-tlb指定类型库(.tlb)文件的名称。使用-tlb选项需要-dll选项。-dll指定动态链接库(DLL)文件的名称。该-dll选项是必需的mt.exe如果-rgs或-tlb正在使用的选项。指定最终要从.rgs或.tlb文件生成的DLL的名称。 例如,以下命令请求一个从.rgs和.tlb文件生成清单的操作。mt.exe -rgs:testreg1.rgs -tlb:testlib1.tlb -dll:test.dll -replacements:rep.manifest -identity:"Microsoft.Windows.SampleAssembly, processorArchitecture=x86, version=6.0.0.0, type=win32, publicKeyToken=a5aaf5ba15723d5" -out:rgstlb.manifest-replacements指定包含.rgs文件中可替换字符串的值的文件。-managedassemblyname从指定的托管程序集生成清单。与-nodependency选项一起使用可生成不含依赖项元素的清单。与-category选项一起使用以生成带有类别标签的清单。例如,如果managed.dll是托管程序集,则以下命令行从managed.dll生成out.manifest。mt.exe -managedassemblyname:managed.dll -out:out.manifest-nodependency指定生成不含依赖项元素的清单的操作。该-nodependency选项要求-managedassemblyname选项。例如,如果managed.dll是托管程序集,则以下命令行从managed.dll生成out.manifest,而没有依赖项信息。mt.exe -managedassemblyname:managed.dll -out:out.manifest -nodependency-category指定生成带有类别标签的清单的操作。该-category选项要求-managedassemblyname选项。例如,如果managed.dll是托管程序集,则以下命令行从带有类别标签的managed.dll中生成out.manifest。mt.exe -managedassemblyname:managed.dll -out:out.manifest -category-nologo指定在不显示标准Microsoft版权数据的情况下运行的操作。如果mt.exe作为构建过程的一部分运行,则可以使用此选项来防止将不需要的信息写入日志文件。-out指定更新清单的名称。如果这是单清单操作,并且省略了-out选项,那么将修改原始清单。-inputresource指定对从RT_MANIFEST类型的资源获得的清单执行的操作。如果使用-inputresource选项而不指定资源标识符,,该操作使用值CREATEPROCESS_MANIFEST_RESOURCE。 例如,以下命令请求一个操作,该操作合并DLL中的清单清单dll_with_manifest.dll和清单文件man2.manifest。合并清单由另一个DLL_dll_with_merged_manifests的资源文件中的清单接收。mt.exe -inputresource:dll_with_manifest.dll;#1 -manifest man2.manifest -outputresource:dll_with_merged_manifest.dll;#3 要从DLL中提取清单,请指定DLL文件名。例如,以下命令从lib1.dll中提取清单,man3.manifest接收提取的清单。mt.exe -inputresource:lib.dll;#1 -out:man3.manifest-outputresource指定一个生成清单的操作,该清单将由RT_MANIFEST类型的资源接收。如果使用-outputresource选项而不指定资源标识符,,该操作使用值CREATEPROCESS_MANIFEST_RESOURCE。-updateresource指定等效于使用-inputresource和-outputresource选项以及相同参数的操作。例如,以下命令请求一个操作,该操作计算指定路径上文件的哈希并更新可移植可执行文件(PE)的资源清单。mt.exe -updateresource:dll_with_manifest.dll;#1 -hashupdate:f:\files.-hashupdate计算指定路径上文件的哈希值,并使用该值更新File元素的hash属性值。例如,以下命令请求一个操作,该操作合并两个清单文件man1.manifest和man2.manifest,并更新清单中接收合并信息的文件元素hash属性的值merged.manifest。mt.exe -manifest man1.manifest man2.manifest -hashupdate:d:\ filerepository -out:merged.manifest
如果未指定文件的路径,则该操作将搜索指定清单的位置以接收更新。例如,以下命令请求一个操作,该操作使用通过搜索update.manifest的位置找到的文件来计算更新的哈希值。mt.exe -manifest yourComponent.manifest -hashupdate -out:updated.manifest
-validate_manifest指定一个操作,该操作对清单与清单模式的一致性进行语法检查。例如,以下命令请求检查以验证man1.manifest与它的架构的一致性。mt.exe -manifest man1.manifest -validate_manifest-validate_file_hashes指定一个操作来验证清单的File元素的哈希值。例如,以下命令请求一个操作,该操作验证man1.manifest的所有File元素的哈希值。mt.exe -manifest man1.manifest -validate_file_hashhes:“ c; \ files”-canonicalize指定将清单更新为规范形式的操作。例如,以下命令将man1.manifest更新为规范形式。mt.exe -manifest man1.manifest-check_for_duplicates指定用于检查清单中是否有重复元素的操作。例如,以下命令检查man1.manifest中是否有重复的元素。mt.exe -man1.manifest -check_for_duplicates-makecdfs生成.cdf文件以建立目录。例如,以下命令向您请求更新哈希值并生成.cdf文件的操作。mt.exe -manifest comp1.manifest -hashupdate -makecdfs -out:updated.manifest-verbose显示详细的调试信息。-?当使用-?或没有选项和参数运行时,Mt.exe将显示帮助文本。