Regex.CompileToAssembly Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Normal ifadeleri derler ve tek bir derlemede diske kaydeder.
Aşırı Yüklemeler
CompileToAssembly(RegexCompilationInfo[], AssemblyName) |
Kullanımdan kalktı.
Belirtilen Regex bir veya daha fazla nesneyi adlandırılmış bir derlemeye derler. |
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) |
Kullanımdan kalktı.
Belirtilen Regex özniteliklere sahip adlandırılmış bir derlemeye bir veya daha fazla belirtilen nesneyi derler. |
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) |
Kullanımdan kalktı.
Belirtilen özniteliklere sahip adlandırılmış bir derlemeye bir veya daha fazla belirtilen Regex nesne ve belirtilen kaynak dosyasını derler. |
Açıklamalar
Not
.NET Core ve .NET 5+ üzerinde yöntemine yapılan Regex.CompileToAssembly
çağrılar bir PlatformNotSupportedExceptionoluşturur. Derleme yazma desteklenmez.
CompileToAssembly(RegexCompilationInfo[], AssemblyName)
Dikkat
Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.
Belirtilen Regex bir veya daha fazla nesneyi adlandırılmış bir derlemeye derler.
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)
Parametreler
- regexinfos
- RegexCompilationInfo[]
Derlenecek normal ifadeleri açıklayan bir dizi.
- assemblyname
- AssemblyName
Derlemenin dosya adı.
- Öznitelikler
Özel durumlar
Parametrenin Name özelliğinin assemblyname
değeri boş veya null dizedir.
-veya-
içindeki regexinfos
bir veya daha fazla nesnenin normal ifade deseni geçersiz söz dizimi içeriyor.
assemblyname
veya regexinfos
şeklindedir null
.
Yalnızca .NET Core ve .NET 5+ : Derlenmiş normal ifadelerin derlemesini oluşturma desteklenmez.
Örnekler
Aşağıdaki örnek, RegexLib.dll adlı bir derleme oluşturur. Derleme iki derlenmiş normal ifade içerir. İlki, Utilities.RegularExpressions.DuplicatedString
iki özdeş bitişik sözcükle eşleşir. İkincisi, Utilities.RegularExpressions.EmailAddress
bir dizenin e-posta adresi olarak doğru biçime sahip olup olmadığını denetler.
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
Bir dizede yinelenen sözcükleri denetleyan normal ifade örneği oluşturulur ve aşağıdaki örnek tarafından kullanılır.
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.'
Bu ikinci örneğin başarılı bir şekilde derlenmesi için projeye eklenecek RegexLib.dll (ilk örnek tarafından oluşturulan derleme) başvurusu gerekir.
Açıklamalar
yöntemi, CompileToAssembly(RegexCompilationInfo[], AssemblyName) dizide tanımlanan her normal ifadenin regexinfos
bir sınıf tarafından temsil edildiği bir .NET Framework derlemesi oluşturur. Genellikle, yöntemi derlenmiş CompileToAssembly(RegexCompilationInfo[], AssemblyName) normal ifadelerin derlemesini oluşturan ayrı bir uygulamadan çağrılır. Derlemeye dahil edilen her normal ifade aşağıdaki özelliklere sahiptir:
sınıfından Regex türetilir.
Buna, karşılık gelen RegexCompilationInfo nesnesinin ve
name
parametreleri tarafındanfullnamespace
tanımlanan tam ad atanır.Varsayılan (veya parametresiz) bir oluşturucuya sahiptir.
Normalde, derlenmiş normal ifadenin örneğini oluşturan ve kullanan kod, derlemeyi oluşturan koddan ayrı bir derlemede veya uygulamada bulunur.
Arayanlara Notlar
.NET Framework 4.5 veya nokta sürümleri yüklü bir sistemde geliştiriyorsanız, .NET Framework 4'ü hedeflersiniz ve derlenmiş normal ifadeler içeren bir derleme oluşturmak için yöntemini kullanırsınızCompileToAssembly(RegexCompilationInfo[], AssemblyName). .NET Framework 4 içeren bir sistemde bu derlemedeki normal ifadelerden birini kullanmaya çalışmak bir özel durum oluşturur. Bu sorunu geçici olarak çözmek için aşağıdakilerden birini yapabilirsiniz:
Derlenmiş normal ifadeleri içeren derlemeyi, sonraki sürümler yerine .NET Framework 4 yüklü bir sistemde oluşturun.
Derlemeden derlenmiş normal ifadeyi çağırmak CompileToAssembly(RegexCompilationInfo[], AssemblyName) ve almak yerine, bir Regex nesne örneği oluştururken veya normal ifade desen eşleştirme yöntemini çağırırken seçeneğiyle Compiled statik veya örnek Regex yöntemleri kullanın.
Ayrıca bkz.
Şunlara uygulanır
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[])
Dikkat
Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.
Belirtilen Regex özniteliklere sahip adlandırılmış bir derlemeye bir veya daha fazla belirtilen nesneyi derler.
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())
Parametreler
- regexinfos
- RegexCompilationInfo[]
Derlenecek normal ifadeleri açıklayan bir dizi.
- assemblyname
- AssemblyName
Derlemenin dosya adı.
- attributes
- CustomAttributeBuilder[]
Derlemeye uygulanacak öznitelikleri tanımlayan bir dizi.
- Öznitelikler
Özel durumlar
Parametrenin Name özelliğinin assemblyname
değeri boş veya null dizedir.
-veya-
içindeki regexinfos
bir veya daha fazla nesnenin normal ifade deseni geçersiz söz dizimi içeriyor.
assemblyname
veya regexinfos
şeklindedir null
.
Yalnızca .NET Core ve .NET 5+ : Derlenmiş normal ifadelerin derlemesini oluşturma desteklenmez.
Örnekler
Aşağıdaki örnek, RegexLib.dll adlı bir derleme oluşturur ve özniteliğini buna uygular AssemblyTitleAttribute . Derleme iki derlenmiş normal ifade içerir. İlki, Utilities.RegularExpressions.DuplicatedString
iki özdeş bitişik sözcükle eşleşir. İkincisi, Utilities.RegularExpressions.EmailAddress
bir dizenin e-posta adresi olarak doğru biçime sahip olup olmadığını denetler.
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
Özniteliğin AssemblyTitleAttribute derlemeye uygulandığını doğrulamak için bildirimini ILDasm gibi bir yansıma yardımcı programıyla inceleyebilirsiniz.
Bir dizede yinelenen sözcükleri denetleyan normal ifade örneği oluşturulur ve aşağıdaki örnek tarafından kullanılır.
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.'
Bu ikinci örneğin başarılı bir şekilde derlenmesi için projeye eklenecek RegexLib.dll (ilk örnek tarafından oluşturulan derleme) başvurusu gerekir.
Açıklamalar
yöntemi, CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) dizide tanımlanan her normal ifadenin regexinfos
bir sınıf tarafından temsil edildiği bir .NET Framework derlemesi oluşturur. Genellikle, yöntemi derlenmiş CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) normal ifadelerin derlemesini oluşturan ayrı bir uygulamadan çağrılır. Derlemeye dahil edilen her normal ifade aşağıdaki özelliklere sahiptir:
sınıfından Regex türetilir.
Buna, karşılık gelen RegexCompilationInfo nesnesinin ve
name
parametreleri tarafındanfullnamespace
tanımlanan tam ad atanır.Varsayılan (veya parametresiz) bir oluşturucuya sahiptir.
Normalde, derlenmiş normal ifadenin örneğini oluşturan ve kullanan kod, derlemeyi oluşturan koddan ayrı bir derlemede veya uygulamada bulunur.
yöntemi, belirli bir dilin CompileToAssembly sınıf tanımı anahtar sözcüğünü kullanmak yerine bir yöntem çağrısından .NET Framework derlemesi oluşturduğundan (C# veya Class
...End Class
Visual Basic gibiclass
), geliştirme dilinin standart öznitelik söz dizimini kullanarak .NET Framework özniteliklerinin derlemeye atanmasına izin vermez. parametresi, attributes
derlemeye uygulanan öznitelikleri tanımlamak için alternatif bir yöntem sağlar. Derlemeye uygulamak istediğiniz her öznitelik için aşağıdakileri yapın:
Çağırmak Type istediğiniz öznitelik oluşturucunun parametre türlerini temsil eden bir nesne dizisi oluşturun.
Yeni derlemeye uygulamak istediğiniz öznitelik sınıfını temsil eden bir Type nesne alın.
Çağırmak GetConstructor istediğiniz öznitelik oluşturucuyu temsil eden bir ConstructorInfo nesneyi almak için öznitelik Type nesnesinin yöntemini çağırın. GetConstructor yöntemini, oluşturucunun Type parametre türlerini temsil eden nesne dizisini geçirin.
Özniteliğin oluşturucusunun geçmesi için parametreleri tanımlayan bir Object dizi oluşturun.
-
- adımda alınan nesnenin oluşturucusunu ConstructorInfo ve 4. adımda oluşturulan diziyi geçirerek bir CustomAttributeBuilder nesnenin örneğini Object oluşturma.
Ardından yöntemine parametresi yerine attributes
bu CustomAttributeBuilder nesnelerin bir dizisini Regex.CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[]) geçirebilirsiniz.
Arayanlara Notlar
.NET Framework 4.5 veya nokta sürümleri yüklü bir sistemde geliştiriyorsanız, .NET Framework 4'ü hedeflersiniz ve derlenmiş normal ifadeler içeren bir derleme oluşturmak için yöntemini kullanırsınızCompileToAssembly(RegexCompilationInfo[], AssemblyName). .NET Framework 4 içeren bir sistemde bu derlemedeki normal ifadelerden birini kullanmaya çalışmak bir özel durum oluşturur. Bu sorunu geçici olarak çözmek için aşağıdakilerden birini yapabilirsiniz:
Derlenmiş normal ifadeleri içeren derlemeyi, sonraki sürümler yerine .NET Framework 4 yüklü bir sistemde oluşturun.
Derlemeden derlenmiş normal ifadeyi çağırmak CompileToAssembly(RegexCompilationInfo[], AssemblyName) ve almak yerine, bir Regex nesne örneği oluştururken veya normal ifade desen eşleştirme yöntemini çağırırken seçeneğiyle Compiled statik veya örnek Regex yöntemleri kullanın.
Ayrıca bkz.
Şunlara uygulanır
CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String)
Dikkat
Regex.CompileToAssembly is obsolete and not supported. Use the RegexGeneratorAttribute with the regular expression source generator instead.
Belirtilen özniteliklere sahip adlandırılmış bir derlemeye bir veya daha fazla belirtilen Regex nesne ve belirtilen kaynak dosyasını derler.
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)
Parametreler
- regexinfos
- RegexCompilationInfo[]
Derlenecek normal ifadeleri açıklayan bir dizi.
- assemblyname
- AssemblyName
Derlemenin dosya adı.
- attributes
- CustomAttributeBuilder[]
Derlemeye uygulanacak öznitelikleri tanımlayan bir dizi.
- resourceFile
- String
Derlemeye eklenecek Win32 kaynak dosyasının adı.
- Öznitelikler
Özel durumlar
Parametrenin Name özelliğinin assemblyname
değeri boş veya null dizedir.
-veya-
içindeki regexinfos
bir veya daha fazla nesnenin normal ifade deseni geçersiz söz dizimi içeriyor.
assemblyname
veya regexinfos
şeklindedir null
.
resourceFile
parametresi geçersiz bir Win32 kaynak dosyası belirtir.
parametresi tarafından resourceFile
belirlenen dosya bulunamıyor.
Yalnızca .NET Core ve .NET 5+ : Derlenmiş normal ifadelerin derlemesini oluşturma desteklenmez.
Açıklamalar
yöntemi, CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) dizide tanımlanan her normal ifadenin regexinfos
bir sınıf tarafından temsil edildiği bir .NET Framework derlemesi oluşturur. Genellikle, yöntemi derlenmiş CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) normal ifadelerin derlemesini oluşturan ayrı bir uygulamadan çağrılır. Derlemeye dahil edilen her normal ifade aşağıdaki özelliklere sahiptir:
sınıfından Regex türetilir.
Buna, karşılık gelen RegexCompilationInfo nesnesinin ve
name
parametreleri tarafındanfullnamespace
tanımlanan tam ad atanır.Varsayılan (veya parametresiz) bir oluşturucuya sahiptir.
Normalde, derlenmiş normal ifadenin örneğini oluşturan ve kullanan kod, derlemeyi oluşturan koddan ayrı bir derlemede veya uygulamada bulunur.
yöntemi, belirli bir dilin CompileToAssembly sınıf tanımı anahtar sözcüğünü kullanmak yerine bir yöntem çağrısından .NET Framework derlemesi oluşturduğundan (C# veya Class
...End Class
Visual Basic gibiclass
), geliştirme dilinin standart öznitelik söz dizimini kullanarak .NET Framework özniteliklerinin derlemeye atanmasına izin vermez. parametresi, attributes
derlemeye uygulanan öznitelikleri tanımlamak için alternatif bir yöntem sağlar. Derlemeye uygulamak istediğiniz her öznitelik için aşağıdakileri yapın:
Çağırmak Type istediğiniz öznitelik oluşturucunun parametre türlerini temsil eden bir nesne dizisi oluşturun.
Yeni derlemeye uygulamak istediğiniz öznitelik sınıfını temsil eden bir Type nesne alın.
Çağırmak GetConstructor istediğiniz öznitelik oluşturucuyu temsil eden bir ConstructorInfo nesneyi almak için öznitelik Type nesnesinin yöntemini çağırın. GetConstructor yöntemini oluşturucunun Type parametre türlerini temsil eden nesne dizisini geçirin
Özniteliğin oluşturucusunun geçmesi için parametreleri tanımlayan bir Object dizi oluşturun.
-
- adımda alınan nesnenin oluşturucusunu ConstructorInfo ve 4. adımda oluşturulan diziyi geçirerek bir CustomAttributeBuilder nesnenin örneğini Object oluşturma.
Ardından yöntemine parametresi yerine attributes
bu CustomAttributeBuilder nesnelerin bir dizisini CompileToAssembly(RegexCompilationInfo[], AssemblyName, CustomAttributeBuilder[], String) geçirebilirsiniz.
Arayanlara Notlar
.NET Framework 4.5 veya nokta sürümleri yüklü bir sistemde geliştiriyorsanız, .NET Framework 4'ü hedeflersiniz ve derlenmiş normal ifadeler içeren bir derleme oluşturmak için yöntemini kullanırsınızCompileToAssembly(RegexCompilationInfo[], AssemblyName). .NET Framework 4 içeren bir sistemde bu derlemedeki normal ifadelerden birini kullanmaya çalışmak bir özel durum oluşturur. Bu sorunu geçici olarak çözmek için aşağıdakilerden birini yapabilirsiniz:
Derlenmiş normal ifadeleri içeren derlemeyi, sonraki sürümler yerine .NET Framework 4 yüklü bir sistemde oluşturun.
Derlemeden derlenmiş normal ifadeyi çağırmak CompileToAssembly(RegexCompilationInfo[], AssemblyName) ve almak yerine, bir Regex nesne örneği oluştururken veya normal ifade desen eşleştirme yöntemini çağırırken seçeneğiyle Compiled statik veya örnek Regex yöntemleri kullanın.