Manifest to Code
Narzędzie Manifest to Code to aplikacja konsolowa, która pobiera plik imagemanifest dla usługi obrazów programu Visual Studio i generuje plik otoki lub pliki służące do odwoływania się do wartości manifestu obrazu w plikach C++, C#, VB lub .vsct dla rozszerzeń programu Visual Studio. To narzędzie generuje pliki otoki, których można użyć do żądania obrazów z usługi obrazów programu Visual Studio bezpośrednio lub przekazywania wartości manifestu za pośrednictwem interfejsów API, jeśli kod nie obsługuje żadnego z jego własnego interfejsu użytkownika i renderowania.
Jak korzystać z narzędzia
Składnia
ManifestToCode /manifest:<Plik> manifestu obrazu /language:<Code Language><Optional Args>
Argumenty
Nazwa przełącznika | Uwagi | Wymagane lub opcjonalne |
---|---|---|
/Manifestu | Ścieżka do manifestu obrazu używana do tworzenia lub aktualizowania otoki kodu. | Wymagania |
/Język | Język, w którym ma być generowana otoka kodu. Prawidłowe wartości: CPP, C++, CS, CSharp, C#, VB lub VSCT Wartości są bez uwzględniania wielkości liter. W przypadku opcji języka VSCT opcje /monikerClass, /classAccess i /namespace są ignorowane. |
Wymagania |
/imageIdClass | Nazwa imageIdClass i skojarzony plik utworzony przez narzędzie. W przypadku opcji języka C++ są generowane tylko pliki .h. Ustawienie domyślne: <Ścieżka manifestu>\MyImageIds.<Lang Ext> |
Opcjonalnie |
/monikerClass | Nazwa nazwy monikerClass i skojarzonego pliku utworzonego przez narzędzie. W przypadku opcji języka C++ są generowane tylko pliki .h. Jest to ignorowane dla języka VSCT. Ustawienie domyślne: <Ścieżka> manifestu\MyMonikers.<Lang Ext> |
Opcjonalnie |
/classAccess | Modyfikator dostępu dla klasy imageIdClass i monikerClass. Upewnij się, że modyfikator dostępu jest prawidłowy dla danego języka. Jest to ignorowane dla opcji języka VSCT. Ustawienie domyślne: publiczne |
Opcjonalnie |
/Obszaru nazw | Przestrzeń nazw zdefiniowana w otoce kodu. Jest to ignorowane dla opcji języka VSCT. Albo '.' lub '::' są prawidłowymi separatorami przestrzeni nazw, niezależnie od wybranej opcji języka. Ustawienie domyślne: MyImages |
Opcjonalnie |
/noLogo | Ustawienie tej flagi uniemożliwia drukowanie informacji o produktach i prawach autorskich. | Opcjonalnie |
/? | Wyświetl informacje pomocy. | Opcjonalnie |
/help | Wyświetl informacje pomocy. | Opcjonalnie |
Przykłady
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
Uwagi
Zalecamy użycie tego narzędzia z manifestami obrazów wygenerowanymi przez narzędzie Manifest z zasobów.
Narzędzie analizuje tylko wpisy symboli, aby wygenerować otoki kodu. Jeśli manifest obrazu nie zawiera żadnych symboli, wygenerowane otoki kodu będą puste. Jeśli w manifeście obrazu znajduje się obraz lub zestaw obrazów, które nie używają symboli, zostaną one wykluczone z otoki kodu.
Przykładowe dane wyjściowe
Otoki języka C#
Para prostych klas moniker obrazów i identyfikatora obrazu dla języka C# będzie podobna do poniższego kodu:
//-----------------------------------------------------------------------------
// <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 }; } }
}
}
Otoki języka C++
Para prostych klas identyfikatora obrazu i moniker obrazów dla języka C++ będzie podobna do poniższego kodu:
//-----------------------------------------------------------------------------
// <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 };
}
Otoki języka Visual Basic
Para prostych klas moniker obrazów i identyfikatora obrazu dla języka Visual Basic będzie podobna do poniższego kodu:
' -----------------------------------------------------------------------------
' <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
Otoka VSCT
Zestaw identyfikatorów obrazów dla pliku vsct będzie podobny do następującego:
<?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>