Compartilhar via


Manifest to Code

A ferramenta Manifest to Code é um aplicativo de console que usa um arquivo .imagemanifest para o Visual Studio Image Service e gera um arquivo wrapper ou arquivos para fazer referência aos valores do manifesto da imagem em arquivos C++, C#, VB ou .vsct para extensões do Visual Studio. Essa ferramenta gera arquivos wrapper que podem ser usados para solicitar imagens do Visual Studio Image Service diretamente ou para passar os valores de manifesto por meio de APIs se o código não manipular nenhuma de sua própria interface do usuário e renderização.

Como usar a ferramenta

Sintaxe

ManifestToCode /manifest:Arquivo de manifesto> de imagem /idioma:<<Linguagem><de código Args opcional>

Argumentos

Nome do switch Observações Obrigatório ou Opcional
/manifesto O caminho para o manifesto de imagem a ser usado para criar ou atualizar o wrapper de código. Obrigatório
/Idioma O idioma no qual gerar o wrapper de código.

Valores válidos: CPP, C++, CS, CSharp, C#, VB ou VSCT Os valores não diferenciam maiúsculas de minúsculas.

Para a opção de idioma VSCT, as opções /monikerClass, /classAccess e /namespace são ignoradas.
Obrigatório
/imageIdClass O nome do imageIdClass e o arquivo associado criado pela ferramenta. Para a opção de linguagem C++, somente arquivos .h são gerados.

Padrão: <Caminho do Manifesto>\MyImageIds.<Lang Ext>
Opcional
/monikerClass O nome do monikerClass e o arquivo associado criado pela ferramenta. Para a opção de linguagem C++, somente arquivos .h são gerados. Isso é ignorado para a linguagem VSCT.

Padrão: <Caminho do Manifesto>\MyMonikers.<Lang Ext>
Opcional
/classAcesso O modificador de acesso para imageIdClass e monikerClass. Verifique se o modificador de acesso é válido para o idioma especificado. Isso é ignorado para a opção de idioma VSCT.

Padrão: Público
Opcional
/namespace O namespace definido no wrapper de código. Isso é ignorado para a opção de idioma VSCT. '.' ou '::' são separadores de namespace válidos, independentemente da opção de idioma escolhida.

Padrão: MyImages
Opcional
/noLogo A configuração desse sinalizador impede a impressão de informações sobre produtos e direitos autorais. Opcional
/? Imprima as informações da Ajuda. Opcional
/help Imprima as informações da Ajuda. Opcional

Exemplos

  • 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

Observações

  • Recomendamos que você use essa ferramenta com manifestos de imagem que foram gerados pela ferramenta Manifesto de Recursos.

  • A ferramenta examina apenas as entradas de símbolo para gerar os wrappers de código. Se um manifesto de imagem não contiver símbolos, os wrappers de código gerados estarão vazios. Se houver uma imagem ou um conjunto de imagens no manifesto da imagem que não usam símbolos, elas serão excluídas do wrapper de código.

Saída de exemplo

Invólucros C#

Um par de classes de ID de imagem simples e moniker de imagem para C# será semelhante ao código abaixo:

//-----------------------------------------------------------------------------
// <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 }; } }
    }
}

Invólucros C++

Um par de ID de imagem simples e classes de moniker de imagem para C++ será semelhante ao código abaixo:

//-----------------------------------------------------------------------------
// <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 };

}

Wrappers do Visual Basic

Um par de ID de imagem simples e classes de moniker de imagem para Visual Basic será semelhante ao código abaixo:

' -----------------------------------------------------------------------------
'  <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

Invólucro VSCT

Um conjunto de IDs de imagem para um arquivo .vsct será semelhante a este:

<?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>