Manifest to Code
清单到代码工具是一个控制台应用程序,它获取 Visual Studio 映像服务的 .imagemanifest 文件,并生成包装文件或文件,用于引用 Visual Studio 扩展的 C++、C#、VB 或 .vsct 文件中的图像清单值。 此工具生成包装文件,这些文件可用于直接从 Visual Studio 图像服务请求图像,或者如果代码不处理任何自己的 UI 和呈现,则通过 API 传递清单值。
语法
ManifestToCode /manifest:<Image Manifest 文件> /language:<Code Language><Optional Args>
参数
开关名称 | 说明 | 必需或可选 |
---|---|---|
/清单 | 用于创建或更新代码包装器的映像清单的路径。 | 必须 |
/语言 | 要在其中生成代码包装器的语言。 有效值:CPP、C++、CS、CSharp、C#、VB 或 VSCT 这些值不区分大小写。 对于 VSCT 语言选项,将忽略 /monikerClass、/classAccess 和 /namespace 选项。 |
必须 |
/imageIdClass | imageIdClass 的名称以及该工具创建的关联文件。 对于 C++ 语言选项,仅生成 .h 文件。 默认值: <清单路径>\MyImageIds。<Lang Ext> |
可选 |
/monikerClass | 名字对象类的名称和工具创建的关联文件的名称。 对于 C++ 语言选项,仅生成 .h 文件。 VSCT 语言将忽略此项。 默认值: <清单路径>\MyMonikers。<Lang Ext> |
可选 |
/classAccess | imageIdClass 和 monikerClass 的访问修饰符。 确保访问修饰符对给定语言有效。 VSCT 语言选项将忽略此项。 默认值:公共 |
可选 |
/命名 空间 | 在代码包装器中定义的命名空间。 VSCT 语言选项将忽略此项。 无论选择的语言选项如何,“.”或“:”都是有效的命名空间分隔符。 默认值:MyImages |
可选 |
/noLogo | 设置此标志会停止打印产品和版权信息。 | 可选 |
/? | 打印出帮助信息。 | 可选 |
/help | 打印出帮助信息。 | 可选 |
示例
ManifestToCode /manifest:D:\MyManifest.imagemanifest /language:CSharp
ManifestToCode /manifest:D:\MyManifest.imagemanifest /language:C++ /namespace:My::Namespace /imageIdClass:MyImageIds /monikerClass:MyMonikers /classAccess:friend
ManifestToCode /manifest:D:\MyManifest.imagemanifest /language:VSCT /imageIdClass:MyImageIds
建议将此工具与清单从资源工具生成的映像清单一起使用。
该工具仅查看用于生成代码包装器的符号条目。 如果映像清单不包含符号,则生成的代码包装器将为空。 如果映像清单中有一组不使用符号的图像或图像,则它们将被从代码包装器中排除。
C# 包装器
适用于 C# 的一对简单图像 ID 和图像名字对象类将类似于以下代码:
//-----------------------------------------------------------------------------
// <auto-generated>
// This code was generated by the ManifestToCode tool.
// Tool Version: 14.0.15198
// </auto-generated>
//-----------------------------------------------------------------------------
using System;
namespace MyImages
{
public static class MyImageIds
{
public static readonly Guid AssetsGuid = new Guid("{442d8739-efde-46a4-8f29-e3a1e5e7f8b4}");
public const int MyImage1 = 0;
public const int MyImage2 = 1;
}
}
//-----------------------------------------------------------------------------
// <auto-generated>
// This code was generated by the ManifestToCode tool.
// Tool Version: 14.0.15198
// </auto-generated>
//-----------------------------------------------------------------------------
using Microsoft.VisualStudio.Imaging.Interop;
namespace MyImages
{
public static class MyMonikers
{
public static ImageMoniker MyImage1 { get { return new ImageMoniker { Guid = MyImageIds.AssetsGuid, Id = MyImageIds.MyImage1 }; } }
public static ImageMoniker MyImage2 { get { return new ImageMoniker { Guid = MyImageIds.AssetsGuid, Id = MyImageIds.MyImage2 }; } }
}
}
C++ 包装器
适用于 C++ 的一对简单图像 ID 和图像名字对象类将类似于以下代码:
//-----------------------------------------------------------------------------
// <auto-generated>
// This code was generated by the ManifestToCode tool.
// Tool Version: 14.0.15198
// </auto-generated>
//-----------------------------------------------------------------------------
#pragma once
#include <guiddef.h>
namespace MyImages {
class MyImageIds {
public:
static const GUID AssetsGuid;
static const int MyImage1 = 0;
static const int MyImage2 = 1;
};
__declspec(selectany) const GUID MyImageIds::AssetsGuid = {0x442d8739,0xefde,0x46a4,{0x8f,0x29,0xe3,0xa1,0xe5,0xe7,0xf8,0xb4}};
}
//-----------------------------------------------------------------------------
// <auto-generated>
// This code was generated by the ManifestToCode tool.
// Tool Version: 14.0.15198
// </auto-generated>
//-----------------------------------------------------------------------------
#pragma once
#include "ImageParameters140.h"
#include "MyImageIds.h"
namespace MyImages {
class MyMonikers {
public:
static const ImageMoniker MyImage1;
static const ImageMoniker MyImage2;
};
__declspec(selectany) const ImageMoniker MyMonikers::MyImage1 = { MyImageIds::AssetsGuid, MyImageIds::MyImage1 };
__declspec(selectany) const ImageMoniker MyMonikers::MyImage2 = { MyImageIds::AssetsGuid, MyImageIds::MyImage2 };
}
Visual Basic 包装器
Visual Basic 的一对简单图像 ID 和图像名字对象类将类似于以下代码:
' -----------------------------------------------------------------------------
' <auto-generated>
' This code was generated by the ManifestToCode tool.
' Tool Version: 14.0.15198
' </auto-generated>
' -----------------------------------------------------------------------------
Imports System
Namespace MyImages
Public Module MyImageIds
Public Shared ReadOnly AssetsGuid As Guid = New Guid("{442d8739-efde-46a4-8f29-e3a1e5e7f8b4}")
Public Const MyImage1 As Integer = 0
Public Const MyImage2 As Integer = 1
End Module
End Namespace
' -----------------------------------------------------------------------------
' <auto-generated>
' This code was generated by the ManifestToCode tool.
' Tool Version: 14.0.15198
' </auto-generated>
' -----------------------------------------------------------------------------
Imports Microsoft.VisualStudio.Imaging.Interop
Namespace MyImages
Public Module MyMonikers
Public Readonly Property MyImage1
Get
Return New ImageMoniker With {.Guid = MyImageIds.AssetsGuid, .Id = MyImageIds.MyImage1}
End Get
End Property
Public Readonly Property MyImage2
Get
Return New ImageMoniker With {.Guid = MyImageIds.AssetsGuid, .Id = MyImageIds.MyImage2}
End Get
End Property
End Module
End Namespace
VSCT 包装器
.vsct 文件的一组映像 ID 如下所示:
<?xml version='1.0' encoding='utf-8'?>
<!--
- [auto-generated]
This code was generated by the ManifestToCode tool.
Tool Version: 14.0.15198
- [/auto-generated]
-->
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable">
<Symbols>
<GuidSymbol name="AssetsGuid" value="{442d8739-efde-46a4-8f29-e3a1e5e7f8b4}">
<IDSymbol name="MyImage1" value="0" />
<IDSymbol name="MyImage2" value="1" />
</GuidSymbol>
</Symbols>
</CommandTable>