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文件,我们建议你设置名称的格式,以便该工具可以填充图像的正确属性: <名称>。<宽度>。<高度>.png。
必须
/集会 托管程序集的名称(不包括扩展),或托管资源的本机程序集的运行时路径(相对于清单的运行时位置)。 此外,如果程序集具有强名称,则此条目应包含程序集版本和公钥令牌。 必须
/清单 要提供给生成的 .imagemanifest 文件的名称。 这还可以包含一个绝对路径或相对路径,用于在不同的位置创建文件。 默认名称与程序集名称匹配。 此外,在 /assembly 开关中提供额外的强名称信息时,应提供用户友好的清单名称,以便程序集强名称信息不包含在清单名称中。

默认值:<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;v1.0.0.0;abcdef0123456789 /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图像的宽度/高度格式,但该工具将读取图像的实际宽度/高度,并将其用于图像的大小/尺寸值。

  • 在同一个映像条上多次运行此工具,同一个 .imagemanifest 将导致重复的清单条目。 此结果是因为该工具尝试将图像条带拆分为独立映像,然后将这些图像添加到现有清单。

  • 只能对工具生成的清单执行合并(省略 /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>