Regex.CompileToAssembly Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Kompiluje regulární výrazy a ukládá je na disk v jednom sestavení.
Přetížení
CompileToAssembly(RegexCompilationInfo[], AssemblyName) |
Zastaralé.
Zkompiluje jeden nebo více zadaných Regex objektů do pojmenovaného sestavení. |
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) |
Zastaralé.
Zkompiluje jeden nebo více zadaných Regex objektů do pojmenovaného sestavení se zadanými atributy. |
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) |
Zastaralé.
Zkompiluje jeden nebo více zadaných Regex objektů a zadaný soubor prostředku do pojmenovaného sestavení se zadanými atributy. |
Poznámky
Poznámka
V .NET Core a .NET 5+, volání metody Regex.CompileToAssembly
vyvolá PlatformNotSupportedException. Zápis sestavení není podporován.
CompileToAssembly(RegexCompilationInfo[], AssemblyName)
Upozornění
Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.
Zkompiluje jeden nebo více zadaných Regex objektů do pojmenovaného sestavení.
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);
[System.Obsolete("Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.", DiagnosticId="SYSLIB0036", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static void CompileToAssembly (System.Text.RegularExpressions.RegexCompilationInfo[] regexinfos, System.Reflection.AssemblyName assemblyname);
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName -> unit
[<System.Obsolete("Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.", DiagnosticId="SYSLIB0036", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName -> unit
Public Shared Sub CompileToAssembly (regexinfos As RegexCompilationInfo(), assemblyname As AssemblyName)
Parametry
- regexinfos
- RegexCompilationInfo[]
Pole, které popisuje regulární výrazy ke kompilaci.
- assemblyname
- AssemblyName
Název souboru sestavení.
- Atributy
Výjimky
Hodnota vlastnosti parametru assemblyname
Name je prázdný nebo null řetězec.
-nebo-
Vzor regulárního výrazu jednoho nebo více objektů v regexinfos
obsahuje neplatnou syntaxi.
assemblyname
nebo regexinfos
je null
.
Pouze .NET Core a .NET 5+ : Vytvoření sestavení zkompilovaných regulárních výrazů není podporováno.
Příklady
Následující příklad vytvoří sestavení s názvem RegexLib.dll. Sestavení obsahuje dva zkompilované regulární výrazy. První, Utilities.RegularExpressions.DuplicatedString
, odpovídá dvěma identickým souvislými slovy. Druhá , zkontroluje, Utilities.RegularExpressions.EmailAddress
zda řetězec má správný formát, který má být e-mailovou adresou.
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
Regulární výraz, který kontroluje řetězec duplicitních slov, se pak vytvoří instance a použije se v následujícím příkladu.
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.'
Úspěšná kompilace tohoto druhého příkladu vyžaduje přidání odkazu na RegexLib.dll (sestavení vytvořeného prvním příkladem) do projektu.
Poznámky
Metoda CompileToAssembly(RegexCompilationInfo[], AssemblyName) vygeneruje sestavení rozhraní .NET Framework, ve kterém je každý regulární výraz definovaný v regexinfos
poli reprezentován třídou. CompileToAssembly(RegexCompilationInfo[], AssemblyName) Metoda se obvykle volá z samostatné aplikace, která generuje sestavení zkompilovaných regulárních výrazů. Každý regulární výraz zahrnutý v sestavení má následující charakteristiky:
Je odvozena od Regex třídy.
Je přiřazen plně kvalifikovaný název, který je definován pomocí
fullnamespace
parametrů odpovídajícíhoname
RegexCompilationInfo objektu.Má výchozí (nebo bez parametrů) konstruktor.
Kód, který vytvoří instanci a používá zkompilovaný regulární výraz, se obvykle nachází v sestavení nebo aplikaci, která je oddělená od kódu, který vytváří sestavení.
Poznámky pro volající
Pokud vyvíjíte v systému s nainstalovaným rozhraním .NET Framework 4.5 nebo jeho bodovými verzemi, cílíte na rozhraní .NET Framework 4 a pomocí CompileToAssembly(RegexCompilationInfo[], AssemblyName) metody vytvoříte sestavení, které obsahuje zkompilované regulární výrazy. Při pokusu o použití jednoho z regulárních výrazů v daném sestavení v systému, který má rozhraní .NET Framework 4, vyvolá výjimku. Chcete-li tento problém vyřešit, můžete provést některou z následujících akcí: – Sestavení obsahující zkompilované regulární výrazy v systému, který má nainstalované rozhraní .NET Framework 4 místo novějších verzí.
- Místo volání CompileToAssembly(RegexCompilationInfo[], AssemblyName) a načítání zkompilovaného regulárního výrazu ze sestavení použijte buď statické metody, nebo metody instance Regex s Compiled možností, když vytvoříte instanci objektu Regex nebo zavoláte metodu porovnávání vzorů regulárních výrazů.
Viz také
Platí pro
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[])
Upozornění
Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.
Zkompiluje jeden nebo více zadaných Regex objektů do pojmenovaného sestavení se zadanými atributy.
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);
[System.Obsolete("Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.", DiagnosticId="SYSLIB0036", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static void CompileToAssembly (System.Text.RegularExpressions.RegexCompilationInfo[] regexinfos, System.Reflection.AssemblyName assemblyname, 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
[<System.Obsolete("Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.", DiagnosticId="SYSLIB0036", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName * System.Reflection.Emit.CustomAttributeBuilder[] -> unit
Public Shared Sub CompileToAssembly (regexinfos As RegexCompilationInfo(), assemblyname As AssemblyName, attributes As CustomAttributeBuilder())
Parametry
- regexinfos
- RegexCompilationInfo[]
Pole, které popisuje regulární výrazy ke kompilaci.
- assemblyname
- AssemblyName
Název souboru sestavení.
- attributes
- CustomAttributeBuilder[]
Pole, které definuje atributy, které se mají použít pro sestavení.
- Atributy
Výjimky
Hodnota vlastnosti parametru assemblyname
Name je prázdný nebo null řetězec.
-nebo-
Vzor regulárního výrazu jednoho nebo více objektů v regexinfos
obsahuje neplatnou syntaxi.
assemblyname
nebo regexinfos
je null
.
Pouze .NET Core a .NET 5+ : Vytvoření sestavení zkompilovaných regulárních výrazů není podporováno.
Příklady
Následující příklad vytvoří sestavení s názvem RegexLib.dll a použije AssemblyTitleAttribute na něj atribut. Sestavení obsahuje dva zkompilované regulární výrazy. První, Utilities.RegularExpressions.DuplicatedString
, odpovídá dvěma identickým souvislými slovy. Druhá , zkontroluje, Utilities.RegularExpressions.EmailAddress
zda řetězec má správný formát, který má být e-mailovou adresou.
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
Můžete ověřit, že atribut byl použit pro sestavení prozkoumáním jeho manifestu pomocí nástroje reflexe, AssemblyTitleAttribute jako je ILDasm.
Regulární výraz, který kontroluje řetězec duplicitních slov, se pak vytvoří instance a použije se v následujícím příkladu.
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.'
Úspěšná kompilace tohoto druhého příkladu vyžaduje přidání odkazu na RegexLib.dll (sestavení vytvořeného prvním příkladem) do projektu.
Poznámky
Metoda CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) vygeneruje sestavení rozhraní .NET Framework, ve kterém je každý regulární výraz definovaný v regexinfos
poli reprezentován třídou. CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) Metoda se obvykle volá z samostatné aplikace, která generuje sestavení zkompilovaných regulárních výrazů. Každý regulární výraz zahrnutý v sestavení má následující charakteristiky:
Je odvozena od Regex třídy.
Je přiřazen plně kvalifikovaný název, který je definován pomocí
fullnamespace
parametrů odpovídajícíhoname
RegexCompilationInfo objektu.Má výchozí (nebo bez parametrů) konstruktor.
Kód, který vytvoří instanci a používá zkompilovaný regulární výraz, se obvykle nachází v sestavení nebo aplikaci, která je oddělená od kódu, který vytváří sestavení.
CompileToAssembly Vzhledem k tomu, že metoda generuje sestavení rozhraní .NET Framework z volání metody místo použití klíčového slova definice třídy konkrétního jazyka (například class
v jazyce C# nebo Class
...End Class
v Visual Basic), neumožňuje přiřazení atributů rozhraní .NET Framework sestavení pomocí standardní syntaxe atributu vývojového jazyka. Parametr attributes
poskytuje alternativní metodu pro definování atributů, které se vztahují na sestavení. Pro každý atribut, který chcete použít pro sestavení, postupujte takto:
Vytvořte pole Type objektů představujících typy parametrů konstruktoru atributu, který chcete volat.
Type Načtěte objekt představující třídu atributu, kterou chcete použít pro nové sestavení.
GetConstructor Volejte metodu objektu atributu Type pro načtení ConstructorInfo objektu představující konstruktor atributu, který chcete volat. Předejte metodu GetConstructor pole Type objektů, které představují typy parametrů konstruktoru.
Vytvořte Object pole, které definuje parametry, které se mají předat konstruktoru atributu.
CustomAttributeBuilder Vytvořte instanci objektu předáním jeho konstruktoru ConstructorInfo načteného v kroku 3 a Object pole vytvořené v kroku 4.
Potom můžete metodě předat pole těchto CustomAttributeBuilder objektů místo attributes
parametru Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) .
Poznámky pro volající
Pokud vyvíjíte v systému s nainstalovaným rozhraním .NET Framework 4.5 nebo jeho bodovými verzemi, cílíte na rozhraní .NET Framework 4 a pomocí CompileToAssembly(RegexCompilationInfo[], AssemblyName) metody vytvoříte sestavení, které obsahuje zkompilované regulární výrazy. Při pokusu o použití jednoho z regulárních výrazů v daném sestavení v systému, který má rozhraní .NET Framework 4, vyvolá výjimku. Pokud chcete tento problém vyřešit, můžete provést některou z následujících akcí: – Sestavení, které obsahuje kompilované regulární výrazy v systému s nainstalovaným rozhraním .NET Framework 4 místo novějších verzí.
- Místo volání CompileToAssembly(RegexCompilationInfo[], AssemblyName) a načítání kompilovaného regulárního výrazu ze sestavení použijte buď statické metody, nebo metody instance Regex s Compiled možností, když vytvoříte instanci objektu Regex nebo zavoláte metodu porovnávání vzorů regulárních výrazů.
Viz také
Platí pro
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String)
Upozornění
Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.
Zkompiluje jeden nebo více zadaných Regex objektů a zadaný soubor prostředku do pojmenovaného sestavení se zadanými atributy.
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);
[System.Obsolete("Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.", DiagnosticId="SYSLIB0036", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public static void CompileToAssembly (System.Text.RegularExpressions.RegexCompilationInfo[] regexinfos, System.Reflection.AssemblyName assemblyname, System.Reflection.Emit.CustomAttributeBuilder[]? attributes, 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
[<System.Obsolete("Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.", DiagnosticId="SYSLIB0036", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
static member CompileToAssembly : System.Text.RegularExpressions.RegexCompilationInfo[] * System.Reflection.AssemblyName * System.Reflection.Emit.CustomAttributeBuilder[] * string -> unit
Public Shared Sub CompileToAssembly (regexinfos As RegexCompilationInfo(), assemblyname As AssemblyName, attributes As CustomAttributeBuilder(), resourceFile As String)
Parametry
- regexinfos
- RegexCompilationInfo[]
Pole, které popisuje regulární výrazy ke kompilaci.
- assemblyname
- AssemblyName
Název souboru sestavení.
- attributes
- CustomAttributeBuilder[]
Pole, které definuje atributy, které se mají použít pro sestavení.
- resourceFile
- String
Název souboru prostředků Win32, který se má zahrnout do sestavení.
- Atributy
Výjimky
Hodnota assemblyname
vlastnosti parametru Name je prázdný nebo null řetězec.
-nebo-
Vzor regulárního výrazu jednoho nebo více objektů v regexinfos
souboru obsahuje neplatnou syntaxi.
assemblyname
nebo regexinfos
je null
.
Parametr resourceFile
určuje neplatný soubor prostředků Win32.
Soubor určený parametrem resourceFile
nelze najít.
Pouze .NET Core a .NET 5+ : Vytvoření sestavení kompilovaných regulárních výrazů se nepodporuje.
Poznámky
Metoda CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) vygeneruje sestavení rozhraní .NET Framework, ve kterém je každý regulární výraz definovaný v regexinfos
poli reprezentován třídou. CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) Metoda se obvykle volá z samostatné aplikace, která generuje sestavení kompilovaných regulárních výrazů. Každý regulární výraz zahrnutý v sestavení má následující vlastnosti:
Je odvozen z Regex třídy.
Je přiřazen plně kvalifikovaný název, který je definován
fullnamespace
parametry odpovídajícíhoname
objektu RegexCompilationInfo .Má výchozí konstruktor (nebo bez parametrů).
Obvykle se kód, který vytvoří instanci a používá zkompilovaný regulární výraz, najdete v sestavení nebo aplikaci, která je oddělená od kódu, který vytvoří sestavení.
Vzhledem k tomu, že CompileToAssembly metoda generuje sestavení rozhraní .NET Framework z volání metody místo použití klíčového slova definice třídy konkrétního jazyka (například class
v jazyce C# nebo Class
...End Class
v Visual Basic), neumožňuje přiřazení atributů rozhraní .NET Framework sestavení pomocí standardní syntaxe atributu vývojového jazyka. Parametr attributes
poskytuje alternativní metodu definování atributů, které se vztahují na sestavení. Pro každý atribut, který chcete použít pro sestavení, postupujte takto:
Vytvořte pole Type objektů představujících typy parametrů konstruktoru atributu, který chcete volat.
Type Načtěte objekt představující třídu atributu, kterou chcete použít pro nové sestavení.
GetConstructor Zavolejte metodu objektu atributu Type pro načtení ConstructorInfo objektu představující konstruktor atributu, který chcete volat. GetConstructor Předání metody pole Type objektů, které představuje typy parametrů konstruktoru
Object Vytvořte pole, které definuje parametry pro předání konstruktoru atributu.
CustomAttributeBuilder Vytvořte instanci objektu předáním jeho konstruktoru ConstructorInfo načteného v kroku 3 a Object pole vytvořené v kroku 4.
Pak můžete předat pole těchto CustomAttributeBuilder objektů místo attributes
parametru CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) metodě.
Poznámky pro volající
Pokud vyvíjíte v systému s nainstalovaným rozhraním .NET Framework 4.5 nebo jeho verzemi bodů, cílíte na rozhraní .NET Framework 4 a použijete metodu CompileToAssembly(RegexCompilationInfo[], AssemblyName) k vytvoření sestavení, které obsahuje kompilované regulární výrazy. Při pokusu o použití jednoho z regulárních výrazů v daném sestavení v systému, který má rozhraní .NET Framework 4, vyvolá výjimku. Pokud chcete tento problém vyřešit, můžete provést některou z následujících akcí: – Sestavení, které obsahuje kompilované regulární výrazy v systému s nainstalovaným rozhraním .NET Framework 4 místo novějších verzí.
- Místo volání CompileToAssembly(RegexCompilationInfo[], AssemblyName) a načítání kompilovaného regulárního výrazu ze sestavení použijte buď statické metody, nebo metody instance Regex s Compiled možností, když vytvoříte instanci objektu Regex nebo zavoláte metodu porovnávání vzorů regulárních výrazů.