Regex.CompileToAssembly Methode

Definition

Kompiliert reguläre Ausdrücke und speichert diese in einer einzelnen Assembly auf der Festplatte.Compiles regular expressions and saves them to disk in a single assembly.

Überlädt

CompileToAssembly(RegexCompilationInfo[], AssemblyName)

Kompiliert ein oder mehrere angegebene Regex-Objekte in eine benannte Assembly.Compiles one or more specified Regex objects to a named assembly.

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

Kompiliert ein oder mehrere angegebene Regex-Objekte in eine benannte Assembly mit den angegebenen Attributen.Compiles one or more specified Regex objects to a named assembly with the specified attributes.

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

Kompiliert ein oder mehrere angegebene Regex-Objekte und eine angegebene Ressourcendatei in eine benannte Assembly mit den angegebenen Attributen.Compiles one or more specified Regex objects and a specified resource file to a named assembly with the specified attributes.

Hinweise

In .net Core wird durch Aufrufe der Regex.CompileToAssembly -Methode PlatformNotSupportedExceptionausgelöst, das Schreiben einer Assembly wird nicht unterstützt.On .NET Core, calls to the Regex.CompileToAssembly method throw a PlatformNotSupportedException; writing out an assembly is not supported.

CompileToAssembly(RegexCompilationInfo[], AssemblyName)

Kompiliert ein oder mehrere angegebene Regex-Objekte in eine benannte Assembly.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

Parameter

regexinfos
RegexCompilationInfo[]

Ein Array, das die zu kompilierenden regulären Ausdrücke beschreibt.An array that describes the regular expressions to compile.

assemblyname
AssemblyName

Der Dateiname der Assembly.The file name of the assembly.

Ausnahmen

Der Wert der Name-Eigenschaft des assemblyname-Parameters ist eine leere oder eine NULL-Zeichenfolge.The value of the assemblyname parameter's Name property is an empty or null string.

- oder --or- Das Muster des regulären Ausdrucks eines oder mehrerer Objekte in regexinfos enthält eine ungültige Syntax.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

assemblyname oder regexinfos ist null.assemblyname or regexinfos is null.

Nur .NET Core: Das Erstellen einer Assembly aus kompilierten regulären Ausdrücken wird nicht unterstützt..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Beispiele

Im folgenden Beispiel wird eine Assembly mit dem Namen RegExLib. dll erstellt.The following example creates an assembly named RegexLib.dll. Die Assembly enthält zwei kompilierte reguläre Ausdrücke.The assembly includes two compiled regular expressions. Der erste, Utilities.RegularExpressions.DuplicatedString, entspricht zwei identischen zusammenhängenden Wörtern.The first, Utilities.RegularExpressions.DuplicatedString, matches two identical contiguous words. Die zweite, Utilities.RegularExpressions.EmailAddress, überprüft, ob eine Zeichenfolge das richtige Format für eine e-Mail-Adresse hat.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

Der reguläre Ausdruck, der eine Zeichenfolge auf doppelte Wörter überprüft, wird dann instanziiert und im folgenden Beispiel verwendet.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.'

Die erfolgreiche Kompilierung dieses zweiten Beispiels erfordert, dass ein Verweis auf "RegExLib. dll" (die im ersten Beispiel erstellte Assembly) dem Projekt hinzugefügt wird.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.

Hinweise

Die CompileToAssembly(RegexCompilationInfo[], AssemblyName) -Methode generiert eine .NET Framework Assembly, in der jeder reguläre Ausdruck, regexinfos der im-Array definiert ist, durch eine-Klasse dargestellt wird.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. In der Regel CompileToAssembly(RegexCompilationInfo[], AssemblyName) wird die-Methode aus einer separaten Anwendung aufgerufen, die eine Assembly der kompilierten regulären Ausdrücke generiert.Typically, the CompileToAssembly(RegexCompilationInfo[], AssemblyName) method is called from a separate application that generates an assembly of compiled regular expressions. Jeder reguläre Ausdruck, der in der Assembly enthalten ist, weist die folgenden Eigenschaften auf:Each regular expression included in the assembly has the following characteristics:

  • Sie wird von der Regex -Klasse abgeleitet.It is derived from the Regex class.

  • Ihm wird der voll qualifizierte Name zugewiesen, der durch den fullnamespace -Parameter und den-Parameter des entsprechenden RegexCompilationInfo - name Objekts definiert wird.It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Es verfügt über einen Standard-Konstruktor (oder einen Parameter losen).It has a default (or parameterless) constructor.

Normalerweise befindet sich der Code, der den kompilierten regulären Ausdruck instanziiert und verwendet, in einer Assembly oder Anwendung, die von dem Code getrennt ist, der die Assembly erstellt.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.

Hinweise für Aufrufer

Wenn Sie auf einem System entwickeln, auf dem .NET Framework 4.5.NET Framework 4.5 oder dessen Punkt Releases installiert sind, können .NET Framework 4.NET Framework 4Sie auf abzielen und die CompileToAssembly(RegexCompilationInfo[], AssemblyName) -Methode verwenden, um eine Assembly zu erstellen, die kompilierte reguläre Ausdrücke enthält.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. Der Versuch, einen der regulären Ausdrücke in dieser Assembly auf einem System zu verwenden, .NET Framework 4.NET Framework 4 das eine Ausnahme auslöst.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. Um dieses Problem zu umgehen, haben Sie die folgenden Möglichkeiten:To work around this problem, you can do either of the following: -Erstellen Sie die Assembly, die die kompilierten regulären Ausdrücke in einem System .NET Framework 4.NET Framework 4 enthält, das anstelle von neueren Versionen installiert ist.- 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.

-Anstatt CompileToAssembly(RegexCompilationInfo[], AssemblyName) den kompilierten regulären Ausdruck zu aufrufen und aus einer Assembly abzurufen, verwenden Sie entweder statische Methoden oder Instanzmethoden Regex mit der Compiled -Option, wenn Regex Sie ein-Objekt instanziieren oder einen regulären Ausdruck aufrufen. Muster Vergleichsmethode.- 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.

Siehe auch

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

Kompiliert ein oder mehrere angegebene Regex-Objekte in eine benannte Assembly mit den angegebenen Attributen.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

Parameter

regexinfos
RegexCompilationInfo[]

Ein Array, das die zu kompilierenden regulären Ausdrücke beschreibt.An array that describes the regular expressions to compile.

assemblyname
AssemblyName

Der Dateiname der Assembly.The file name of the assembly.

attributes
CustomAttributeBuilder[]

Ein Array, das die auf die Assembly anzuwendenden Attribute definiert.An array that defines the attributes to apply to the assembly.

Ausnahmen

Der Wert der Name-Eigenschaft des assemblyname-Parameters ist eine leere oder eine NULL-Zeichenfolge.The value of the assemblyname parameter's Name property is an empty or null string.

- oder --or- Das Muster des regulären Ausdrucks eines oder mehrerer Objekte in regexinfos enthält eine ungültige Syntax.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

assemblyname oder regexinfos ist null.assemblyname or regexinfos is null.

Nur .NET Core: Das Erstellen einer Assembly aus kompilierten regulären Ausdrücken wird nicht unterstützt..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Beispiele

Im folgenden Beispiel wird eine Assembly mit dem Namen RegExLib. dll erstellt AssemblyTitleAttribute und das-Attribut darauf angewendet.The following example creates an assembly named RegexLib.dll and applies the AssemblyTitleAttribute attribute to it. Die Assembly enthält zwei kompilierte reguläre Ausdrücke.The assembly includes two compiled regular expressions. Der erste, Utilities.RegularExpressions.DuplicatedString, entspricht zwei identischen zusammenhängenden Wörtern.The first, Utilities.RegularExpressions.DuplicatedString, matches two identical contiguous words. Die zweite, Utilities.RegularExpressions.EmailAddress, überprüft, ob eine Zeichenfolge das richtige Format für eine e-Mail-Adresse hat.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

Sie können überprüfen, AssemblyTitleAttribute ob das Attribut auf die Assembly angewendet wurde, indem Sie das Manifest mit einem Reflektionsobjekt wie Ildasm untersuchen.You can verify that the AssemblyTitleAttribute attribute has been applied to the assembly by examining its manifest with a reflection utility such as ILDasm.

Der reguläre Ausdruck, der eine Zeichenfolge auf doppelte Wörter überprüft, wird dann instanziiert und im folgenden Beispiel verwendet.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.'

Die erfolgreiche Kompilierung dieses zweiten Beispiels erfordert, dass ein Verweis auf "RegExLib. dll" (die im ersten Beispiel erstellte Assembly) dem Projekt hinzugefügt wird.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.

Hinweise

Die CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) -Methode generiert eine .NET Framework Assembly, in der jeder reguläre Ausdruck, regexinfos der im-Array definiert ist, durch eine-Klasse dargestellt wird.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. In der Regel CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) wird die-Methode aus einer separaten Anwendung aufgerufen, die eine Assembly der kompilierten regulären Ausdrücke generiert.Typically, the CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method is called from a separate application that generates an assembly of compiled regular expressions. Jeder reguläre Ausdruck, der in der Assembly enthalten ist, weist die folgenden Eigenschaften auf:Each regular expression included in the assembly has the following characteristics:

  • Sie wird von der Regex -Klasse abgeleitet.It is derived from the Regex class.

  • Ihm wird der voll qualifizierte Name zugewiesen, der durch den fullnamespace -Parameter und den-Parameter des entsprechenden RegexCompilationInfo - name Objekts definiert wird.It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Es verfügt über einen Standard-Konstruktor (oder einen Parameter losen).It has a default (or parameterless) constructor.

Normalerweise befindet sich der Code, der den kompilierten regulären Ausdruck instanziiert und verwendet, in einer Assembly oder Anwendung, die von dem Code getrennt ist, der die Assembly erstellt.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.

Da die CompileToAssembly Methode generiert eine .NET Framework-Assembly aus einem Methodenaufruf anstelle einer bestimmten Sprache Class Definition-Schlüsselwort (z. B. class in c# oder Class...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 in Visual Basic) können .NET Framework Attribute der Assembly nicht mithilfe der Standard Attribut Syntax der Entwicklungssprache zugewiesen werden.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. Der attributes -Parameter stellt eine alternative Methode zum Definieren der Attribute bereit, die auf die Assembly angewendet werden.The attributes parameter provides an alternative method for defining the attributes that apply to the assembly. Führen Sie für jedes Attribut, das Sie auf die Assembly anwenden möchten, folgende Schritte aus:For each attribute that you want to apply to the assembly, do the following:

  1. Erstellen Sie ein Array Type von-Objekten, die die Parametertypen des Attributkonstruktors darstellen, den Sie aufrufen möchten.Create an array of Type objects representing the parameter types of the attribute constructor that you want to call.

  2. Rufen Sie Type ein-Objekt ab, das die Attribut Klasse darstellt, die Sie auf die neue Assembly anwenden möchten.Retrieve a Type object representing the attribute class that you want to apply to the new assembly.

  3. Rufen Sie GetConstructor die-Methode des Type Attribute-Objekts auf ConstructorInfo , um ein-Objekt abzurufen, das den Attributkonstruktor darstellt, den Sie aufrufen möchten.Call the GetConstructor method of the attribute Type object to retrieve a ConstructorInfo object representing the attribute constructor that you want to call. Übergeben Sie GetConstructor der-Methode das Type Array von-Objekten, das die Parametertypen des Konstruktors darstellt.Pass the GetConstructor method the array of Type objects that represents the constructor's parameter types.

  4. Erstellen Sie Object ein-Array, das die Parameter definiert, die an den Konstruktor des Attributs übergeben werden.Create a Object array that defines the parameters to pass to the attribute's constructor.

  5. Instanziieren Sie CustomAttributeBuilder ein-Objekt, indem Sie dessen ConstructorInfo Konstruktor das in Schritt 3 abgerufene-Objekt und das Object in Schritt 4 erstellte-Array übergeben.Instantiate a CustomAttributeBuilder object by passing its constructor the ConstructorInfo object retrieved in step 3 and the Object array created in step 4.

Sie können ein Array dieser CustomAttributeBuilder Objekte anstelle attributes des-Parameters an die Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) -Methode übergeben.You can then pass an array of these CustomAttributeBuilder objects instead of the attributes parameter to the Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) method.

Hinweise für Aufrufer

Wenn Sie auf einem System entwickeln, auf dem .NET Framework 4.5.NET Framework 4.5 oder dessen Punkt Releases installiert sind, können .NET Framework 4.NET Framework 4Sie auf abzielen und die CompileToAssembly(RegexCompilationInfo[], AssemblyName) -Methode verwenden, um eine Assembly zu erstellen, die kompilierte reguläre Ausdrücke enthält.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. Der Versuch, einen der regulären Ausdrücke in dieser Assembly auf einem System zu verwenden, .NET Framework 4.NET Framework 4 das eine Ausnahme auslöst.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. Um dieses Problem zu umgehen, haben Sie die folgenden Möglichkeiten:To work around this problem, you can do either of the following: -Erstellen Sie die Assembly, die die kompilierten regulären Ausdrücke in einem System .NET Framework 4.NET Framework 4 enthält, das anstelle von neueren Versionen installiert ist.- 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.

-Anstatt CompileToAssembly(RegexCompilationInfo[], AssemblyName) den kompilierten regulären Ausdruck zu aufrufen und aus einer Assembly abzurufen, verwenden Sie entweder statische Methoden oder Instanzmethoden Regex mit der Compiled -Option, wenn Regex Sie ein-Objekt instanziieren oder einen regulären Ausdruck aufrufen. Muster Vergleichsmethode.- 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.

Siehe auch

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

Kompiliert ein oder mehrere angegebene Regex-Objekte und eine angegebene Ressourcendatei in eine benannte Assembly mit den angegebenen Attributen.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

Parameter

regexinfos
RegexCompilationInfo[]

Ein Array, das die zu kompilierenden regulären Ausdrücke beschreibt.An array that describes the regular expressions to compile.

assemblyname
AssemblyName

Der Dateiname der Assembly.The file name of the assembly.

attributes
CustomAttributeBuilder[]

Ein Array, das die auf die Assembly anzuwendenden Attribute definiert.An array that defines the attributes to apply to the assembly.

resourceFile
String

Der Name der in die Assembly einzufügenden Win32-Ressourcendatei.The name of the Win32 resource file to include in the assembly.

Ausnahmen

Der Wert der Name-Eigenschaft des assemblyname-Parameters ist eine leere oder eine NULL-Zeichenfolge.The value of the assemblyname parameter's Name property is an empty or null string.

- oder --or- Das Muster des regulären Ausdrucks eines oder mehrerer Objekte in regexinfos enthält eine ungültige Syntax.The regular expression pattern of one or more objects in regexinfos contains invalid syntax.

assemblyname oder regexinfos ist null.assemblyname or regexinfos is null.

Der resourceFile-Parameter legt eine ungültige Win32-Ressourcendatei fest.The resourceFile parameter designates an invalid Win32 resource file.

Die vom resourceFile-Parameter angegebene Datei kann nicht gefunden werden.The file designated by the resourceFile parameter cannot be found.

Nur .NET Core: Das Erstellen einer Assembly aus kompilierten regulären Ausdrücken wird nicht unterstützt..NET Core only: Creating an assembly of compiled regular expressions is not supported.

Hinweise

Der [], AssemblyName, CustomAttributeBuilder<Xref: System. Text. RegularExpressions. Regex. compilecomassembly% 28system. Text. RegularExpressions. RegexCompilationInfo% 5B% 5D% 2csystem. Reflection. AssemblyName% 2csystem. Reflection. ausgeben. CustomAttributeBuilder% 5B% 5D% 2csystem. String% 29 > Methode generiert eine .NET Framework Assembly, in der jeder reguläre Ausdruck, der regexinfos im Array definiert ist, durch eine Klasse repräsentiertThe [], 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. In der Regel ist]dies der [, AssemblyName, CustomAttributeBuilder<Xref: System. Text. RegularExpressions. Regex. compilecomassembly% 28system. Text. RegularExpressions. RegexCompilationInfo% 5B% 5D% 2csystem. Reflection. AssemblyName% 2csystem. Reflection. ausgeben. CustomAttributeBuilder% 5B% 5D% 2csystem. String% 29 >-Methode wird von einer separaten Anwendung aufgerufen, die eine Assembly der kompilierten regulären Ausdrücke generiert.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. Jeder reguläre Ausdruck, der in der Assembly enthalten ist, weist die folgenden Eigenschaften auf:Each regular expression included in the assembly has the following characteristics:

  • Sie wird von der Regex -Klasse abgeleitet.It is derived from the Regex class.

  • Ihm wird der voll qualifizierte Name zugewiesen, der durch den fullnamespace -Parameter und den-Parameter des entsprechenden RegexCompilationInfo - name Objekts definiert wird.It is assigned the fully qualified name that is defined by the fullnamespace and name parameters of its corresponding RegexCompilationInfo object.

  • Es verfügt über einen Standard-Konstruktor (oder einen Parameter losen).It has a default (or parameterless) constructor.

Normalerweise befindet sich der Code, der den kompilierten regulären Ausdruck instanziiert und verwendet, in einer Assembly oder Anwendung, die von dem Code getrennt ist, der die Assembly erstellt.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.

Da die CompileToAssembly Methode generiert eine .NET Framework-Assembly aus einem Methodenaufruf anstelle einer bestimmten Sprache Class Definition-Schlüsselwort (z. B. class in c# oder Class...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 in Visual Basic) können .NET Framework Attribute der Assembly nicht mithilfe der Standard Attribut Syntax der Entwicklungssprache zugewiesen werden.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. Der attributes -Parameter stellt eine alternative Methode zum Definieren der Attribute bereit, die auf die Assembly angewendet werden.The attributes parameter provides an alternative method for defining the attributes that apply to the assembly. Führen Sie für jedes Attribut, das Sie auf die Assembly anwenden möchten, folgende Schritte aus:For each attribute that you want to apply to the assembly, do the following:

  1. Erstellen Sie ein Array Type von-Objekten, die die Parametertypen des Attributkonstruktors darstellen, den Sie aufrufen möchten.Create an array of Type objects representing the parameter types of the attribute constructor that you want to call.

  2. Rufen Sie Type ein-Objekt ab, das die Attribut Klasse darstellt, die Sie auf die neue Assembly anwenden möchten.Retrieve a Type object representing the attribute class that you want to apply to the new assembly.

  3. Rufen Sie GetConstructor die-Methode des Type Attribute-Objekts auf ConstructorInfo , um ein-Objekt abzurufen, das den Attributkonstruktor darstellt, den Sie aufrufen möchten.Call the GetConstructor method of the attribute Type object to retrieve a ConstructorInfo object representing the attribute constructor that you want to call. Übergeben Sie GetConstructor der-Methode das Type Array von-Objekten, das die Parametertypen des Konstruktors darstellt.Pass the GetConstructor method the array of Type objects that represents the constructor's parameter types

  4. Erstellen Sie Object ein-Array, das die Parameter definiert, die an den Konstruktor des Attributs übergeben werden.Create a Object array that defines the parameters to pass to the attribute's constructor.

  5. Instanziieren Sie CustomAttributeBuilder ein-Objekt, indem Sie dessen ConstructorInfo Konstruktor das in Schritt 3 abgerufene-Objekt und das Object in Schritt 4 erstellte-Array übergeben.Instantiate a CustomAttributeBuilder object by passing its constructor the ConstructorInfo object retrieved in step 3 and the Object array created in step 4.

Sie können CustomAttributeBuilder ein Array dieser Objekte anstelle attributes des-Parameters an den [], AssemblyName, CustomAttributeBuilder<Xref: System. Text übergeben. RegularExpressions. Regex. CompileToAssembly% 28system. Text. RegularExpressions. RegexCompilationInfo% 5B% 5D% 2csystem. Reflection. AssemblyName% 2csystem. Reflection. ausgeben. CustomAttributeBuilder% 5B% 5D% 2csystem. String% 29 >-Methode.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.

Hinweise für Aufrufer

Wenn Sie auf einem System entwickeln, auf dem .NET Framework 4.5.NET Framework 4.5 oder dessen Punkt Releases installiert sind, können .NET Framework 4.NET Framework 4Sie auf abzielen und die CompileToAssembly(RegexCompilationInfo[], AssemblyName) -Methode verwenden, um eine Assembly zu erstellen, die kompilierte reguläre Ausdrücke enthält.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. Der Versuch, einen der regulären Ausdrücke in dieser Assembly auf einem System zu verwenden, .NET Framework 4.NET Framework 4 das eine Ausnahme auslöst.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. Um dieses Problem zu umgehen, haben Sie die folgenden Möglichkeiten:To work around this problem, you can do either of the following: -Erstellen Sie die Assembly, die die kompilierten regulären Ausdrücke in einem System .NET Framework 4.NET Framework 4 enthält, das anstelle von neueren Versionen installiert ist.- 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.

-Anstatt CompileToAssembly(RegexCompilationInfo[], AssemblyName) den kompilierten regulären Ausdruck zu aufrufen und aus einer Assembly abzurufen, verwenden Sie entweder statische Methoden oder Instanzmethoden Regex mit der Compiled -Option, wenn Regex Sie ein-Objekt instanziieren oder einen regulären Ausdruck aufrufen. Muster Vergleichsmethode.- 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.

Siehe auch

Gilt für: