Regex.CompileToAssembly Método

Definição

Compila expressões regulares e as salva em disco em um único assembly.Compiles regular expressions and saves them to disk in a single assembly.

Sobrecargas

CompileToAssembly(RegexCompilationInfo[], AssemblyName)

Compila um ou mais objetos Regex especificados para um assembly nomeado.Compiles one or more specified Regex objects to a named assembly.

CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[])

Compila um ou mais objetos Regex especificados para um assembly nomeado com os atributos especificados.Compiles one or more specified Regex objects to a named assembly with the specified attributes.

CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String)

Compila um ou mais objetos Regex especificados e um arquivo de recurso especificado para um assembly nomeado com os atributos especificados.Compiles one or more specified Regex objects and a specified resource file to a named assembly with the specified attributes.

Comentários

No .NET Core, as chamadas para Regex.CompileToAssembly o método PlatformNotSupportedExceptionlançam a; não há suporte para a gravação de um assembly.On .NET Core, calls to the Regex.CompileToAssembly method throw a PlatformNotSupportedException; writing out an assembly is not supported.

CompileToAssembly(RegexCompilationInfo[], AssemblyName)

Compila um ou mais objetos Regex especificados para um assembly nomeado.Compiles one or more specified Regex objects to a named assembly.

public:
 static void CompileToAssembly(cli::array <System::Text::RegularExpressions::RegexCompilationInfo ^> ^ regexinfos, System::Reflection::AssemblyName ^ assemblyname);
public static void CompileToAssembly (System.Text.RegularExpressions.RegexCompilationInfo[] regexinfos, System.Reflection.AssemblyName assemblyname);
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName -> unit

Parâmetros

regexinfos
RegexCompilationInfo[]

Uma matriz que descreve as expressões regulares a compilar.An array that describes the regular expressions to compile.

assemblyname
AssemblyName

O nome do arquivo do assembly.The file name of the assembly.

Exceções

O valor da propriedade Name do parâmetro assemblyname é uma cadeia de caracteres vazia ou nula.The value of the assemblyname parameter's Name property is an empty or null string.

- ou --or- O padrão de expressão regular de um ou mais objetos em regexinfos contém sintaxe inválida.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

assemblyname ou regexinfos é null.assemblyname or regexinfos is null.

Somente .NET Core: Não há suporte para a criação de um assembly de expressões regulares compiladas..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Exemplos

O exemplo a seguir cria um assembly chamado RegexLib. dll.The following example creates an assembly named RegexLib.dll. O assembly inclui duas expressões regulares compiladas.The assembly includes two compiled regular expressions. O primeiro, Utilities.RegularExpressions.DuplicatedString, corresponde a duas palavras contíguas idênticas.The first, Utilities.RegularExpressions.DuplicatedString, matches two identical contiguous words. O segundo, Utilities.RegularExpressions.EmailAddress, verifica se uma cadeia de caracteres tem o formato correto como um endereço de email.The second, Utilities.RegularExpressions.EmailAddress, checks whether a string has the correct format to be an email address.

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text.RegularExpressions;

public class RegexCompilationTest
{
   public static void Main()
   {
      RegexCompilationInfo expr;
      List<RegexCompilationInfo> compilationList = new List<RegexCompilationInfo>();

      // Define regular expression to detect duplicate words
      expr = new RegexCompilationInfo(@"\b(?<word>\w+)\s+(\k<word>)\b", 
                 RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, 
                 "DuplicatedString", 
                 "Utilities.RegularExpressions", 
                 true);
      // Add info object to list of objects
      compilationList.Add(expr);

      // Define regular expression to validate format of email address
      expr = new RegexCompilationInfo(@"^(?("")(""[^""]+?""@)|(([0-9A-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9A-Z])@))" + 
                 @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9A-Z][-\w]*[0-9A-Z]\.)+[A-Z]{2,6}))$", 
                 RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, 
                 "EmailAddress", 
                 "Utilities.RegularExpressions", 
                 true);
      // Add info object to list of objects
      compilationList.Add(expr);
                                             
      // Generate assembly with compiled regular expressions
      RegexCompilationInfo[] compilationArray = new RegexCompilationInfo[compilationList.Count];
      AssemblyName assemName = new AssemblyName("RegexLib, Version=1.0.0.1001, Culture=neutral, PublicKeyToken=null");
      compilationList.CopyTo(compilationArray); 
      Regex.CompileToAssembly(compilationArray, assemName);                                                 
   }
}
Imports System.Collections.Generic
Imports System.Reflection
Imports System.Text.RegularExpressions

Module RegexCompilationTest
   Public Sub Main()
      Dim expr As RegexCompilationInfo
      Dim compilationList As New List(Of RegexCompilationInfo)
          
      ' Define regular expression to detect duplicate words
      expr = New RegexCompilationInfo("\b(?<word>\w+)\s+(\k<word>)\b", _
                 RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant, _
                 "DuplicatedString", _
                 "Utilities.RegularExpressions", _
                 True)
      ' Add info object to list of objects
      compilationList.Add(expr)

      ' Define regular expression to validate format of email address
      expr = New RegexCompilationInfo("^(?("")(""[^""]+?""@)|(([0-9A-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9A-Z])@))" + _
                 "(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9A-Z][-\w]*[0-9A-Z]\.)+[A-Z]{2,6}))$", _
                 RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant, _
                 "EmailAddress", _
                 "Utilities.RegularExpressions", _
                 True)
      ' Add info object to list of objects
      compilationList.Add(expr)
                                             
      ' Generate assembly with compiled regular expressions
      Dim compilationArray(compilationList.Count - 1) As RegexCompilationInfo
      Dim assemName As New AssemblyName("RegexLib, Version=1.0.0.1001, Culture=neutral, PublicKeyToken=null")
      compilationList.CopyTo(compilationArray) 
      Regex.CompileToAssembly(compilationArray, assemName)                                                 
   End Sub
End Module

A expressão regular que verifica uma cadeia de caracteres em busca de palavras duplicadas é instanciada e usada pelo exemplo a seguir.The regular expression that checks a string for duplicate words is then instantiated and used by the following example.

using System;
using Utilities.RegularExpressions;

public class CompiledRegexUsage
{
   public static void Main()
   {
      string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
      DuplicatedString duplicateRegex = new DuplicatedString(); 
      if (duplicateRegex.Matches(text).Count > 0)
         Console.WriteLine("There are {0} duplicate words in \n   '{1}'", 
            duplicateRegex.Matches(text).Count, text);
      else
         Console.WriteLine("There are no duplicate words in \n   '{0}'", 
                           text);
   }
}
// The example displays the following output to the console:
//    There are 3 duplicate words in
//       'The the quick brown fox  fox jumps over the lazy dog dog.'
Imports Utilities.RegularExpressions

Module CompiledRegexUsage
   Public Sub Main()
      Dim text As String = "The the quick brown fox  fox jumps over the lazy dog dog."
      Dim duplicateRegex As New DuplicatedString()
      If duplicateRegex.Matches(text).Count > 0 Then
         Console.WriteLine("There are {0} duplicate words in {2}   '{1}'", _
            duplicateRegex.Matches(text).Count, text, vbCrLf)
      Else
         Console.WriteLine("There are no duplicate words in {1}   '{0}'", _
                           text, vbCrLf)
      End If
   End Sub
End Module
' The example displays the following output to the console:
'    There are 3 duplicate words in
'       'The the quick brown fox  fox jumps over the lazy dog dog.'

A compilação bem-sucedida deste segundo exemplo requer uma referência a RegexLib. dll (o assembly criado pelo primeiro exemplo) a ser adicionado ao projeto.Successful compilation of this second example requires a reference to RegexLib.dll (the assembly created by the first example) to be added to the project.

Comentários

O CompileToAssembly(RegexCompilationInfo[], AssemblyName) método gera um assembly .NET Framework no qual cada expressão regular definida regexinfos na matriz é representada por uma classe.The CompileToAssembly(RegexCompilationInfo[], AssemblyName) method generates a .NET Framework assembly in which each regular expression defined in the regexinfos array is represented by a class. Normalmente, o CompileToAssembly(RegexCompilationInfo[], AssemblyName) método é chamado a partir de um aplicativo separado que gera um assembly de expressões regulares compiladas.Typically, the CompileToAssembly(RegexCompilationInfo[], AssemblyName) method is called from a separate application that generates an assembly of compiled regular expressions. Cada expressão regular incluída no assembly tem as seguintes características:Each regular expression included in the assembly has the following characteristics:

  • Ele é derivado da Regex classe.It is derived from the Regex class.

  • Ele recebe o nome totalmente qualificado que é definido pelos fullnamespace parâmetros e name de seu objeto correspondente RegexCompilationInfo .It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Ele tem um construtor padrão (ou sem parâmetros).It has a default (or parameterless) constructor.

Normalmente, o código que instancia e usa a expressão regular compilada é encontrado em um assembly ou aplicativo que é separado do código que cria o assembly.Ordinarily, the code that instantiates and uses the compiled regular expression is found in an assembly or application that is separate from the code that creates the assembly.

Notas aos Chamadores

Se você estiver desenvolvendo em um sistema que tenha .NET Framework 4.5.NET Framework 4.5 ou em suas versões de ponto instaladas .NET Framework 4.NET Framework 4, você terá como destino CompileToAssembly(RegexCompilationInfo[], AssemblyName) e usará o método para criar um assembly que contenha expressões regulares compiladas.If you are developing on a system that has .NET Framework 4.5.NET Framework 4.5 or its point releases installed, you target .NET Framework 4.NET Framework 4, and you use the CompileToAssembly(RegexCompilationInfo[], AssemblyName) method to create an assembly that contains compiled regular expressions. Tentar usar uma das expressões regulares nesse assembly em um sistema que .NET Framework 4.NET Framework 4 gera uma exceção.Trying to use one of the regular expressions in that assembly on a system that has .NET Framework 4.NET Framework 4 throws an exception. Para solucionar esse problema, pode-se seguir uma das seguintes alternativas:To work around this problem, you can do either of the following: -Crie o assembly que contém as expressões regulares compiladas em um sistema que .NET Framework 4.NET Framework 4 tenha o em vez de versões posteriores instaladas.- Build the assembly that contains the compiled regular expressions on a system that has .NET Framework 4.NET Framework 4 instead of later versions installed.

-Em vez de CompileToAssembly(RegexCompilationInfo[], AssemblyName) chamar e recuperar a expressão regular compilada de um assembly, use métodos estáticos Regex ou de instância Compiled com a opção ao criar Regex uma instância de um objeto ou chamar uma expressão regular método de correspondência de padrões.- Instead of calling CompileToAssembly(RegexCompilationInfo[], AssemblyName) and retrieving the compiled regular expression from an assembly, use either static or instance Regex methods with the Compiled option when you instantiate a Regex object or call a regular expression pattern matching method.

Veja também

CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[])

Compila um ou mais objetos Regex especificados para um assembly nomeado com os atributos especificados.Compiles one or more specified Regex objects to a named assembly with the specified attributes.

public:
 static void CompileToAssembly(cli::array <System::Text::RegularExpressions::RegexCompilationInfo ^> ^ regexinfos, System::Reflection::AssemblyName ^ assemblyname, cli::array <System::Reflection::Emit::CustomAttributeBuilder ^> ^ attributes);
public static void CompileToAssembly (System.Text.RegularExpressions.RegexCompilationInfo[] regexinfos, System.Reflection.AssemblyName assemblyname, System.Reflection.Emit.CustomAttributeBuilder[] attributes);
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName * System.Reflection.Emit.CustomAttributeBuilder[] -> unit

Parâmetros

regexinfos
RegexCompilationInfo[]

Uma matriz que descreve as expressões regulares a compilar.An array that describes the regular expressions to compile.

assemblyname
AssemblyName

O nome do arquivo do assembly.The file name of the assembly.

attributes
CustomAttributeBuilder[]

Uma matriz que define os atributos a serem aplicados ao assembly.An array that defines the attributes to apply to the assembly.

Exceções

O valor da propriedade Name do parâmetro assemblyname é uma cadeia de caracteres vazia ou nula.The value of the assemblyname parameter's Name property is an empty or null string.

- ou --or- O padrão de expressão regular de um ou mais objetos em regexinfos contém sintaxe inválida.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

assemblyname ou regexinfos é null.assemblyname or regexinfos is null.

Somente .NET Core: Não há suporte para a criação de um assembly de expressões regulares compiladas..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Exemplos

O exemplo a seguir cria um assembly chamado RegexLib. dll e aplica AssemblyTitleAttribute o atributo a ele.The following example creates an assembly named RegexLib.dll and applies the AssemblyTitleAttribute attribute to it. O assembly inclui duas expressões regulares compiladas.The assembly includes two compiled regular expressions. O primeiro, Utilities.RegularExpressions.DuplicatedString, corresponde a duas palavras contíguas idênticas.The first, Utilities.RegularExpressions.DuplicatedString, matches two identical contiguous words. O segundo, Utilities.RegularExpressions.EmailAddress, verifica se uma cadeia de caracteres tem o formato correto como um endereço de email.The second, Utilities.RegularExpressions.EmailAddress, checks whether a string has the correct format to be an email address.

using System;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;
using System.Text.RegularExpressions;

public class RegexCompilationTest
{
   public static void Main()
   {
      RegexCompilationInfo expr;
      List<RegexCompilationInfo> compilationList = new List<RegexCompilationInfo>();

      // Define regular expression to detect duplicate words
      expr = new RegexCompilationInfo(@"\b(?<word>\w+)\s+(\k<word>)\b", 
                 RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, 
                 "DuplicatedString", 
                 "Utilities.RegularExpressions", 
                 true);
      // Add info object to list of objects
      compilationList.Add(expr);

      // Define regular expression to validate format of email address
      expr = new RegexCompilationInfo(@"^(?("")(""[^""]+?""@)|(([0-9A-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9A-Z])@))" + 
                 @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9A-Z][-\w]*[0-9A-Z]\.)+[zA-Z]{2,6}))$", 
                 RegexOptions.IgnoreCase | RegexOptions.CultureInvariant, 
                 "EmailAddress", 
                 "Utilities.RegularExpressions", 
                 true);
      // Add info object to list of objects
      compilationList.Add(expr);
                                             
      // Apply AssemblyTitle attribute to the new assembly
      //
      // Define the parameter(s) of the AssemblyTitle attribute's constructor 
      Type[] parameters = { typeof(string) };
      // Define the assembly's title
      object[] paramValues = { "General-purpose library of compiled regular expressions" };
      // Get the ConstructorInfo object representing the attribute's constructor
      ConstructorInfo ctor = typeof(System.Reflection.AssemblyTitleAttribute).GetConstructor(parameters);
      // Create the CustomAttributeBuilder object array
      CustomAttributeBuilder[] attBuilder = { new CustomAttributeBuilder(ctor, paramValues) }; 
                                                         
      // Generate assembly with compiled regular expressions
      RegexCompilationInfo[] compilationArray = new RegexCompilationInfo[compilationList.Count];
      AssemblyName assemName = new AssemblyName("RegexLib, Version=1.0.0.1001, Culture=neutral, PublicKeyToken=null");
      compilationList.CopyTo(compilationArray); 
      Regex.CompileToAssembly(compilationArray, assemName, attBuilder);                                                 
   }
}
Imports System.Collections.Generic
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Text.RegularExpressions

Module RegexCompilationTest
   Public Sub Main()
      Dim expr As RegexCompilationInfo
      Dim compilationList As New List(Of RegexCompilationInfo)
          
      ' Define regular expression to detect duplicate words
      expr = New RegexCompilationInfo("\b(?<word>\w+)\s+(\k<word>)\b", _
                 RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant, _
                 "DuplicatedString", _
                 "Utilities.RegularExpressions", _
                 True)
      ' Add info object to list of objects
      compilationList.Add(expr)

      ' Define regular expression to validate format of email address
      expr = New RegexCompilationInfo("^(?("")(""[^""]+?""@)|(([0-9A-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9A-Z])@))" + _ 
                 "(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9A-Z][-\w]*[0-9A-Z]\.)+[A-Z]{2,6}))$", _
                 RegexOptions.IgnoreCase Or RegexOptions.CultureInvariant, _
                 "EmailAddress", _
                 "Utilities.RegularExpressions", _
                 True)
      ' Add info object to list of objects
      compilationList.Add(expr)

      ' Apply AssemblyTitle attribute to the new assembly
      '
      ' Define the parameter(s) of the AssemblyTitle attribute's constructor 
      Dim params() As Type = { GetType(String) }
      ' Define the assembly's title
      Dim paramValues() As Object = { "General-purpose library of compiled regular expressions" }
      ' Get the ConstructorInfo object representing the attribute's constructor
      Dim ctor As ConstructorInfo = GetType(System.Reflection.AssemblyTitleAttribute).GetConstructor(params)
      ' Create the CustomAttributeBuilder object array
      Dim attBuilder() As CustomAttributeBuilder = { New CustomAttributeBuilder(ctor, paramValues) } 
                                                         
      ' Generate assembly with compiled regular expressions
      Dim compilationArray(compilationList.Count - 1) As RegexCompilationInfo
      Dim assemName As New AssemblyName("RegexLib, Version=1.0.0.1001, Culture=neutral, PublicKeyToken=null")
      compilationList.CopyTo(compilationArray) 
      Regex.CompileToAssembly(compilationArray, assemName, attBuilder) 
   End Sub
End Module

Você pode verificar se o AssemblyTitleAttribute atributo foi aplicado ao assembly examinando seu manifesto com um utilitário de reflexão como o ILDASM.You can verify that the AssemblyTitleAttribute attribute has been applied to the assembly by examining its manifest with a reflection utility such as ILDasm.

A expressão regular que verifica uma cadeia de caracteres em busca de palavras duplicadas é instanciada e usada pelo exemplo a seguir.The regular expression that checks a string for duplicate words is then instantiated and used by the following example.

using System;
using Utilities.RegularExpressions;

public class CompiledRegexUsage
{
   public static void Main()
   {
      string text = "The the quick brown fox  fox jumps over the lazy dog dog.";
      DuplicatedString duplicateRegex = new DuplicatedString(); 
      if (duplicateRegex.Matches(text).Count > 0)
         Console.WriteLine("There are {0} duplicate words in \n   '{1}'", 
            duplicateRegex.Matches(text).Count, text);
      else
         Console.WriteLine("There are no duplicate words in \n   '{0}'", 
                           text);
   }
}
// The example displays the following output to the console:
//    There are 3 duplicate words in
//       'The the quick brown fox  fox jumps over the lazy dog dog.'
Imports Utilities.RegularExpressions

Module CompiledRegexUsage
   Public Sub Main()
      Dim text As String = "The the quick brown fox  fox jumps over the lazy dog dog."
      Dim duplicateRegex As New DuplicatedString()
      If duplicateRegex.Matches(text).Count > 0 Then
         Console.WriteLine("There are {0} duplicate words in {2}   '{1}'", _
            duplicateRegex.Matches(text).Count, text, vbCrLf)
      Else
         Console.WriteLine("There are no duplicate words in {1}   '{0}'", _
                           text, vbCrLf)
      End If
   End Sub
End Module
' The example displays the following output to the console:
'    There are 3 duplicate words in
'       'The the quick brown fox  fox jumps over the lazy dog dog.'

A compilação bem-sucedida deste segundo exemplo requer uma referência a RegexLib. dll (o assembly criado pelo primeiro exemplo) a ser adicionado ao projeto.Successful compilation of this second example requires a reference to RegexLib.dll (the assembly created by the first example) to be added to the project.

Comentários

O CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) método gera um assembly .NET Framework no qual cada expressão regular definida regexinfos na matriz é representada por uma classe.The CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method generates a .NET Framework assembly in which each regular expression defined in the regexinfos array is represented by a class. Normalmente, o CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) método é chamado a partir de um aplicativo separado que gera um assembly de expressões regulares compiladas.Typically, the CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method is called from a separate application that generates an assembly of compiled regular expressions. Cada expressão regular incluída no assembly tem as seguintes características:Each regular expression included in the assembly has the following characteristics:

  • Ele é derivado da Regex classe.It is derived from the Regex class.

  • Ele recebe o nome totalmente qualificado que é definido pelos fullnamespace parâmetros e name de seu objeto correspondente RegexCompilationInfo .It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Ele tem um construtor padrão (ou sem parâmetros).It has a default (or parameterless) constructor.

Normalmente, o código que instancia e usa a expressão regular compilada é encontrado em um assembly ou aplicativo que é separado do código que cria o assembly.Ordinarily, the code that instantiates and uses the compiled regular expression is found in an assembly or application that is separate from the code that creates the assembly.

Porque o CompileToAssembly método gera um assembly .NET Framework de uma chamada de método em vez de usar uma palavra-chave de definição de classe de C# linguagem Classespecífica (como class em ou...End ClassBecause the CompileToAssembly method generates a .NET Framework assembly from a method call instead of using a particular language's class definition keyword (such as class in C# or ClassEnd Class no Visual Basic), ele não permite que .NET Framework atributos sejam atribuídos ao assembly usando a sintaxe de atributo padrão da linguagem de desenvolvimento.in Visual Basic), it does not allow .NET Framework attributes to be assigned to the assembly by using the development language's standard attribute syntax. O attributes parâmetro fornece um método alternativo para definir os atributos que se aplicam ao assembly.The attributes parameter provides an alternative method for defining the attributes that apply to the assembly. Para cada atributo que você deseja aplicar ao assembly, faça o seguinte:For each attribute that you want to apply to the assembly, do the following:

  1. Crie uma matriz de Type objetos que representa os tipos de parâmetro do construtor de atributos que você deseja chamar.Create an array of Type objects representing the parameter types of the attribute constructor that you want to call.

  2. Recupere um Type objeto que representa a classe de atributo que você deseja aplicar ao novo assembly.Retrieve a Type object representing the attribute class that you want to apply to the new assembly.

  3. Chame o GetConstructor método do objeto de Type atributo para recuperar um ConstructorInfo objeto que representa o construtor de atributo que você deseja chamar.Call the GetConstructor method of the attribute Type object to retrieve a ConstructorInfo object representing the attribute constructor that you want to call. Passe o GetConstructor método a matriz de Type objetos que representa os tipos de parâmetro do construtor.Pass the GetConstructor method the array of Type objects that represents the constructor's parameter types.

  4. Crie uma Object matriz que define os parâmetros a serem passados para o construtor do atributo.Create a Object array that defines the parameters to pass to the attribute's constructor.

  5. Crie uma CustomAttributeBuilder instância de um objeto passando seu ConstructorInfo Construtor para o objeto recuperado na etapa Object 3 e a matriz criada na etapa 4.Instantiate a CustomAttributeBuilder object by passing its constructor the ConstructorInfo object retrieved in step 3 and the Object array created in step 4.

Em seguida, você pode passar uma matriz CustomAttributeBuilder desses objetos em vez attributes do parâmetro para Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) o método.You can then pass an array of these CustomAttributeBuilder objects instead of the attributes parameter to the Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method.

Notas aos Chamadores

Se você estiver desenvolvendo em um sistema que tenha .NET Framework 4.5.NET Framework 4.5 ou em suas versões de ponto instaladas .NET Framework 4.NET Framework 4, você terá como destino CompileToAssembly(RegexCompilationInfo[], AssemblyName) e usará o método para criar um assembly que contenha expressões regulares compiladas.If you are developing on a system that has .NET Framework 4.5.NET Framework 4.5 or its point releases installed, you target .NET Framework 4.NET Framework 4, and you use the CompileToAssembly(RegexCompilationInfo[], AssemblyName) method to create an assembly that contains compiled regular expressions. Tentar usar uma das expressões regulares nesse assembly em um sistema que .NET Framework 4.NET Framework 4 gera uma exceção.Trying to use one of the regular expressions in that assembly on a system that has .NET Framework 4.NET Framework 4 throws an exception. Para solucionar esse problema, pode-se seguir uma das seguintes alternativas:To work around this problem, you can do either of the following: -Crie o assembly que contém as expressões regulares compiladas em um sistema que .NET Framework 4.NET Framework 4 tenha o em vez de versões posteriores instaladas.- Build the assembly that contains the compiled regular expressions on a system that has .NET Framework 4.NET Framework 4 instead of later versions installed.

-Em vez de CompileToAssembly(RegexCompilationInfo[], AssemblyName) chamar e recuperar a expressão regular compilada de um assembly, use métodos estáticos Regex ou de instância Compiled com a opção ao criar Regex uma instância de um objeto ou chamar uma expressão regular método de correspondência de padrões.- Instead of calling CompileToAssembly(RegexCompilationInfo[], AssemblyName) and retrieving the compiled regular expression from an assembly, use either static or instance Regex methods with the Compiled option when you instantiate a Regex object or call a regular expression pattern matching method.

Veja também

CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String)

Compila um ou mais objetos Regex especificados e um arquivo de recurso especificado para um assembly nomeado com os atributos especificados.Compiles one or more specified Regex objects and a specified resource file to a named assembly with the specified attributes.

public:
 static void CompileToAssembly(cli::array <System::Text::RegularExpressions::RegexCompilationInfo ^> ^ regexinfos, System::Reflection::AssemblyName ^ assemblyname, cli::array <System::Reflection::Emit::CustomAttributeBuilder ^> ^ attributes, System::String ^ resourceFile);
public static void CompileToAssembly (System.Text.RegularExpressions.RegexCompilationInfo[] regexinfos, System.Reflection.AssemblyName assemblyname, System.Reflection.Emit.CustomAttributeBuilder[] attributes, string resourceFile);
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName * System.Reflection.Emit.CustomAttributeBuilder[] * string -> unit

Parâmetros

regexinfos
RegexCompilationInfo[]

Uma matriz que descreve as expressões regulares a compilar.An array that describes the regular expressions to compile.

assemblyname
AssemblyName

O nome do arquivo do assembly.The file name of the assembly.

attributes
CustomAttributeBuilder[]

Uma matriz que define os atributos a serem aplicados ao assembly.An array that defines the attributes to apply to the assembly.

resourceFile
String

O nome do arquivo de recurso Win32 a ser incluído no assembly.The name of the Win32 resource file to include in the assembly.

Exceções

O valor da propriedade Name do parâmetro assemblyname é uma cadeia de caracteres vazia ou nula.The value of the assemblyname parameter's Name property is an empty or null string.

- ou --or- O padrão de expressão regular de um ou mais objetos em regexinfos contém sintaxe inválida.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

assemblyname ou regexinfos é null.assemblyname or regexinfos is null.

O parâmetro resourceFile designa um arquivo de recurso Win32 inválido.The resourceFile parameter designates an invalid Win32 resource file.

O arquivo designado pelo parâmetro resourceFile não pôde ser encontrado.The file designated by the resourceFile parameter cannot be found.

Somente .NET Core: Não há suporte para a criação de um assembly de expressões regulares compiladas..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Comentários

O [], AssemblyName, CustomAttributeBuilder<xref: System. Text. RegularExpressions. Regex. CompileToAssembly% 28System. Text. RegularExpressions. RegexCompilationInfo% 5b% 5D% 2CSystem. Reflection. AssemblyName% 2CSystem. Reflection. Emit. CustomAttributeBuilder% 5b% 5D% 2CSystem. String% 29 > método gera um assembly .NET Framework no qual cada expressão regexinfos regular definida na matriz é representada por uma classe.The [], AssemblyName, CustomAttributeBuilder<xref:System.Text.RegularExpressions.Regex.CompileToAssembly%28System.Text.RegularExpressions.RegexCompilationInfo%5B%5D%2CSystem.Reflection.AssemblyName%2CSystem.Reflection.Emit.CustomAttributeBuilder%5B%5D%2CSystem.String%29> method generates a .NET Framework assembly in which each regular expression defined in the regexinfos array is represented by a class. Normalmente, o [], AssemblyName, CustomAttributeBuilder<xref: System. Text. RegularExpressions. Regex. CompileToAssembly% 28System. Text. RegularExpressions. RegexCompilationInfo% 5b% 5D% 2CSystem. Reflection. AssemblyName% 2CSystem. Reflection. Emit. CustomAttributeBuilder% 5b% 5D% 2CSystem. String% 29 > método é chamado a partir de um aplicativo separado que gera um assembly de expressões regulares compiladas.Typically, the [], AssemblyName, CustomAttributeBuilder<xref:System.Text.RegularExpressions.Regex.CompileToAssembly%28System.Text.RegularExpressions.RegexCompilationInfo%5B%5D%2CSystem.Reflection.AssemblyName%2CSystem.Reflection.Emit.CustomAttributeBuilder%5B%5D%2CSystem.String%29> method is called from a separate application that generates an assembly of compiled regular expressions. Cada expressão regular incluída no assembly tem as seguintes características:Each regular expression included in the assembly has the following characteristics:

  • Ele é derivado da Regex classe.It is derived from the Regex class.

  • Ele recebe o nome totalmente qualificado que é definido pelos fullnamespace parâmetros e name de seu objeto correspondente RegexCompilationInfo .It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Ele tem um construtor padrão (ou sem parâmetros).It has a default (or parameterless) constructor.

Normalmente, o código que instancia e usa a expressão regular compilada é encontrado em um assembly ou aplicativo que é separado do código que cria o assembly.Ordinarily, the code that instantiates and uses the compiled regular expression is found in an assembly or application that is separate from the code that creates the assembly.

Porque o CompileToAssembly método gera um assembly .NET Framework de uma chamada de método em vez de usar uma palavra-chave de definição de classe de C# linguagem Classespecífica (como class em ou...End ClassBecause the CompileToAssembly method generates a .NET Framework assembly from a method call instead of using a particular language's class definition keyword (such as class in C# or ClassEnd Class no Visual Basic), ele não permite que .NET Framework atributos sejam atribuídos ao assembly usando a sintaxe de atributo padrão da linguagem de desenvolvimento.in Visual Basic), it does not allow .NET Framework attributes to be assigned to the assembly by using the development language's standard attribute syntax. O attributes parâmetro fornece um método alternativo para definir os atributos que se aplicam ao assembly.The attributes parameter provides an alternative method for defining the attributes that apply to the assembly. Para cada atributo que você deseja aplicar ao assembly, faça o seguinte:For each attribute that you want to apply to the assembly, do the following:

  1. Crie uma matriz de Type objetos que representa os tipos de parâmetro do construtor de atributos que você deseja chamar.Create an array of Type objects representing the parameter types of the attribute constructor that you want to call.

  2. Recupere um Type objeto que representa a classe de atributo que você deseja aplicar ao novo assembly.Retrieve a Type object representing the attribute class that you want to apply to the new assembly.

  3. Chame o GetConstructor método do objeto de Type atributo para recuperar um ConstructorInfo objeto que representa o construtor de atributo que você deseja chamar.Call the GetConstructor method of the attribute Type object to retrieve a ConstructorInfo object representing the attribute constructor that you want to call. Passar o GetConstructor método a matriz de Type objetos que representa os tipos de parâmetro do ConstrutorPass the GetConstructor method the array of Type objects that represents the constructor's parameter types

  4. Crie uma Object matriz que define os parâmetros a serem passados para o construtor do atributo.Create a Object array that defines the parameters to pass to the attribute's constructor.

  5. Crie uma CustomAttributeBuilder instância de um objeto passando seu ConstructorInfo Construtor para o objeto recuperado na etapa Object 3 e a matriz criada na etapa 4.Instantiate a CustomAttributeBuilder object by passing its constructor the ConstructorInfo object retrieved in step 3 and the Object array created in step 4.

Em seguida, você pode passar uma matriz CustomAttributeBuilder desses objetos em vez attributes do parâmetro para [], AssemblyName, CustomAttributeBuilder<xref: System. Text. RegularExpressions. Regex. CompileToAssembly% 28System. Text. RegularExpressions. RegexCompilationInfo% 5b% 5D% 2CSystem. Reflection. AssemblyName% 2CSystem. Reflection. Emit. CustomAttributeBuilder% 5b% 5D% 2CSystem. String% 29 > método.You can then pass an array of these CustomAttributeBuilder objects instead of the attributes parameter to the [], AssemblyName, CustomAttributeBuilder<xref:System.Text.RegularExpressions.Regex.CompileToAssembly%28System.Text.RegularExpressions.RegexCompilationInfo%5B%5D%2CSystem.Reflection.AssemblyName%2CSystem.Reflection.Emit.CustomAttributeBuilder%5B%5D%2CSystem.String%29> method.

Notas aos Chamadores

Se você estiver desenvolvendo em um sistema que tenha .NET Framework 4.5.NET Framework 4.5 ou em suas versões de ponto instaladas .NET Framework 4.NET Framework 4, você terá como destino CompileToAssembly(RegexCompilationInfo[], AssemblyName) e usará o método para criar um assembly que contenha expressões regulares compiladas.If you are developing on a system that has .NET Framework 4.5.NET Framework 4.5 or its point releases installed, you target .NET Framework 4.NET Framework 4, and you use the CompileToAssembly(RegexCompilationInfo[], AssemblyName) method to create an assembly that contains compiled regular expressions. Tentar usar uma das expressões regulares nesse assembly em um sistema que .NET Framework 4.NET Framework 4 gera uma exceção.Trying to use one of the regular expressions in that assembly on a system that has .NET Framework 4.NET Framework 4 throws an exception. Para solucionar esse problema, pode-se seguir uma das seguintes alternativas:To work around this problem, you can do either of the following: -Crie o assembly que contém as expressões regulares compiladas em um sistema que .NET Framework 4.NET Framework 4 tenha o em vez de versões posteriores instaladas.- Build the assembly that contains the compiled regular expressions on a system that has .NET Framework 4.NET Framework 4 instead of later versions installed.

-Em vez de CompileToAssembly(RegexCompilationInfo[], AssemblyName) chamar e recuperar a expressão regular compilada de um assembly, use métodos estáticos Regex ou de instância Compiled com a opção ao criar Regex uma instância de um objeto ou chamar uma expressão regular método de correspondência de padrões.- Instead of calling CompileToAssembly(RegexCompilationInfo[], AssemblyName) and retrieving the compiled regular expression from an assembly, use either static or instance Regex methods with the Compiled option when you instantiate a Regex object or call a regular expression pattern matching method.

Veja também

Aplica-se a