Regex.CompileToAssembly Yöntem

Tanım

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.DuplicatedStringiki özdeş bitişik sözcükle eşleşir. İkincisi, Utilities.RegularExpressions.EmailAddressbir 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ından fullnamespace 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.DuplicatedStringiki özdeş bitişik sözcükle eşleşir. İkincisi, Utilities.RegularExpressions.EmailAddressbir 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ından fullnamespace 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:

  1. Çağırmak Type istediğiniz öznitelik oluşturucunun parametre türlerini temsil eden bir nesne dizisi oluşturun.

  2. Yeni derlemeye uygulamak istediğiniz öznitelik sınıfını temsil eden bir Type nesne alın.

  3. Ç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.

  4. Özniteliğin oluşturucusunun geçmesi için parametreleri tanımlayan bir Object dizi oluşturun.

    1. 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ından fullnamespace 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:

  1. Çağırmak Type istediğiniz öznitelik oluşturucunun parametre türlerini temsil eden bir nesne dizisi oluşturun.

  2. Yeni derlemeye uygulamak istediğiniz öznitelik sınıfını temsil eden bir Type nesne alın.

  3. Ç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

  4. Özniteliğin oluşturucusunun geçmesi için parametreleri tanımlayan bir Object dizi oluşturun.

    1. 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.

Ayrıca bkz.

Şunlara uygulanır