.NET Core рдХреЛ рдереНрд░реЗрдб .bort () рдкрд░ рд▓реМрдЯреЗрдВред CoreCLR рдФрд░ CoreFX рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рд╡рд┐рддрд░рдг

.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ .NET рдХреЛрд░ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдХреБрдЫ рдЕрдкреНрд░рд┐рдп рдХреНрд╖рдг рдЖ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рддрд░реНрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред Thread.Abort () рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐: Microsoft рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдмрд╣реБрдд рдирд╛рдкрд╕рдВрдж рд╣реИ (рдФрд░ рдареАрдХ рд╣реА рдЗрд╕рд▓рд┐рдП) рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдкрджрд╛рд╡рдирдд рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗ рдХрд╛рдЯ рджрд┐рдпрд╛ рдФрд░ рдЕрдм рдпрд╣ рдПрдХ PlatformNotSupportedException рдХреЛ рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓рд╛ рд╡рд┐рд╢реНрд╡рд╛рд╕рдШрд╛рддреА рд╣реИред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдереНрд░реЗрдб.рдПрдмреЛрд░реНрдЯ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ .NET рдХреЛрд░ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЦреИрд░, рд╣рдо рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдордВрдЪ рднреА рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЛ рдЦреБрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ: рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рд╕реАрдПрд▓рдЖрд░ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрд╕реНрд╡реАрдХрд░рдг: рдпрд╣ рдПрдХ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓реЗрдЦ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдиреНрдпреВрдирддрдо рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ, рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдбреЗрд╡рд▓рдкрд░ рдФрд░ .NET рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдирдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдРрд╕рд╛ рдХрднреА рди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ...



рдпрд╣ рджреЛ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо .NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХреА рдЗрдЪреНрдЫрд╛ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд╛рд░реНрдпред рдЖрдЗрдП рдЗрд╕рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддреЗ рд╣реИрдВред

рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдиреНрдпреВрдирддрдо:

  • рдбреЙрдЯрдиреЗрдЯ рдкреНрд░рдХрд╛рд╢рди рд╣рдореЗрдВ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдЗрд╕рдХреЗ рд╕рд╛рде рд░реВрдкрд░реЗрдЦрд╛ рд╡рд┐рддрд░рд┐рдд рдХреА рдЬрд╛рдПрдЧреА, рдФрд░ рдЬреАрдПрд╕реА рдореЗрдВ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЦреЛрдЬрд╛ рдЬрд╛рдПрдЧрд╛
  • CoreCLR рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬрд┐рд╕ рдкрд░ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдЪрд▓реЗрдЧрд╛, runtimeconfig.json рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ CoreFX рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: github.com/dotnet/corefx
  • рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ CoreCLR : github.com/dotnet/coreclr рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

CoreFX рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ


рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдкрд░ рд▓реМрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ - Thread.Abort ( ) рд▓реМрдЯреЗрдВ - рдЪрд▓реЛ рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CoreFX рдореЗрдВ рдХреБрдЫ рдореМрд▓рд┐рдХ рдмрджрд▓рд╛рд╡ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд╛рдпрдирд╛рдорд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рдорджреНрджреЗрдирдЬрд░, рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ:

  • CMake
  • рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди
  • рдирд╡реАрдирддрдо .NET рдХреЛрд░ рдПрд╕рдбреАрдХреЗ (.NET рдХреЛрд░ 3.0 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 - рд╡рд░реНрдХрд▓реЛрдб


.NET рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд┐рдХрд╛рд╕

  • рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ
  • .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.7.2 рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг

C ++ рдХреЗ рд╕рд╛рде рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд┐рдХрд╛рд╕

  • рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ
  • VC ++ 2019 v142 рдЯреВрд▓рд╕реЗрдЯ (x86, x64)
  • рд╡рд┐рдВрдбреЛрдЬ 8.1 рдПрд╕рдбреАрдХреЗ рдФрд░ рдпреВрд╕реАрдЖрд░рдЯреА рдПрд╕рдбреАрдХреЗ
  • VC ++ 2017 v141 рдЯреВрд▓рд╕реЗрдЯ (x86, x64)

.NET рдХреЛрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╡рд┐рдХрд╛рд╕

  • рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 - рд╡реНрдпрдХреНрддрд┐рдЧрдд рдШрдЯрдХ


  • рд╕реА # рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рдмреЗрд╕рд┐рдХ рд░реЛрдЬрд▓рд┐рди рдХрдВрдкрд╛рдЗрд▓рд░
  • рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдг
  • .NET рдкреЛрд░реНрдЯреЗрдмрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЯрд╛рд░рдЧреЗрдЯрд┐рдВрдЧ рдкреИрдХ
  • рд╡рд┐рдВрдбреЛрдЬ 10 рдПрд╕рдбреАрдХреЗ рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ 8.1 рдПрд╕рдбреАрдХреЗ
  • рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реА ++ рдХреЛрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
  • VC ++ 2019 v142 рдЯреВрд▓рд╕реЗрдЯ (x86, x64)
  • VC ++ 2017 v141 рдЯреВрд▓рд╕реЗрдЯ (x86, x64)
  • MSBuild
  • .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 4.7.2 рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдкреИрдХ
  • рд╡рд┐рдВрдбреЛрдЬ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ CRT SDK

рдХреНрд▓реЛрди рдХреЛрд░рдлреИрдХреНрд╕ :

git clone https://github.com/dotnet/corefx.git 

рдЕрдм рдЧрддрд┐рд╢реАрд▓ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдЦреБрд▓реЗ рд░рд╣реЗрдВрдЧреЗ (рдЗрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЬрдбрд╝ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рджрд┐рдЦрд╛рдКрдВрдЧрд╛)

 corefx\src\System.Linq.Expressions\src\System\Runtime\CompilerServices\CallSite.cs 

рдФрд░ CallSite <T> .Create рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ , рд╕рд╛рджрд╛ рдХреЛрдб рдбрд╛рд▓реЗрдВ:

 throw new PlatformNotSupportedException("No way"); 

рд╣рдо Corefx рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ build.cmd рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ ред рдЕрд╕реЗрдВрдмрд▓реА рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде Visual Studio рдореЗрдВ рдПрдХ рдирдпрд╛ .NET рдХреЛрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ:

 public int Test { get; set; } public static void Main(string[] args) { try { dynamic a = new Program(); a.Test = 120; } catch (Exception e) { Console.WriteLine(e); } //,    foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { Console.WriteLine(asm.Location); } } 

рд╣рдо рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рдЬрд╛рдирд╛ рд╣реИ

 corefx\artifacts\packages\Debug\NonShipping 

рдФрд░ рд╣рдореЗрдВ рд╡рд╣рд╛рдБ рдПрдХ рдкреИрдХреЗрдЬ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ: Microsoft.PStreet.CoreFx.NETCoreAppред 5.0.0-dev.19465.1 .nupkg ред рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ .csproj рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдбрд╛рд▓рддреЗ рд╣реИрдВ:

 <PropertyGroup> <PackageConflictPreferredPackages>Microsoft.Private.CoreFx.NETCoreApp;runtime.$(RuntimeIdentifiers).Microsoft.Private.CoreFx.NETCoreApp;$(PackageConflictPreferredPackages)</PackageConflictPreferredPackages> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Private.CoreFx.NETCoreApp" Version="5.0.0-dev.19465.1" /> </ItemGroup> 

рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЗрдХрдЯреНрдареЗ рдкреИрдХреЗрдЬ рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, 5.0.0-dev.19465.1 ред



рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдирдЧреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рджреЛ рдирдП рд░рд╛рд╕реНрддреЗ рдЬреЛрдбрд╝реЗрдВ:

 corefx\artifacts\packages\Debug\NonShipping corefx\artifacts\packages\Debug\Shipping 

рдФрд░ рдЕрдиреНрдп рд╕рднреА рдХреЛ рдЕрдирдЪреЗрдХ рдХрд░реЗрдВред



рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

 dotnet publish --runtime win-x64 --self-contained 

рд╣реЛ рдЧрдпрд╛! рдпрд╣ рдХреЗрд╡рд▓ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ:



рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЬреАрдПрд╕реА рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЧрддрд┐рд╢реАрд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

CoreCLR рдХреЛ рдлрд┐рд░ рд╕реЗ рдорд╣рд╛рди рдмрдирд╛рдПрдВ


рдЕрдм рдереНрд░реЗрдб рдкрд░ рд▓реМрдЯрддреЗ рд╣реБрдП рджреВрд╕рд░реЗ рднрд╛рдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдПрдХ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рд╣рдореЗрдВ рдпрд╣рд╛рдБ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ: рдереНрд░реЗрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди CoreCLR рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ, рдЬреЛ CoreFX рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдорд╢реАрди рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:

 var runtimeInformation = RuntimeInformation.FrameworkDescription; Console.WriteLine(runtimeInformation); var thr = new Thread(() => { try { while (true) { Console.WriteLine("."); Thread.Sleep(500); } } catch (ThreadAbortException) { Console.WriteLine("Thread aborted!"); } }); foreach (var asm in AppDomain.CurrentDomain.GetAssemblies()) { Console.WriteLine(asm.Location); } thr.Start(); Thread.Sleep(2000); thr.Abort(); 

рд╢рд╡ рдХреЛ рдЦрдВрдбрд┐рдд рдХрд░реЗрдВ ред рдлрд╝рд╛рдЗрд▓ рдвреВрдБрдвреЗрдВ

 coreclr\src\System.Private.CoreLib\shared\System\Threading\Thread.cs 

рдФрд░ Abort () рдХреЛ рдмрджрд▓реЗрдВ

 [SecuritySafeCritical] [SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)] public void Abort() { AbortInternal(); } [System.Security.SecurityCritical] // auto-generated [ResourceExposure(ResourceScope.None)] [MethodImplAttribute(MethodImplOptions.InternalCall)] private extern void AbortInternal(); 

рдЕрдм рд╣рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдФрд░ c ++ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рд╡рд┐рднрд┐рдиреНрди рдЦреБрд▓реА рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рд╕реЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдпрд╛ред

рдиреЛрдЯ: рдЬрдм рдирд┐рд░реНрдорд╛рдг, "рдирдИ" рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рдЬреЛ рдореИрдВ
рдкреНрд▓рдЧ рдХреЗ рд╕рд╛рде "рдлрд┐рдХреНрд╕реНрдб"ред рдЕрдЧрд░ рдЖрдк рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдШрд░реЗрд▓реВ рдкреНрд░рдпреЛрдЧ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд╣реАрдВ рднреА рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдВред

рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреЛрдб рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, coreclr рд╕реЗ build.cmd рдЪрд▓рд╛рдПрдВ ред рдмрд╛рдж рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЫрд┐рдбрд╝рдХрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ CoreCLR рдЗрдХрдЯреНрдард╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЭреВрда рд╣реЛрдЧрд╛:

 coreclr\bin\Product\Windows_NT.x64.Debug 

рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ


рд╣рдо рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ

 dotnet publish --runtime win-x64 --self-contained 

Windows_NT.x64.Debug рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВ ред

рдХрдард┐рди рд░рд╛рд╕реНрддрд╛


рдПрдХ рдмрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░ рдЬрд╛рдПрдВ

 C:\Program Files\dotnet\shared\Microsoft.NETCore.App 

рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ 3.0.0 рдХреНрд▓реЛрдиред рд╣рдо рдЗрд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 5.0.1 рдХрд╣реЗрдВрдЧреЗред рд╣рдо рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ Windows_NT.x64.Debug рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЕрдм CoreCLR рдХрд╛ рд╣рдорд╛рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг runtimeconfig рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред

рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╕рд╛рде рд░рдЦрд╛ред .Csproj рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 <PropertyGroup> <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences> <PackageConflictPreferredPackages>Microsoft.Private.CoreFx.NETCoreApp;runtime.$(RuntimeIdentifiers).Microsoft.Private.CoreFx.NETCoreApp;$(PackageConflictPreferredPackages)</PackageConflictPreferredPackages> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Private.CoreFx.NETCoreApp" Version="5.0.0-dev.19465.1" /> </ItemGroup> 

рд╣рдо рд▓реЗрдЦ рдХреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рд╕реЗ рдирдЧреЗрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ ред рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд

 dotnet publish --runtime win-x64 --self-contained 

Runtimeconfig.json рдореЗрдВ, рдирд┐рдореНрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рджрд░реНрдЬ рдХрд░реЗрдВ:

 { "runtimeOptions": { "tfm": "netcoreapp3.0", "framework": { "name": "Microsoft.NETCore.App", "version": "5.0.1" } } } 

рдкрд░рд┐рдгрд╛рдо


рднрд╛рдЧреЛ!



рдЬрд╛рджреВ рд╣реБрдЖред рдЕрдм рд╣рдорд╛рд░реЗ .NET рдХреЛрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ Thread.Abort () рдлрд┐рд░ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ред

Source: https://habr.com/ru/post/hi467475/


All Articles