Manifest to Code

L’outil Manifest to Code est une application console qui prend un fichier .imagemanifest pour visual Studio Image Service et génère un fichier wrapper ou des fichiers pour référencer les valeurs du manifeste d’image en C++, C#, VB ou .vsct pour les extensions Visual Studio. Cet outil génère des fichiers wrapper qui peuvent être utilisés pour demander des images directement à partir du service d’images Visual Studio, ou pour transmettre les valeurs de manifeste via des API si le code ne gère aucune de ses propres interface utilisateur et rendu.

Comment utiliser l’outil ?

Syntaxe

ManifestToCode /manifest :<Image Manifest file> /language :<Code Language><Optional Args>

Arguments

Nom du commutateur Notes Obligatoire ou facultatif
/Manifeste Chemin d’accès au manifeste d’image à utiliser pour créer ou mettre à jour le wrapper de code. Requis
/Langue Langage dans lequel générer le wrapper de code.

Valeurs valides : CPP, C++, CS, CSharp, C#, VB ou VSCT Les valeurs ne respectent pas la casse.

Pour l’option de langue VSCT, les options /monikerClass, /classAccess et /namespace sont ignorées.
Requis
/imageIdClass Nom de l’imageIdClass et du fichier associé créé par l’outil. Pour l’option de langage C++, seuls les fichiers .h sont générés.

Valeur par défaut : <chemin> du manifeste\MyImageIds.<Lang Ext>
Facultatif
/monikerClass Nom du monikerClass et du fichier associé créé par l’outil. Pour l’option de langage C++, seuls les fichiers .h sont générés. Cela est ignoré pour la langue VSCT.

Valeur par défaut : <Chemin> du manifeste\MyMonikers.<Lang Ext>
Facultatif
/classAccess Modificateur d’accès pour imageIdClass et monikerClass. Vérifiez que le modificateur d’accès est valide pour la langue donnée. Cela est ignoré pour l’option de langage VSCT.

Par défaut : Public
Facultatif
/Noms Espace de noms défini dans le wrapper de code. Cela est ignoré pour l’option de langage VSCT. '.' ou ' ::' sont des séparateurs d’espaces de noms valides, quelle que soit l’option de langue choisie.

Valeur par défaut : MyImages
Facultatif
/noLogo La définition de cet indicateur empêche l’impression des informations sur le produit et les droits d’auteur. Facultatif
/? Imprimez les informations d’aide. Facultatif
/help Imprimez les informations d’aide. Facultatif

Exemples

  • 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

Notes

  • Nous vous recommandons d’utiliser cet outil avec des manifestes d’image générés par l’outil Manifeste à partir de ressources.

  • L’outil examine uniquement les entrées de symboles pour générer les wrappers de code. Si un manifeste d’image ne contient aucun symbole, les wrappers de code générés sont vides. S’il existe une image ou un ensemble d’images dans le manifeste d’image qui n’utilisent pas de symboles, elles sont exclues du wrapper de code.

Exemple de sortie

Wrappers C#

Une paire de classes moniker d’image et d’ID d’image simples pour C# sera similaire au code ci-dessous :

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

Wrappers C++

Une paire de classes moniker d’image et d’ID d’image simples pour C++ est similaire au code ci-dessous :

//-----------------------------------------------------------------------------
// <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 Visual Basic

Une paire de classes moniker d’image et d’ID d’image simples pour Visual Basic sera similaire au code ci-dessous :

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

Wrapper VSCT

Un ensemble d’ID d’image pour un fichier .vsct est similaire à ceci :

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