Regex.CompileToAssembly Regex.CompileToAssembly Regex.CompileToAssembly Method

Определение

Компилирует регулярные выражения и сохраняет их на диск в единой сборке.Compiles regular expressions and saves them to disk in a single assembly.

Перегрузки

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

Компилирует один или несколько указанных объектов Regex в именованную сборку.Compiles one or more specified Regex objects to a named assembly.

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

Компилирует один или несколько указанных объектов Regex в именованную сборку с заданными атрибутами.Compiles one or more specified Regex objects to a named assembly with the specified attributes.

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

Компилирует один или несколько указанных объектов Regex и указанный файл ресурсов в именованную сборку с заданными атрибутами.Compiles one or more specified Regex objects and a specified resource file to a named assembly with the specified attributes.

Комментарии

В .NET Core вызовы Regex.CompileToAssembly метода вызывают исключение a; запись сборки в PlatformNotSupportedExceptionсборку не поддерживается.On .NET Core, calls to the Regex.CompileToAssembly method throw a PlatformNotSupportedException; writing out an assembly is not supported.

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

Компилирует один или несколько указанных объектов Regex в именованную сборку.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

Параметры

regexinfos
RegexCompilationInfo[]

Массив, описывающий регулярные выражения для компилирования.An array that describes the regular expressions to compile.

assemblyname
AssemblyName AssemblyName AssemblyName

Имя файла сборки.The file name of the assembly.

Исключения

Значением свойства Name параметра assemblyname является пустая или нулевая строка.The value of the assemblyname parameter's Name property is an empty or null string.

-или--or- Шаблон регулярного выражения одного или более объектов в regexinfos содержит недопустимый синтаксис.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

Значение параметра assemblyname или regexinfosnull.assemblyname or regexinfos is null.

Только в .NET Core: создание сборки скомпилированных регулярных выражений не поддерживается..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Примеры

В следующем примере создается сборка с именем Режекслиб. dll.The following example creates an assembly named RegexLib.dll. Сборка включает два скомпилированных регулярных выражения.The assembly includes two compiled regular expressions. Первый, Utilities.RegularExpressions.DuplicatedString, соответствует двум одинаковым смежным словам.The first, Utilities.RegularExpressions.DuplicatedString, matches two identical contiguous words. Во-вторых Utilities.RegularExpressions.EmailAddress, проверяет, имеет ли строка правильный формат для адреса электронной почты.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

После этого регулярное выражение, которое проверяет строку на наличие повторяющихся слов, создается и используется в следующем примере.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.'

Для успешной компиляции второго примера требуется ссылка на Режекслиб. dll (сборка, созданная в первом примере) для добавления в проект.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.

Комментарии

Метод создает сборку .NET Framework, в которой каждое регулярное выражение, определенное regexinfos в массиве, представлено классом. CompileToAssembly(RegexCompilationInfo[], AssemblyName)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. Как правило, CompileToAssembly(RegexCompilationInfo[], AssemblyName) метод вызывается из отдельного приложения, создающего сборку скомпилированных регулярных выражений.Typically, the CompileToAssembly(RegexCompilationInfo[], AssemblyName) method is called from a separate application that generates an assembly of compiled regular expressions. Каждое регулярное выражение, входящее в сборку, имеет следующие характеристики.Each regular expression included in the assembly has the following characteristics:

  • Он является производным от Regex класса.It is derived from the Regex class.

  • Ей присваивается полное имя, определяемое fullnamespace параметрами и name соответствующего RegexCompilationInfo объекта.It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Он имеет конструктор по умолчанию (или без параметров).It has a default (or parameterless) constructor.

Как правило, код, который создает экземпляр и использует скомпилированное регулярное выражение, находится в сборке или приложении, отдельном от кода, который создает сборку.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.

Примечания для тех, кто вызывает этот метод

Если вы разрабатываете в системе, на .NET Framework 4.5.NET Framework 4.5 которой установлен или ее пункт выпуски .NET Framework 4.NET Framework 4, вы используете CompileToAssembly(RegexCompilationInfo[], AssemblyName) , а метод используется для создания сборки, содержащей скомпилированные регулярные выражения.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. Попытка использовать одно из регулярных выражений в этой сборке в системе, которая .NET Framework 4.NET Framework 4 создает исключение.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. Чтобы обойти эту проблему, можно воспользоваться одним из следующих способов:To work around this problem, you can do either of the following: — Сборка, которая содержит скомпилированные регулярные выражения, в системе, в которой .NET Framework 4.NET Framework 4 установлены вместо более поздних версий.- 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.

— Вместо вызова CompileToAssembly(RegexCompilationInfo[], AssemblyName) и получения скомпилированного регулярного выражения из сборки используйте статические методы или метод экземпляра Regex с Compiled параметром при создании экземпляра Regex объекта или вызове регулярного выражения. метод сопоставления шаблонов.- 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.

Дополнительно

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

Компилирует один или несколько указанных объектов Regex в именованную сборку с заданными атрибутами.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

Параметры

regexinfos
RegexCompilationInfo[]

Массив, описывающий регулярные выражения для компилирования.An array that describes the regular expressions to compile.

assemblyname
AssemblyName AssemblyName AssemblyName

Имя файла сборки.The file name of the assembly.

attributes
CustomAttributeBuilder[]

Массив, определяющий атрибуты, применяемые к сборке.An array that defines the attributes to apply to the assembly.

Исключения

Значением свойства Name параметра assemblyname является пустая или нулевая строка.The value of the assemblyname parameter's Name property is an empty or null string.

-или--or- Шаблон регулярного выражения одного или более объектов в regexinfos содержит недопустимый синтаксис.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

Значение параметра assemblyname или regexinfosnull.assemblyname or regexinfos is null.

Только в .NET Core: создание сборки скомпилированных регулярных выражений не поддерживается..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Примеры

В следующем примере создается сборка с именем режекслиб. dll и к ней AssemblyTitleAttribute применяется атрибут.The following example creates an assembly named RegexLib.dll and applies the AssemblyTitleAttribute attribute to it. Сборка включает два скомпилированных регулярных выражения.The assembly includes two compiled regular expressions. Первый, Utilities.RegularExpressions.DuplicatedString, соответствует двум одинаковым смежным словам.The first, Utilities.RegularExpressions.DuplicatedString, matches two identical contiguous words. Во-вторых Utilities.RegularExpressions.EmailAddress, проверяет, имеет ли строка правильный формат для адреса электронной почты.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

Можно проверить, AssemblyTitleAttribute применен ли атрибут к сборке, проверив его манифест с помощью программы отражения, такой как 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.

После этого регулярное выражение, которое проверяет строку на наличие повторяющихся слов, создается и используется в следующем примере.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.'

Для успешной компиляции второго примера требуется ссылка на Режекслиб. dll (сборка, созданная в первом примере) для добавления в проект.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.

Комментарии

Метод создает сборку .NET Framework, в которой каждое регулярное выражение, определенное regexinfos в массиве, представлено классом. CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[])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. Как правило, CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) метод вызывается из отдельного приложения, создающего сборку скомпилированных регулярных выражений.Typically, the CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method is called from a separate application that generates an assembly of compiled regular expressions. Каждое регулярное выражение, входящее в сборку, имеет следующие характеристики.Each regular expression included in the assembly has the following characteristics:

  • Он является производным от Regex класса.It is derived from the Regex class.

  • Ей присваивается полное имя, определяемое fullnamespace параметрами и name соответствующего RegexCompilationInfo объекта.It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Он имеет конструктор по умолчанию (или без параметров).It has a default (or parameterless) constructor.

Как правило, код, который создает экземпляр и использует скомпилированное регулярное выражение, находится в сборке или приложении, отдельном от кода, который создает сборку.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.

Поскольку метод создает .NET Framework сборку из вызова метода вместо использования ключевого слова определения класса определенного языка (например, class в C# или Class... CompileToAssemblyEnd 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 в Visual Basic) он не позволяет назначать атрибуты .NET Framework сборке с помощью стандартного синтаксиса атрибутов языка разработки.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. attributes Параметр предоставляет альтернативный метод для определения атрибутов, применяемых к сборке.The attributes parameter provides an alternative method for defining the attributes that apply to the assembly. Для каждого атрибута, который необходимо применить к сборке, выполните следующие действия.For each attribute that you want to apply to the assembly, do the following:

  1. Создайте массив Type объектов, представляющих типы параметров конструктора атрибута, который необходимо вызвать.Create an array of Type objects representing the parameter types of the attribute constructor that you want to call.

  2. Type Получите объект, представляющий класс атрибута, который необходимо применить к новой сборке.Retrieve a Type object representing the attribute class that you want to apply to the new assembly.

  3. Вызовите Type метод объекта Attribute, чтобы получить ConstructorInfo объект, представляющий конструктор атрибута, который требуется вызвать. GetConstructorCall the GetConstructor method of the attribute Type object to retrieve a ConstructorInfo object representing the attribute constructor that you want to call. Передайте Type метод массив объектов, представляющий типы параметров конструктора. GetConstructorPass the GetConstructor method the array of Type objects that represents the constructor's parameter types.

  4. Object Создайте массив, определяющий параметры для передачи в конструктор атрибута.Create a Object array that defines the parameters to pass to the attribute's constructor.

  5. Создайте экземпляр ConstructorInfo объекта, передав конструктору объект, полученный на шаге 3, и Object массив, созданный на шаге 4. CustomAttributeBuilderInstantiate a CustomAttributeBuilder object by passing its constructor the ConstructorInfo object retrieved in step 3 and the Object array created in step 4.

Затем можно передать массив этих CustomAttributeBuilder объектов вместо attributes параметра в Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) метод.You can then pass an array of these CustomAttributeBuilder objects instead of the attributes parameter to the Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method.

Примечания для тех, кто вызывает этот метод

Если вы разрабатываете в системе, на .NET Framework 4.5.NET Framework 4.5 которой установлен или ее пункт выпуски .NET Framework 4.NET Framework 4, вы используете CompileToAssembly(RegexCompilationInfo[], AssemblyName) , а метод используется для создания сборки, содержащей скомпилированные регулярные выражения.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. Попытка использовать одно из регулярных выражений в этой сборке в системе, которая .NET Framework 4.NET Framework 4 создает исключение.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. Чтобы обойти эту проблему, можно воспользоваться одним из следующих способов:To work around this problem, you can do either of the following: — Сборка, которая содержит скомпилированные регулярные выражения, в системе, в которой .NET Framework 4.NET Framework 4 установлены вместо более поздних версий.- 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.

— Вместо вызова CompileToAssembly(RegexCompilationInfo[], AssemblyName) и получения скомпилированного регулярного выражения из сборки используйте статические методы или метод экземпляра Regex с Compiled параметром при создании экземпляра Regex объекта или вызове регулярного выражения. метод сопоставления шаблонов.- 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.

Дополнительно

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

Компилирует один или несколько указанных объектов Regex и указанный файл ресурсов в именованную сборку с заданными атрибутами.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

Параметры

regexinfos
RegexCompilationInfo[]

Массив, описывающий регулярные выражения для компилирования.An array that describes the regular expressions to compile.

assemblyname
AssemblyName AssemblyName AssemblyName

Имя файла сборки.The file name of the assembly.

attributes
CustomAttributeBuilder[]

Массив, определяющий атрибуты, применяемые к сборке.An array that defines the attributes to apply to the assembly.

resourceFile
String String String

Имя файла ресурса Win32 для включения в сборку.The name of the Win32 resource file to include in the assembly.

Исключения

Значением свойства Name параметра assemblyname является пустая или нулевая строка.The value of the assemblyname parameter's Name property is an empty or null string.

-или--or- Шаблон регулярного выражения одного или более объектов в regexinfos содержит недопустимый синтаксис.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

Значение параметра assemblyname или regexinfosnull.assemblyname or regexinfos is null.

Параметр resourceFile назначает недопустимый файл ресурсов Win32.The resourceFile parameter designates an invalid Win32 resource file.

Не удается найти файл, заданный свойством resourceFile.The file designated by the resourceFile parameter cannot be found.

Только в .NET Core: создание сборки скомпилированных регулярных выражений не поддерживается..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Комментарии

Метод [], AssemblyName, кустоматтрибутебуилдер<XREF: System. Text. RegularExpressions. Regex. CompileToAssembly% 28System. Text. RegularExpressions. режекскомпилатионинфо% 5b% 5D% 2CSystem. Reflection. имя_сборки% 2CSystem. Reflection. Emit. кустоматтрибутебуилдер% 5b% 5D% 2CSystem. String% 29 > создает сборку .NET Framework, в которой каждое regexinfos регулярное выражение, определенное в массиве, представлено классом.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. Как правило, метод][, AssemblyName,<кустоматтрибутебуилдер XREF: System. Text. RegularExpressions. Regex. CompileToAssembly% 28System. Text. RegularExpressions. режекскомпилатионинфо% 5b% 5D% 2CSystem. Reflection. имя_сборки% 2CSystem. Reflection. Emit. кустоматтрибутебуилдер% 5b% 5D% 2CSystem. String% 29 > вызывается из отдельного приложения, создающего сборку скомпилированных регулярных выражений.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. Каждое регулярное выражение, входящее в сборку, имеет следующие характеристики.Each regular expression included in the assembly has the following characteristics:

  • Он является производным от Regex класса.It is derived from the Regex class.

  • Ей присваивается полное имя, определяемое fullnamespace параметрами и name соответствующего RegexCompilationInfo объекта.It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Он имеет конструктор по умолчанию (или без параметров).It has a default (or parameterless) constructor.

Как правило, код, который создает экземпляр и использует скомпилированное регулярное выражение, находится в сборке или приложении, отдельном от кода, который создает сборку.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.

Поскольку метод создает .NET Framework сборку из вызова метода вместо использования ключевого слова определения класса определенного языка (например, class в C# или Class... CompileToAssemblyEnd 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 в Visual Basic) он не позволяет назначать атрибуты .NET Framework сборке с помощью стандартного синтаксиса атрибутов языка разработки.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. attributes Параметр предоставляет альтернативный метод для определения атрибутов, применяемых к сборке.The attributes parameter provides an alternative method for defining the attributes that apply to the assembly. Для каждого атрибута, который необходимо применить к сборке, выполните следующие действия.For each attribute that you want to apply to the assembly, do the following:

  1. Создайте массив Type объектов, представляющих типы параметров конструктора атрибута, который необходимо вызвать.Create an array of Type objects representing the parameter types of the attribute constructor that you want to call.

  2. Type Получите объект, представляющий класс атрибута, который необходимо применить к новой сборке.Retrieve a Type object representing the attribute class that you want to apply to the new assembly.

  3. Вызовите Type метод объекта Attribute, чтобы получить ConstructorInfo объект, представляющий конструктор атрибута, который требуется вызвать. GetConstructorCall the GetConstructor method of the attribute Type object to retrieve a ConstructorInfo object representing the attribute constructor that you want to call. Передайте Type метод массив объектов, представляющий типы параметров конструктора. GetConstructorPass the GetConstructor method the array of Type objects that represents the constructor's parameter types

  4. Object Создайте массив, определяющий параметры для передачи в конструктор атрибута.Create a Object array that defines the parameters to pass to the attribute's constructor.

  5. Создайте экземпляр ConstructorInfo объекта, передав конструктору объект, полученный на шаге 3, и Object массив, созданный на шаге 4. CustomAttributeBuilderInstantiate a CustomAttributeBuilder object by passing its constructor the ConstructorInfo object retrieved in step 3 and the Object array created in step 4.

Затем можно CustomAttributeBuilder передать массив этих объектов вместо attributes параметра в [], AssemblyName, кустоматтрибутебуилдер<XREF: System. Text. RegularExpressions. Regex. CompileToAssembly% 28System. Text. RegularExpressions. режекскомпилатионинфо% 5b% 5D% 2CSystem. Reflection. имя_сборки% 2CSystem. Reflection. Emit. кустоматтрибутебуилдер% 5b% 5D% 2CSystem. String% 29 >.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.

Примечания для тех, кто вызывает этот метод

Если вы разрабатываете в системе, на .NET Framework 4.5.NET Framework 4.5 которой установлен или ее пункт выпуски .NET Framework 4.NET Framework 4, вы используете CompileToAssembly(RegexCompilationInfo[], AssemblyName) , а метод используется для создания сборки, содержащей скомпилированные регулярные выражения.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. Попытка использовать одно из регулярных выражений в этой сборке в системе, которая .NET Framework 4.NET Framework 4 создает исключение.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. Чтобы обойти эту проблему, можно воспользоваться одним из следующих способов:To work around this problem, you can do either of the following: — Сборка, которая содержит скомпилированные регулярные выражения, в системе, в которой .NET Framework 4.NET Framework 4 установлены вместо более поздних версий.- 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.

— Вместо вызова CompileToAssembly(RegexCompilationInfo[], AssemblyName) и получения скомпилированного регулярного выражения из сборки используйте статические методы или метод экземпляра Regex с Compiled параметром при создании экземпляра Regex объекта или вызове регулярного выражения. метод сопоставления шаблонов.- 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.

Дополнительно

Применяется к