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>