Manifest from Resources

资源清单工具是一个控制台应用程序,它获取图像资源列表(.png 或 .xaml 文件),并生成一个 .imagemanifest 文件,该文件允许这些图像与 Visual Studio 图像服务一起使用。 此外,此工具还可用于将图像添加到现有的 .imagemanifest。 此工具可用于将高 DPI 和图像主题支持添加到 Visual Studio 扩展。 生成的 .imagemanifest 文件应包含在 Visual Studio 扩展(.vsix)中并将其部署为一部分。

如何使用该工具

语法

ManifestFromResources /resources:<Dir1>;<Img1> /assembly:<AssemblyName><Optional Args>

参数

开关名称 说明 必需或可选
resources/ 以分号分隔的图像或目录列表。 此列表应始终包含清单中图像的完整列表。 如果只提供部分列表,则不包含的条目将丢失。

如果给定的资源文件是图像条带,该工具将在将每个子映像添加到清单之前将其拆分为单独的图像。

如果图像是 .png 文件,建议设置名称的格式,以便该工具可以填充图像的正确属性: <名称>。<宽度>。<Height.png>.
必须
/装配 托管程序集的名称(不包括扩展),或托管资源的本机程序集的运行时路径(相对于清单的运行时位置)。 必须
/清单 要提供给生成的 .imagemanifest 文件的名称。 这还可以包含一个绝对路径或相对路径,用于在不同的位置创建文件。 默认名称与程序集名称匹配。

默认值:<Current Directory>\<Assembly.imagemanifest>
可选
/guidName 要为生成的清单中的所有映像提供 GUID 符号的名称。

默认值:AssetsGuid
可选
/rootPath 在创建托管资源 URI 之前,需要剥离的根路径。 (此标志有助于解决工具获取相对 URI 路径错误的情况,导致资源无法加载。

默认值: <当前目录>
可选
/递 归 设置此标志会告知工具以递归方式搜索 /resources 参数中的任何目录。 省略此标志将导致目录的顶级搜索。 可选
/isNative 当程序集参数是本机程序集的路径时设置此标志。 当程序集参数是托管程序集的名称时,省略此标志。 (有关此标志的其他信息,请参阅“说明”部分。 可选
/newGuids 设置此标志会告知工具为图像的 GUID 符号创建新值,而不是合并现有清单中的 GUID 符号。 可选
/newIds 设置此标志会告知工具为每个图像创建新的 ID 符号值,而不是合并现有清单中的值。 可选
/noLogo 设置此标志会停止打印产品和版权信息。 可选
/? 打印出帮助信息。 可选
/help 打印出帮助信息。 可选

示例

  • ManifestFromResources /resources:D:\Images /assembly:My.Assembly.Name /isNative

  • ManifestFromResources /resources:D:\Images\Image1.png;D:\Images\Image1.xaml /assembly:My.Assembly.Name /manifest:MyImageManifest.imagemanifest

  • ManifestFromResources /resources:D:\Images\Image1.png;D:\Images\Image1.xaml /assembly:My.Assembly.Name /guidName:MyImages /newGuids /newIds

说明

  • 该工具仅支持 .png 和 .xaml 文件。 将忽略任何其他图像或文件类型。 针对分析资源时遇到的所有不受支持的类型生成警告。 如果在工具分析完资源后找不到任何受支持的图像,则会生成错误

  • 按照 .png 图像的建议格式,该工具会将 .png 的大小/维度值设置为格式指定的大小,即使它与图像的实际大小不同。

  • .png 图像可以省略宽度/高度格式,但该工具将读取图像的实际宽度/高度,并使用这些图像的大小/尺寸值。

  • 在同一映像条带中多次运行此工具会导致重复清单条目,因为该工具尝试将图像条区拆分为独立映像,并将这些条目添加到现有清单。

  • 只能对工具生成的清单执行合并(省略 /newGuids 或 /newIds)。 已通过其他方式自定义或生成的清单可能无法正确合并。

  • 生成后,可能需要手动编辑为本机程序集生成的清单,以使 ID 符号与本机程序集的 .rc 文件中的资源 ID 匹配。

示例输出

简单映像清单

映像清单将类似于以下 .xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- This file was generated by the ManifestFromResources tool.-->
<!-- Version: 14.0.15197 -->
<ImageManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">
  <Symbols>
    <String Name="Resources" Value="/My.Assembly.Name;Component/Resources/Images" />
    <Guid Name="AssetsGuid" Value="{fb41b7ef-6587-480c-aa27-5b559d42cfc9}" />
    <ID Name="MyImage" Value="0" />
  </Symbols>
  <Images>
    <Image Guid="$(AssetsGuid)" ID="$(MyImage)">
      <Source Uri="$(Resources)/Xaml/MyImage.xaml" />
      <Source Uri="$(Resources)/Png/MyImage.16.16.png">
        <Size Value="16" />
      </Source>
    </Image>
  </Images>
  <ImageLists />
</ImageManifest>

映像条带的图像清单

映像条带的图像清单将类似于以下 .xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- This file was generated by the ManifestFromResources tool.-->
<!-- Version: 14.0.15197 -->
<ImageManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">
  <Symbols>
    <String Name="Resources" Value="/My.Assembly.Name;Component/Resources/ImageStrip" />
    <Guid Name="AssetsGuid" Value="{fb41b7ef-6587-480c-aa27-5b559d42cfc9}" />
    <ID Name="MyImageStrip_0" Value="1" />
    <ID Name="MyImageStrip_1" Value="2" />
    <ID Name="MyImageStrip" Value="3" />
  </Symbols>
  <Images>
    <Image Guid="$(AssetsGuid)" ID="$(MyImageStrip_0)">
      <Source Uri="$(Resources)/MyImageStrip_0.png">
        <Size Value="16" />
      </Source>
    </Image>
    <Image Guid="$(AssetsGuid)" ID="$(MyImageStrip_1)">
      <Source Uri="$(Resources)/MyImageStrip_1.png">
        <Size Value="16" />
      </Source>
    </Image>
  </Images>
  <ImageLists>
    <ImageList Guid="$(AssetsGuid)" ID="$(MyImageStrip)">
      <ContainedImage Guid="$(AssetsGuid)" ID="$(MyImageStrip_0)" />
      <ContainedImage Guid="$(AssetsGuid)" ID="$(MyImageStrip_1)" />
    </ImageList>
  </ImageLists>
</ImageManifest>

本机程序集映像资源的映像清单

本机映像的映像清单将类似于以下 .xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- This file was generated by the ManifestFromResources tool.-->
<!-- Version: 14.0.15198 -->
<ImageManifest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/ImageManifestSchema/2014">
  <Symbols>
    <String Name="Resources" Value="..\Assembly\Folder\My.Assembly.Name" />
    <Guid Name="AssetsGuid" Value="{442d8739-efde-46a4-8f29-e3a1e5e7f8b4}" />
    <ID Name="MyImage1" Value="0" />
    <ID Name="MyImage2" Value="1" />
  </Symbols>
  <Images>
    <Image Guid="$(AssetsGuid)" ID="$(MyImage1)">
      <Source Uri="$(Resources)">
        <Size Value="16" />
        <NativeResource ID="$(MyImage1)" Type="PNG" />
      </Source>
    </Image>
    <Image Guid="$(AssetsGuid)" ID="$(MyImage2)">
      <Source Uri="$(Resources)">
        <Size Value="16" />
        <NativeResource ID="$(MyImage2)" Type="PNG" />
      </Source>
    </Image>
  </Images>
  <ImageLists />
</ImageManifest>