Partilhar via


X509Certificate2.Import Método

Definição

Preenche um objeto X509Certificate2 com as informações do certificado fornecidas.

Sobrecargas

Import(Byte[])
Obsoleto.

Preenche um objeto X509Certificate2 com os dados de uma matriz de bytes.

Import(String)
Obsoleto.

Preenche um objeto X509Certificate2 com informações de um arquivo de certificado.

Import(Byte[], SecureString, X509KeyStorageFlags)
Obsoleto.

Popula um objeto X509Certificate2 usando dados de uma matriz de bytes, uma senha e um sinalizador de armazenamento de chaves.

Import(Byte[], String, X509KeyStorageFlags)
Obsoleto.

Preenche um objeto X509Certificate2 usando dados de uma matriz de bytes, uma senha e sinalizadores para determinar como importar a chave privada.

Import(String, SecureString, X509KeyStorageFlags)
Obsoleto.

Popula um objeto X509Certificate2 com informações de um arquivo de certificado, uma senha e um sinalizador de armazenamento de chaves.

Import(String, String, X509KeyStorageFlags)
Obsoleto.

Preenche um objeto X509Certificate2 com informações de um arquivo de certificado, uma senha e um valor X509KeyStorageFlags.

Import(Byte[])

Cuidado

X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.

Preenche um objeto X509Certificate2 com os dados de uma matriz de bytes.

public:
 override void Import(cli::array <System::Byte> ^ rawData);
public override void Import (byte[] rawData);
[System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public override void Import (byte[] rawData);
override this.Import : byte[] -> unit
[<System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Import : byte[] -> unit
Public Overrides Sub Import (rawData As Byte())

Parâmetros

rawData
Byte[]

Uma matriz de bytes que contém dados de um certificado X.509.

Atributos

Comentários

Esse método pode ser usado para pegar uma matriz de bytes brutos de um certificado X.509 e preencher o X509Certificate2 objeto com seus valores associados.

Como esse método aceita apenas uma matriz de bytes, ele só pode ser usado para tipos de certificado que não exigem uma senha, incluindo um certificado X.509 codificado em Base64 ou DER ou um certificado PFX/PKCS12. Observe que um certificado PFX/PKCS12 pode conter mais de um certificado. Nesse caso, o primeiro certificado associado a uma chave privada é usado ou, se nenhuma chave privada for encontrada, o primeiro certificado será usado.

Aplica-se a

Import(String)

Cuidado

X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.

Preenche um objeto X509Certificate2 com informações de um arquivo de certificado.

public:
 override void Import(System::String ^ fileName);
public override void Import (string fileName);
[System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public override void Import (string fileName);
override this.Import : string -> unit
[<System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Import : string -> unit
Public Overrides Sub Import (fileName As String)

Parâmetros

fileName
String

O nome de um certificado.

Atributos

Comentários

Esse método usa um arquivo de certificado, como um arquivo com uma extensão .cer, que representa um certificado X.509 e preenche o X509Certificate2 objeto com o certificado que o arquivo contém.

Esse método pode ser usado com vários tipos de certificado, incluindo certificados X.509 codificados em Base64 ou DER, certificados PFX/PKCS12 e certificados de signatário, como Authenticode. Observe que um certificado PFX/PKCS12 pode conter mais de um certificado. Nesse caso, o primeiro certificado associado a uma chave privada é usado ou, se nenhuma chave privada for encontrada, o primeiro certificado será usado.

Aplica-se a

Import(Byte[], SecureString, X509KeyStorageFlags)

Cuidado

X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.

Importante

Esta API não está em conformidade com CLS.

Popula um objeto X509Certificate2 usando dados de uma matriz de bytes, uma senha e um sinalizador de armazenamento de chaves.

public:
 override void Import(cli::array <System::Byte> ^ rawData, System::Security::SecureString ^ password, System::Security::Cryptography::X509Certificates::X509KeyStorageFlags keyStorageFlags);
[System.CLSCompliant(false)]
public override void Import (byte[] rawData, System.Security.SecureString? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[System.CLSCompliant(false)]
[System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public override void Import (byte[] rawData, System.Security.SecureString? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[System.CLSCompliant(false)]
public override void Import (byte[] rawData, System.Security.SecureString password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
public override void Import (byte[] rawData, System.Security.SecureString password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[<System.CLSCompliant(false)>]
override this.Import : byte[] * System.Security.SecureString * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
[<System.CLSCompliant(false)>]
[<System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Import : byte[] * System.Security.SecureString * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
override this.Import : byte[] * System.Security.SecureString * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
Public Overrides Sub Import (rawData As Byte(), password As SecureString, keyStorageFlags As X509KeyStorageFlags)

Parâmetros

rawData
Byte[]

Uma matriz de bytes que contém dados de um certificado X.509.

password
SecureString

A senha necessária para acessar os dados do certificado X.509.

keyStorageFlags
X509KeyStorageFlags

Uma combinação bit a bit dos valores de enumeração que controlam onde e como importar o certificado.

Atributos

Comentários

Você pode usar esse método para tipos de certificado, como certificados X.509 codificados em Base64 ou DER, ou certificados PFX/PKCS12. Observe que um certificado PFX/PKCS12 pode conter mais de um certificado. Nesse caso, o primeiro certificado associado a uma chave privada é usado ou, se nenhuma chave privada for encontrada, o primeiro certificado será usado.

Importante

Nunca codifique uma senha dentro do código-fonte. Senhas codificadas em código podem ser recuperadas de um assembly usando o Ildasm.exe (IL Disassembler), um editor hex ou simplesmente abrindo o assembly em um editor de texto, como Notepad.exe.

Aplica-se a

Import(Byte[], String, X509KeyStorageFlags)

Cuidado

X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.

Preenche um objeto X509Certificate2 usando dados de uma matriz de bytes, uma senha e sinalizadores para determinar como importar a chave privada.

public:
 override void Import(cli::array <System::Byte> ^ rawData, System::String ^ password, System::Security::Cryptography::X509Certificates::X509KeyStorageFlags keyStorageFlags);
public override void Import (byte[] rawData, string? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public override void Import (byte[] rawData, string? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
public override void Import (byte[] rawData, string password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
override this.Import : byte[] * string * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
[<System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Import : byte[] * string * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
Public Overrides Sub Import (rawData As Byte(), password As String, keyStorageFlags As X509KeyStorageFlags)

Parâmetros

rawData
Byte[]

Uma matriz de bytes que contém dados de um certificado X.509.

password
String

A senha necessária para acessar os dados do certificado X.509.

keyStorageFlags
X509KeyStorageFlags

Uma combinação bit a bit dos valores de enumeração que controlam onde e como importar o certificado.

Atributos

Exemplos

O exemplo de código a seguir cria um executável de linha de comando que usa um arquivo de certificado como um argumento e imprime várias propriedades de certificado no console.

#using <System.dll>

using namespace System;
using namespace System::Security::Cryptography;
using namespace System::Security::Permissions;
using namespace System::IO;
using namespace System::Security::Cryptography::X509Certificates;

//Reads a file.
array<Byte>^ ReadFile( String^ fileName )
{
   FileStream^ f = gcnew FileStream( fileName,FileMode::Open,FileAccess::Read );
   int size = (int)f->Length;
   array<Byte>^data = gcnew array<Byte>(size);
   size = f->Read( data, 0, size );
   f->Close();
   return data;
}

[SecurityPermissionAttribute(SecurityAction::LinkDemand, Unrestricted = true)]
int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();

   //Test for correct number of arguments.
   if ( args->Length < 2 )
   {
      Console::WriteLine( "Usage: CertInfo <filename>" );
      return  -1;
   }

   try
   {
      System::Security::Cryptography::X509Certificates::X509Certificate2 ^ x509 =
            gcnew System::Security::Cryptography::X509Certificates::X509Certificate2;

      //Create X509Certificate2 object from .cer file.
      array<Byte>^rawData = ReadFile( args[ 1 ] );

      x509->Import(rawData);

      //Print to console information contained in the certificate.
      Console::WriteLine( "{0}Subject: {1}{0}", Environment::NewLine, x509->Subject );
      Console::WriteLine( "{0}Issuer: {1}{0}", Environment::NewLine, x509->Issuer );
      Console::WriteLine( "{0}Version: {1}{0}", Environment::NewLine, x509->Version );
      Console::WriteLine( "{0}Valid Date: {1}{0}", Environment::NewLine, x509->NotBefore );
      Console::WriteLine( "{0}Expiry Date: {1}{0}", Environment::NewLine, x509->NotAfter );
      Console::WriteLine( "{0}Thumbprint: {1}{0}", Environment::NewLine, x509->Thumbprint );
      Console::WriteLine( "{0}Serial Number: {1}{0}", Environment::NewLine, x509->SerialNumber );
      Console::WriteLine( "{0}Friendly Name: {1}{0}", Environment::NewLine, x509->PublicKey->Oid->FriendlyName );
      Console::WriteLine( "{0}Public Key Format: {1}{0}", Environment::NewLine, x509->PublicKey->EncodedKeyValue->Format(true) );
      Console::WriteLine( "{0}Raw Data Length: {1}{0}", Environment::NewLine, x509->RawData->Length );
      Console::WriteLine( "{0}Certificate to string: {1}{0}", Environment::NewLine, x509->ToString( true ) );
      Console::WriteLine( "{0}Certificate to XML String: {1}{0}", Environment::NewLine, x509->PublicKey->Key->ToXmlString( false ) );

      //Add the certificate to a X509Store.
      X509Store ^ store = gcnew X509Store;
      store->Open( OpenFlags::MaxAllowed );
      store->Add( x509 );
      store->Close();
   }
   catch ( DirectoryNotFoundException^ )
   {
      Console::WriteLine( "Error: The directory specified could not be found." );
   }
   catch ( IOException^ )
   {
      Console::WriteLine( "Error: A file in the directory could not be accessed." );
   }
   catch ( NullReferenceException^ )
   {
      Console::WriteLine( "File must be a .cer file. Program does not have access to that type of file." );
   }

}
using System;
using System.Security.Cryptography;
using System.Security.Permissions;
using System.IO;
using System.Security.Cryptography.X509Certificates;

class CertInfo
{
    //Reads a file.
    internal static byte[] ReadFile (string fileName)
    {
        FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read);
        int size = (int)f.Length;
        byte[] data = new byte[size];
        size = f.Read(data, 0, size);
        f.Close();
        return data;
    }
    //Main method begins here.
    static void Main(string[] args)
    {
        //Test for correct number of arguments.
        if (args.Length < 1)
        {
            Console.WriteLine("Usage: CertInfo <filename>");
            return;
        }
        try
        {
            X509Certificate2 x509 = new X509Certificate2();
            //Create X509Certificate2 object from .cer file.
            byte[] rawData = ReadFile(args[0]);
            x509.Import(rawData);

            //Print to console information contained in the certificate.
            Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine, x509.Subject);
            Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine, x509.Issuer);
            Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine, x509.Version);
            Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine, x509.NotBefore);
            Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine, x509.NotAfter);
            Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine, x509.Thumbprint);
            Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine, x509.SerialNumber);
            Console.WriteLine("{0}Friendly Name: {1}{0}", Environment.NewLine, x509.PublicKey.Oid.FriendlyName);
            Console.WriteLine("{0}Public Key Format: {1}{0}", Environment.NewLine, x509.PublicKey.EncodedKeyValue.Format(true));
            Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine, x509.RawData.Length);
            Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine, x509.ToString(true));
            Console.WriteLine("{0}Certificate to XML String: {1}{0}", Environment.NewLine, x509.PublicKey.Key.ToXmlString(false));

            //Add the certificate to a X509Store.
            X509Store store = new X509Store();
            store.Open(OpenFlags.MaxAllowed);
            store.Add(x509);
            store.Close();
        }
        catch (DirectoryNotFoundException)
        {
               Console.WriteLine("Error: The directory specified could not be found.");
        }
        catch (IOException)
        {
            Console.WriteLine("Error: A file in the directory could not be accessed.");
        }
        catch (NullReferenceException)
        {
            Console.WriteLine("File must be a .cer file. Program does not have access to that type of file.");
        }
    }
}
Imports System.Security.Cryptography
Imports System.Security.Permissions
Imports System.IO
Imports System.Security.Cryptography.X509Certificates

Class CertInfo

    'Reads a file.
    Friend Shared Function ReadFile(ByVal fileName As String) As Byte()
        Dim f As New FileStream(fileName, FileMode.Open, FileAccess.Read)
        Dim size As Integer = Fix(f.Length)
        Dim data(size - 1) As Byte
        size = f.Read(data, 0, size)
        f.Close()
        Return data

    End Function 

    <SecurityPermission(SecurityAction.LinkDemand, Unrestricted:=True)> _
    Shared Sub Main(ByVal args() As String)
        'Test for correct number of arguments.
        If args.Length < 1 Then
            Console.WriteLine("Usage: CertInfo <filename>")
            Return
        End If
        Try
            Dim x509 As New X509Certificate2()
            'Create X509Certificate2 object from .cer file.
            Dim rawData As Byte() = ReadFile(args(0))
            
            x509.Import(rawData)

            'Print to console information contained in the certificate.
            Console.WriteLine("{0}Subject: {1}{0}", Environment.NewLine, x509.Subject)
            Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine, x509.Issuer)
            Console.WriteLine("{0}Version: {1}{0}", Environment.NewLine, x509.Version)
            Console.WriteLine("{0}Valid Date: {1}{0}", Environment.NewLine, x509.NotBefore)
            Console.WriteLine("{0}Expiry Date: {1}{0}", Environment.NewLine, x509.NotAfter)
            Console.WriteLine("{0}Thumbprint: {1}{0}", Environment.NewLine, x509.Thumbprint)
            Console.WriteLine("{0}Serial Number: {1}{0}", Environment.NewLine, x509.SerialNumber)
            Console.WriteLine("{0}Friendly Name: {1}{0}", Environment.NewLine, x509.PublicKey.Oid.FriendlyName)
            Console.WriteLine("{0}Public Key Format: {1}{0}", Environment.NewLine, x509.PublicKey.EncodedKeyValue.Format(True))
            Console.WriteLine("{0}Raw Data Length: {1}{0}", Environment.NewLine, x509.RawData.Length)
            Console.WriteLine("{0}Certificate to string: {1}{0}", Environment.NewLine, x509.ToString(True))

            Console.WriteLine("{0}Certificate to XML String: {1}{0}", Environment.NewLine, x509.PublicKey.Key.ToXmlString(False))

            'Add the certificate to a X509Store.
            Dim store As New X509Store()
            store.Open(OpenFlags.MaxAllowed)
            store.Add(x509)
            store.Close()

        Catch dnfExcept As DirectoryNotFoundException
            Console.WriteLine("Error: The directory specified could not be found.")
        Catch ioExpcept As IOException
            Console.WriteLine("Error: A file in the directory could not be accessed.")
        Catch nrExcept As NullReferenceException
            Console.WriteLine("File must be a .cer file. Program does not have access to that type of file.")
        End Try

    End Sub
End Class

Comentários

Esse método pode ser usado para preencher um X509Certificate2 objeto usando uma senha para o certificado representado pela matriz de bytes. O X509KeyStorageFlags valor pode ser usado para controlar onde e como importar a chave privada.

Esse método aceita uma matriz de bytes e pode ser usado para tipos de certificado, como certificados X.509 codificados em Base64 ou DER ou certificados PFX/PKCS12. Observe que um certificado PFX/PKCS12 pode conter mais de um certificado. Nesse caso, o primeiro certificado associado a uma chave privada é usado ou, se nenhuma chave privada for encontrada, o primeiro certificado será usado.

Importante

Nunca codifique uma senha dentro do código-fonte. Senhas codificadas em código podem ser recuperadas de um assembly usando o Ildasm.exe (IL Disassembler), um editor hex ou simplesmente abrindo o assembly em um editor de texto, como Notepad.exe.

Aplica-se a

Import(String, SecureString, X509KeyStorageFlags)

Cuidado

X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.

Importante

Esta API não está em conformidade com CLS.

Popula um objeto X509Certificate2 com informações de um arquivo de certificado, uma senha e um sinalizador de armazenamento de chaves.

public:
 override void Import(System::String ^ fileName, System::Security::SecureString ^ password, System::Security::Cryptography::X509Certificates::X509KeyStorageFlags keyStorageFlags);
[System.CLSCompliant(false)]
public override void Import (string fileName, System.Security.SecureString? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[System.CLSCompliant(false)]
[System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public override void Import (string fileName, System.Security.SecureString? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[System.CLSCompliant(false)]
public override void Import (string fileName, System.Security.SecureString password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
public override void Import (string fileName, System.Security.SecureString password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[<System.CLSCompliant(false)>]
override this.Import : string * System.Security.SecureString * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
[<System.CLSCompliant(false)>]
[<System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Import : string * System.Security.SecureString * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
override this.Import : string * System.Security.SecureString * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
Public Overrides Sub Import (fileName As String, password As SecureString, keyStorageFlags As X509KeyStorageFlags)

Parâmetros

fileName
String

O nome de um arquivo de certificado.

password
SecureString

A senha necessária para acessar os dados do certificado X.509.

keyStorageFlags
X509KeyStorageFlags

Uma combinação bit a bit dos valores de enumeração que controlam onde e como importar o certificado.

Atributos

Comentários

Observação de Segurança Nunca codifique uma senha dentro do código-fonte. Senhas codificadas em código podem ser recuperadas de um assembly usando o Ildasm.exe (IL Disassembler), um editor hex ou simplesmente abrindo o assembly em um editor de texto, como Notepad.exe.

Aplica-se a

Import(String, String, X509KeyStorageFlags)

Cuidado

X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.

Preenche um objeto X509Certificate2 com informações de um arquivo de certificado, uma senha e um valor X509KeyStorageFlags.

public:
 override void Import(System::String ^ fileName, System::String ^ password, System::Security::Cryptography::X509Certificates::X509KeyStorageFlags keyStorageFlags);
public override void Import (string fileName, string? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
[System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public override void Import (string fileName, string? password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
public override void Import (string fileName, string password, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags);
override this.Import : string * string * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
[<System.Obsolete("X509Certificate and X509Certificate2 are immutable. Use the appropriate constructor to create a new certificate.", DiagnosticId="SYSLIB0026", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
override this.Import : string * string * System.Security.Cryptography.X509Certificates.X509KeyStorageFlags -> unit
Public Overrides Sub Import (fileName As String, password As String, keyStorageFlags As X509KeyStorageFlags)

Parâmetros

fileName
String

O nome de um arquivo de certificado.

password
String

A senha necessária para acessar os dados do certificado X.509.

keyStorageFlags
X509KeyStorageFlags

Uma combinação bit a bit dos valores de enumeração que controlam onde e como importar o certificado.

Atributos

Comentários

Esse método pode ser usado para preencher um X509Certificate2 objeto com informações de um arquivo de certificado, uma senha e um X509KeyStorageFlags valor.

Importante

Nunca codifique uma senha dentro do código-fonte. Senhas codificadas em código podem ser recuperadas de um assembly usando o Ildasm.exe (IL Disassembler), um editor hex ou simplesmente abrindo o assembly em um editor de texto, como Notepad.exe.

Aplica-se a