Runtime: рд╡рд╣рд╛рдБ .net рдорд╛рдирдХ 2.0 рдкрд░рд╛рд╡рд░реНрддрди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Emit?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 27 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  58рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dotnet/runtime

System.Reflection.Emit .Net Standard рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдкреИрдХреЗрдЬ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ .Net рд╕реНрдЯреИрдВрдбрд░реНрдб рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, System.Reflection.Emit рдФрд░ System.Reflection.Emit.Lightweight ) рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рдПрдХ .Net рдорд╛рдирдХ 2.0 рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ .Net рдорд╛рдирдХ 1.x рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВред

рдЗрд╕рдХреЗ рдХреБрдЫ рдирд┐рд╣рд┐рддрд╛рд░реНрде рд╣реИрдВ:

  • .Net рд╕реНрдЯреИрдВрдбрд░реНрдб 2.0 рд▓рд╛рдЗрдмреНрд░реЗрд░реА typeBuilder.CreateType() рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА (рднрд▓реЗ рд╣реА рдпрд╣ рдХреЛрдб .Net рдлреНрд░реЗрдорд╡рд░реНрдХ 4.6.1 рдФрд░ .Net Core 2.0 рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп typeBuilder.CreateTypeInfo().AsType() рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреНрдп рдПрдкреАрдЖрдИ рднреА рд╣реЛрдВред
  • .рдиреЗрдЯ рд╕реНрдЯреИрдВрдбрд░реНрдб 2.0 рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдЬреЛ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИрдВред рдЕрднреА рднреА .Net рд╕реНрдЯреИрдВрдбрд░реНрдб 1.x- рд╕реНрдЯрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред * рдкреИрдХреЗрдЬред

.Net Standard 2.0 рд╕рдВрд╕реНрдХрд░рдг Reflection.Emit рд╕рдВрдХреБрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣рд▓ рд╣реЛ рдЬрд╛рдПрдБрдЧреАред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реЛрдЧрд╛?

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреЗ рджреЛрдиреЛрдВ рд╣реА рдХрд╛рдлреА рдЫреЛрдЯреЗ рдХреНрд╡рд┐рдмрд▓реНрд╕ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдРрдб рдХрд┐рддрдирд╛ рд╡реИрд▓реНрдпреВ рдХрд░реЗрдЧрд╛ред

area-System.Reflection.Emit question

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдордиреЗ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ:

https://www.nuget.org/packages/System.Reflection.Emit/4.3.0
https://www.nuget.org/packages/System.Reflection.Emit.Lightweight/4.3.0

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпреЗ рдкреИрдХреЗрдЬ netstandard1.1 рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЭреВрда рд╣реИред рд╡реЗ рдХреЗрд╡рд▓ .NET рдХреЛрд░ рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрде рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдореНрдореАрдж рдХрд░реЗрдВ рдХрд┐ рдпрджрд┐ рд╡рд╣ рдХрд┐рд╕реА рдЕрдиреНрдп .NET рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред

рд╣рдо рдЕрднреА рднреА netstandard2.0 рдкрд░ рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди System.Relfection.Emit рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ ( @AtsushiKan @joshfree) рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

рд╕рднреА 58 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@ericstj @weshaggard рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рд╣реИ, рдпрд╛ рдПрдХ рдирд┐рд░реАрдХреНрд╖рдг?

рдпрд╣ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рджрд╛рдВрддреЗрджрд╛рд░ рд╕рдорд░реНрдерди рдФрд░ рдХреЛрдИ рдкреЛрд░реНрдЯреЗрдмрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рд╣рдордиреЗ рд╢рд┐рдкрд┐рдВрдЧ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ред рдЕрдкреЗрдХреНрд╖рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреБрдЫ рдХреЗ рд▓рд┐рдП рд╣рдо рднреВрдорд┐ рдЦрджрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдкреИрдХреЗрдЬ рд▓рд╛рдП рд╣реИрдВ (рдХреБрдЫ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлреЗрдВрдХ рд░рд╣реЗ рд╣реИрдВ)ред рдлреЛрд▓реНрдХреНрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝ рджреЗрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдиреЗ рд╕рднреА рдПрдУрдЯреА рдЖрдзрд╛рд░рд┐рдд рдиреЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рд╕рдорд░реНрдерди рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЕрддреАрдд рдореЗрдВ рдХреБрдЫ рдХрдареЛрд░ рдмрд╣рд╕ рдХреА рд╣реИред / cc @terrajobst

@ericstj

рдЕрдкреЗрдХреНрд╖рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдХреИрд╕реЗ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓рд╛ рд╣реВрдВ? рдЬрд╣рд╛рдБ рддрдХ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдБ, Reflection.Emit рдХреЛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдХрдореНрдкреНрд░реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЬрдм рдореИрдВ "рдкреНрд░рддрд┐рдмрд┐рдВрдм emit .net Standard" рдХреЛ рдЧреВрдЧрд▓ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдкрд░ рдПрдХрдорд╛рддреНрд░ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЬреБрд▓рд╛рдИ 2017 рд╕реЗ @terrajobst рдХрд╛ рдПрдХ рдЯреНрд╡реАрдЯ рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдирд╛

рдореИрдВ @terrajobst рдХреЛ рдЙрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

FWIW рдХреБрдЫ рднреА рдЬреЛ рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди netstandard рдореЗрдВ рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдПрдХ netstandard рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдореБрдЭреЗ рдЕрдкрдиреА рдЙрдореНрдореАрдж рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рд╣реИред

@ericstj

рдХреБрдЫ рднреА рдЬреЛ рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╣ рдиреЗрдЯрд╕реНрдЯреИрдВрдбрд░реНрдб рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдкреИрдХреЗрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреЗрдЯрд╕реНрдЯреИрдВрдбрд░реНрдб рдПрд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдЯрд╛рд░рдЧреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╕рдм рдореБрдЭреЗ рдЕрдкрдиреА рдЙрдореНрдореАрдж рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдкреИрдХреЗрдЬ (.Net рдорд╛рдирдХ 1.x рдЖрд╕реНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рдореМрдЬреВрдж рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рдкреИрдХреЗрдЬ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЛрдЧ рдЕрдм рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

System.Reflection.Emit рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдмрдбрд╝реА рдкрд░реЗрд╢рд╛рдиреА рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ TypeInfo (рджреЗрдЦреЗрдВ https://github.com/dotnet/corefx/issues/14334) рдХреА рд╡рдЬрд╣ рд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╢реБрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬ netstandard1.1 рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЭреВрда рд╣реИ рдФрд░ рдХреЗрд╡рд▓ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рддрдВрдЧ рдпреБрдЧреНрдорди рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ TypeInfo рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП InternalsVanishTo рдЯреНрд░рд┐рдХ рдЪрд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╣реИрдХ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╣реА рдЯреНрд░рд┐рдХ рд╣реИ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп .NET рдорд╛рдирдХ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдордиреЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ netstandard2.0 рдХреЛ рд╣реИрдХ рдХрд░рдХреЗ рдЖрдЧреЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреИрдХреЗрдЬ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдФрд░ рдордВрдЪ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрдирд╛ рджрд┐рдпрд╛ред

@Svick рдХреЗ рдореБрджреНрджреЗ рдХреЛ рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд╣рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рдиреА рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

NuGet рдкрд░ рдЕрдм рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдирд▓рд┐рд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╕реБрдЭрд╛рд╡ рд╣реИред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл https://www.nuget.org/packages/System.Reflection.Emit/ рдФрд░ https://www.nuget.org/packages/System.Reflection.Emit.Lightweight рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ

рдЗрд╕рдХреА рдмрд╣реБрдд рдЬрд░реВрд░рдд рд╣реИред рдЕрд╕реЗрдВрдмрд▓реА рдмрдирд╛рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ .NET рдбреЙрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдбреЙрдЯрдиреЗрдЯ / рдХреЛрд░рдлрд╝реИрдХреНрд╕ # 1 рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИ, рдФрд░ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╣реА рдореМрд▓рд┐рдХ рдПрдкреАрдЖрдИ рдХреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реИред ред

@masonwheeler рд╕рд┐рд░реНрдл рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк Reflection.E рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк .NET рдХреЛрд░ рдРрдк рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЖрдк рдЕрднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдмрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ .NET рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВред

@weshaggard рдЖрдк рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ? рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рд░реЗрдкреЛ рдХреА рдЬрд╛рдБрдЪ рдХреА, рдФрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рди рдХреЗрд╡рд▓ AssemblyBuilder.Save рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рдпрд╣ рдХреЛрд░ рдкрд░

@masonwheeler рдЖрдк рд╕рд╣реА рд╣реИрдВ рдХрд┐ рд╣рдо рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдиреЗрдЯ рдХреЛрд░ рдореЗрдВ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ https://github.com/dotnet/corefx/issues/4491 рджреНрд╡рд╛рд░рд╛ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

рд╡реЛ рд░рд╣рд╛! рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЦреЛрдЬ рдХреЗрд╡рд▓ рдЗрд╕ рдПрдХ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред : рдкреА

рд▓реЗрдХрд┐рди рд╣рд╛рдБред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛

@weshaggard рд╕реЗ рдкрд╣рд▓реЗ System.Reflection.Emit.Lightweight рдкреИрдХреЗрдЬ рдХреЛ nuget.org рдкрд░ рдЕрдирд▓рд┐рдорд┐рдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рдРрд╕рд╛ рд╕рдВрднрд╡ рдерд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ PowerShell 5 (for .Net рдлреНрд░реЗрдорд╡рд░реНрдХ) рдФрд░ PowerS Core 6 рдореЗрдВ (for .Net Core 2.0) рдХреЗ рд▓рд┐рдП Selenium.WebDriver рдкреИрдХреЗрдЬ рдорд┐рд▓рд╛ред рдирд┐рдореНрди рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП: рдЗрдВрд╕реНрдЯрд╛рд▓-рдкреИрдХреЗрдЬ рд╕реЗрд▓реЗрдирд┐рдпрдо.рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡-рдбрд╕реНрдЯрд┐рдиреЗрд╢рди $ PSScriptRoot -Force -ForceBootstrap

рдЕрдм рдпрд╣ рдХрдорд╛рдВрдб рджреЛрдиреЛрдВ PowerShell рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реЗрд▓реЗрдирд┐рдпрдо рдкреИрдХреЗрдЬ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ System.Reflection.Emit.Lightweight.4.3.0 рдкреИрдХреЗрдЬ nuget.org рдкрд░ рдЕрдирд▓рд┐рд╕реНрдЯреЗрдб рд╣реИред
рддреНрд░реБрдЯрд┐: рдЗрдВрд╕реНрдЯреЙрд▓-рдкреИрдХреЗрдЬ: рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ (рдПрд╕) рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде (System.Reflection.Emit.Lightweight)

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ?

@SergeyKhutornoy рдХреНрдпрд╛ рдЖрдк рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрдВрд╕реЛрд▓ рд╕реЗ VS рдореЗрдВ "рдЗрдВрд╕реНрдЯреЙрд▓-рдкреИрдХреЗрдЬ" рдХрд╣ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк Powershell рд╕реЗ Install-Package рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди рд╣реИред рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╕ рдХреЛрд╢рд┐рд╢ рдХреА рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдФрд░ рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗ (рдЗрдВрд╕реНрдЯреЙрд▓-рдкреИрдХреЗрдЬ: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЦреЛрдЬ рдорд╛рдкрджрдВрдб рдФрд░ рдкреИрдХреЗрдЬ рдирд╛рдо 'рд╕реЗрд▓реЗрдирд┐рдпрдо.рд╡реЗрдмрдбреНрд░рд┐рд╡рд░' рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореИрдЪ рдирд╣реАрдВ рдорд┐рд▓рд╛ред) рдореИрдВ рдЙрд╕ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╣реВрдВред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рдПред рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЖрдк рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рд╣реИ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ System.Reflection.Emit.Lightweight 4.3.0 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдФрд░ рдлрд┐рд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╡рд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЖрдк рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрдПрд╕ рдпрд╛ рдирдЧреЗрдЯ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдФрд░ .NET рдорд╛рдирдХ 2.0 рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реИред

рд╣рдо рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рдж, NServiceBus рдХреЗ рдПрдХ рдкреНрд░рдореБрдЦ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╢рд┐рдк рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ, рдФрд░ рд╣рдо netstandard2.0 рд▓рдХреНрд╖реНрдп рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ System.Reflection.Emit рдФрд░ System.Reflection.Emit.Lightweight рдкрд░ рднреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рдХреЛ рдЕрд▓рдЧ рд╕реЗ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрди рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рд░реВрдк рд╕реЗ @terrajobst рдХреЗ рд╕рд╛рде рдПрдХ рдЯреНрд╡рд┐рдЯрд░ рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдиреЗ рдореБрдЭреЗ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ netstandard2.0 рдмрдЬрд╛рдп рд▓рдХреНрд╖реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдбрд╛рдпрдиреИрдорд┐рдХ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рдЗрддрдирд╛ рдмрдЪрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ - рдореИрдВ рд╣рдореЗрд╢рд╛ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ TFM рдореЗрдВ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди DynamicMethod рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рдмрд╣реБрдд рд╣реА рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдереНрд░реЗрдбреНрд╕, рдХрдирд╡рд░реНрдЯрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдЖрджрд┐ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред ред System.Reflection.Emitред * рдкреИрдХреЗрдЬ рдореЗрдВ 20,000,000 рд╕реЗ рдЕрдзрд┐рдХ рдбрд╛рдЙрдирд▓реЛрдб рд╣реИрдВред

рдХреГрдкрдпрд╛ netstandard2.0 рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ DynamicMethod рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╡рд╛рдкрд╕ рд▓рд╛рдПрдВред

рд╣рдо .NET рдХреЛрд░ рдореЗрдВ рдЕрдм рдбрд╛рдпрдиреЗрдорд┐рдХрдореЗрдереЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдирд▓рд┐рд╕реНрдЯреЗрдб рд╣реИ?

@danielcrenna рдЖрдкрдХреЛ .net Core рдкрд░ DynamicMethod рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИред рдЖрдкрдХреЛ рдХреЗрд╡рд▓ .Net рдорд╛рдирдХ рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдореИрдВ рдЕрдкрдиреЗ рд░рдирдЯрд╛рдЗрдо (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рд░реА рд╣реИ) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рд╕рд┐рд╕реНрдЯрдо .eflection.Emit.Lightweight 4.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .netstandard 2.0ред рдЕрдм рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдСрдлрд╝рд▓рд╛рдЗрди рдХреИрд╢ рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЦреАрдВрдЪрддреА рд╣реИ рдФрд░ рдирдЧреЗрдЯ рд╕реЗ рдирд╣реАрдВред ~ рдпрджрд┐ рдСрдлрд╝рд▓рд╛рдЗрди рдХреИрд╢ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдлрд┐рд░ рд╕реЗ .NETstandard рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред ~ (рдХреИрд╢ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рд╕реЗ рдмрд┐рд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░ рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЦреАрдВрдЪрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреИрдХреЗрдЬ рдЕрднреА рднреА рд╣реИ, рдпрджреНрдпрдкрд┐ рдЕрд╕реВрдЪреАрдмрджреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╢реЛрд╕реНрдЯреЙрдкрд░ рдирд╣реАрдВ рд╣реИ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗред рдпрд╣ рд╢рдмреНрджрд╛рд░реНрде рд╣реИ рд╣рд╛рд▓рд╛рдВрдХрд┐)ред

рдпрд╣рд╛рдБ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ: https://apisof.net/catalog/System.Reflection.Emit.DynamicMethod рдореБрдЭреЗ рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИ? рдпрд╣ NS1.6 рдореЗрдВ рд╣реИ? рдпрд╛ рдХреБрдЫ рдРрд╕реЗ рдмреАрдЪ рдХреЗ рдЖрдпрд╛рдо рдореЗрдВ рдЬрд╣рд╛рдВ 'рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди' рд╡реИрдз рд╣реИрдВ?

рддреЛ iow: рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ .netstandard2.0 рдФрд░ рдбрд╛рдпрдиреЗрдорд┐рдХрдореИрдереЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ System.Reflection.Emit.Lightweight рдХрд╛ рд╕рдВрджрд░реНрдн рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрд╕реВрдЪреАрдмрджреНрдз рд╣реИ, рдФрд░ ns1.6 (?) рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ: рдпрд╣ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ? рдПрдХ рджрд╛рдпрд┐рддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рдЕрдм рдПрдХ рдкреИрдХреЗрдЬ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реВрдВ рдЬреЛ рдЕрдирд▓рд┐рд╕реНрдЯреЗрдб рд╣реИ (рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдирд▓рд┐рд╕реНрдЯреЗрдб рдкреИрдХреЗрдЬ рдХреЛ рд╕рдордп рдХреЗ рдЕрдВрдд рддрдХ рд╡рд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред) рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ: рдПрдХ рдЕрдирд▓рд┐рд╕реНрдЯреЗрдб рдкреИрдХреЗрдЬ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рдЯреАрдХ рдирд╛рдо рдЬрд╛рдирддрд╛ рд╣реИред

// @terrajobst

рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП: EF Core 2.1 рдХреА рдЕрдкрдиреА рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП Castle.Core (https://www.nuget.org/packages/Castle.Core/) рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЬреЛ System.Reflection.Emit рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕ рдкреИрдХреЗрдЬ (рдФрд░ рдПрдорд┐рдЯ.рд╡реЗрдЯрд╡реЗрдЯ) рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рд╕рдордЭрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдП?

@FransBouma рдИрдПрдл рдХреЛрд░

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ _FirebirdClient_ рдореЗрдВ _System.Reflection.Emit_ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред рдФрд░ рдЕрднреА рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рд╣реИ рдирд╛?

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реНрдг рдПрдУрдЯреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирдП рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╣рдо рдЗрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ System.Reflection.Emit.Lightweight рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
LambdaExpression.Compile() рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдПрдУрдЯреА рдкрд░ рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рд╣реЛред

рдореИрдВ рд▓рд╛рдЗрдЯрдЗрдиреНрдЬреЗрдХреНрдЯ рдбрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд▓реЗрдЦрдХ рд╣реВрдВ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Reflection.Emit рдФрд░ DynamicMethod рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рд╕рдм рддрдм рддрдХ рдЕрдЪреНрдЫрд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рдпреЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЙрднрд░рдиреЗ рдирд╣реАрдВ рд▓рдЧреЗред рд╕рд┐рд▓реНрд╡рд░рд▓рд╛рдЗрдЯ, WinRT, iOS рдФрд░ рдЗрддрдиреЗ рдкрд░ред рдЗрд╕рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рд╡рд╣ DynamicMethod "рд╢рд┐рдо" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ рддрд╛рдХрд┐ рдУрдкрдХреЛрдб рдХреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред Opcodes рдФрд░ рднрд╛рд╡реЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рддрд░рд╣ рдХрд╛ 1-1 рд╕рдВрдмрдВрдз рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
https://github.com/seesharper/LightInject/blob/a01be40607761d9b446dc4acad37d7f717742975/src/LightInject/LightInject.cs#L4483

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рд╕рднреА рдСрдкрдХреЛрдб рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рдХреЗрд╡рд▓ рд╡рд╣реА рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдПред

рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╕рднреА рдУрдкрдХреЛрдб рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдлрд┐рд░ рдП рд▓реЙрдЯ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрднреА рднреА netstv2.0 рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЬреЛ рдкрд░рд╛рд╡рд░реНрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдирдП рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдХреЗрд╡рд▓ рдбрд╛рдпрдиреЗрдорд┐рдХрдореЗрдереЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбрд╛рдпрдиреЗрдорд┐рдХрдкреНрд░реЙрдХреНрд╕реА, Moq рдФрд░ рд░рдирд╡реЗ рдкрд░ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА netstandard2.0 рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреА рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ netcoreapp рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде AssemblyBuilder рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ
рдЗрддрдирд╛ рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛ рдпрд╣ рд╣реИ рдХрд┐ System.Reflection.Emit.Lightweight рдкреИрдХреЗрдЬ рдХреЛ рдХрднреА рднреА NuGet рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ netstandard2.0 рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдлрд┐рд░ рд╕реЗ рд╡рд╛рдордкрдВрдереА рдХрд╣рд╛рдиреА рд╣реЛрдЧреА

рдореЗрд░реЗ рджреЛ рд╕реЗрдВрдЯ

рд╡рд╣рд╛рдБ рд╣реИ рдХрд┐ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ TFMs рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╣реАрдВ рд╣реИ System.Reflection.Emit ? рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ net45 рдФрд░ netcoreapp2.0 рд╕реНрдкрд╖реНрдЯ TFMs рдЬреЛрдбрд╝реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИред

@jbogard рд╕рднреА рдкреВрд░реНрдг рд░реВрдкрд░реЗрдЦрд╛ TFM рдХреЛ netcoreapp TFM's рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдпрд╣ AutoMapper рдореЗрдВ рд╣реИ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рд╕реЛрдЪрд╛ рдЧрдпрд╛ рдФрд░ рджреВрд░рдЧрд╛рдореА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░рд┐рдд рдирд┐рд░реНрдгрдп рдЬреЛ рдЙрд╕ рд╕рдореБрджрд╛рдп рд╕реЗ рдмрд╣реБрдд рдХрдо рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ 22M рдбрд╛рдЙрдирд▓реЛрдб рд╣реИрдВред рдХреНрдпрд╛ рдпрд╣ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рднреА рдкрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡ рдкрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

ServiceStack рдХрд╛ рд╕рдВрджрд░реНрдн рдЕрдм рдбрд┐рд▓реАрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред ServiceStack.Text рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдмреЗрд╕ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдкреИрдХреЗрдЬ рд╣реИ рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╣рд░ ServiceStack NuGet рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрдИ рдЕрдиреНрдп NuGet рдкреИрдХреЗрдЬреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдХреЗрд╡рд▓ netstandard2.0 рдФрд░ net45 рдмрдирд╛рддреЗ рд╣реИрдВ, рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ .netcore рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣рд░ рдПрдХрд▓ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ netstandard2.0 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ - рдпрд╛рдиреА рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╕рдВрджреАрджрд╛ рд▓рдХреНрд╖реНрдп рдврд╛рдВрдЪрд╛ред .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рджреЛрдиреЛрдВ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИред

рддреЛ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдм рдХреНрдпрд╛ рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реИред .NET рдорд╛рдирдХ 2.0 рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рд╕рднреА рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рд╡реЗ рдЕрдм рдЕрдкрдиреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП .NET рдорд╛рдирдХ 2.0 рдмрд┐рд▓реНрдб рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

.NET рдорд╛рдирдХ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдЫрд▓рд╛ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдПрдкреАрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ PlatformNotSupportedException рд░рдирдЯрд╛рдЗрдо рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрдирд╛ рдерд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣рд╛рдБ рд╕рдорд╛рдзрд╛рди рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

@ рд╢реЗрдпрд╢рд░ рд╣рд╛рдБ, рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рд▓реЗрдХрд┐рди рд╡рд╣ рджреВрд╕рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдбреЙрдХреНрд╕ рдХреА рд╕реВрдЪреА рдЕрдзрд┐рдХ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЕрдиреНрдп рдЬреЛ рд▓рд╛рдкрддрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдПрдкреАрдЖрдИ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЯреАрдПрдлрдПрдо рдХреА рдПрдХ рд╡реНрдпрд╛рдкрдХ рд╕реВрдЪреА рд╣реИ? рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВ, xamarinxboxone ?

рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдбрд╛рдпрдиреЗрдорд┐рдХрдореЗрдереЛрдб / ILGenerator рдХреЛрдб рд╡рд╛рдкрд╕ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВ рд▓реЗрдореНрдмрдбрд╛.рдХрдореНрдкрд╛рдЗрд▓ () рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЕрдм рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛ рдЧрдИ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкрд░ 3-4 рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдкрдбрд╝рддреЗ рдереЗред рдЬреЛ рдореБрдЭреЗ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдкрд░ рдЦрд░реНрдЪ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдлрд╕реЛрд╕, рдпрд╣ рдЬреАрд╡рди рд╣реИ рдЬрдм рдЪреАрдЬреЗрдВ рддреЗрдЬреА рд╕реЗ рдЪрд▓рддреА рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рдЯреВрдЯ рдЬрд╛рддреА рд╣реИрдВ 'рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ?

рд╡реИрд╕реЗ рднреА, рдЬреЛ рдореБрдЭреЗ рдереЛрдбрд╝рд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдкрд┐рдЫрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рд╕реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдХрд░реНрдорд┐рдпреЛрдВ рдХрд╛ рдмрд╣рд░рд╛рдкрди рд╣реИред рдПрдХ рдХрдорд░реЗ рдореЗрдВ рдЪреАрдЬреЛрдВ рдкрд░ рдмрд╣рд╕ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рд▓реЛрдЧ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ @mythz рдФрд░ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рдордд рд╣реВрдБ, рдпрд╣ рдЦрд░рд╛рдм рд╕рдВрдЪрд╛рд░рд┐рдд рд╣реИ, рдФрд░ 22M рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд╕рд╛рде рдпрд╣ рджреВрд░рдЧрд╛рдореА рдкрд░рд┐рдгрд╛рдо рд╡рд╛рд▓рд╛ рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдирд┐рд░реНрдгрдп рдерд╛ред

@mythz рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рд╕рд╛рдорд╛рди рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЙрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП #if рдлрд╝реАрдЪрд░ рдлрд╝реНрд▓реИрдЧ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рдкрдбрд╝рд╛ рдЬреЛ рдордХреНрдЦреА рдкрд░ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ (рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ, рдЬрд╛ рд░рд╣рд╛ рд╣реИ) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдФрд░ рдореИрдВ рдордХреНрдЦреА рдкрд░ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ)ред

@jbogard рд╣рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Env.SupportsEmit рдмреВрд▓рд┐рдпрди рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо Reflection.Emit рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рд╡рд╣ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдкрд░ рд▓реМрдЯ рдЖрддреЗ рд╣реИрдВред рдЙрд╕ рдиреЛрдЯ рдкрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдпрджрд┐ Platform.SupportsEmit рдЭрдВрдбрд╛ рдерд╛ рдЬреЛ рдХрд┐ рд╕рднреА рд▓реЛрдЧ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рдереЗ рдХрд┐ рдХреНрдпрд╛ рд░рдирд┐рдВрдЧ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо Reflection.Emit рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

#if рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рд╕рднреА рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмреНрд░реЗрдХрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдВрдЧреЗ рдЬреЛ .netstandard2.0 рд▓рдХреНрд╖реНрдп рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рднреА .netstandard2.0 рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдмрд╕ рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЬрдм рд╣рдо System.Reflection.Emit рдФрд░ System.Reflection.Emit.Lightweight рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЖрдП рддреЛ рд╣рдо рд╕рднреА рдПрдХ рд╣реА рдкреГрд╖реНрда рдкрд░ рд╣реЛрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрджреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред ЁЯШД

  • рд╡рд╣рд╛рдБ .net рдорд╛рдирдХ 2.0 рдкрд░рд╛рд╡рд░реНрддрди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Emit?
  • .Net рдорд╛рдирдХ 2.0 рд╕рдВрд╕реНрдХрд░рдг System.Reflection.Emit.LightWeight рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

System.Reflection.Emit

рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ AssemblyBuilder рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА / рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ NuGet рдкрд░ рдХрднреА рднреА netstandard рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирдП рдкреНрд░рдХрд╛рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рд╕реЗ рдкреВрд░реНрдг AOT рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ Microsoft рдиреЗ рдЗрд╕реЗ netstandard рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдкреВрд░реНрдг рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ .net Core рдФрд░ netstandard рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред
"рдЪрд╛рд░рд╛ рдФрд░ рд╕реНрд╡рд┐рдЪ" рджреГрд╖реНрдЯрд┐рдХреЛрдг (рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдореЗрдВ 5 рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╛ рддреЛ рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

System.Reflection.Emit.LightWeight

рдЗрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдбрд╛рдпрдиреЗрдорд┐рдХрдореЗрдереЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдирдП рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред "рдбрд╛рдпрдиреЗрдорд┐рдХ рд╡рд┐рдзрд┐" рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
LambdaExpression.Compile рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЯрд┐рдВрдЧ рд╣реИ рдФрд░ рдпрджрд┐ рд╣рдо рдкреВрд░реНрдг рдврд╛рдВрдЪреЗ рдкрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╡рд░ рдХреЗ рддрд╣рдд DynamicMethod рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдУрдЯреА рдкрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ LambdaExpression.Compile() рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд░реНрдгрд┐рдд рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ System.Reflection.Emit.LightWeight рдкреИрдХреЗрдЬ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ netstandard ред

рдореЗрд░рд╛ рдЕрдиреБрдорд╛рди рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░ рдЕрдм рдкреАрдЫреЗ рдЖрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдорд╛рдирдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЛрдИ рдЕрд░реНрде рджреЗрддрд╛ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХреЛ рд▓рдХреНрд╖рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрдХреБрд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ netcoreapp рдХреЗ рдмрдЬрд╛рдп netstandard рдФрд░ рд╣реИ рдХрд┐ рдПрдХ рдХреА рдкреВрд░реА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреБрд░рд╛ рд╣реИ рдЬрдм рдпрд╣ рдмрд╛рдд рдЖрддреА рд╣реИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ netstandard ред

рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ System.Reflection.Emit.LightWeight рдПрдХ рд╕рдЪреНрдЪреЗ рд░реВрдк рдореЗрдВ netstandard рдкреИрдХреЗрдЬ рдФрд░ рдХреЗ рд▓рд┐рдП рдкреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП netcoreapp рдЬрдм рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ System.Reflection.Emit ред

@seesharper рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, Reflection.Emit (Reflection.Emit.Lightweight рд╕рд╣рд┐рдд) рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ Reflection.Emit.Lightweight рдХреЛ IL рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реЛрдЧрд╛ред рддреЛ рдореИрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ IL рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВред рдХреГрдкрдпрд╛ред рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рднреА рдЕрдЬреАрдм рд╣реИ рдХрд┐ System.Reflection.Emit.ILGenerator рдЕрднреА рднреА рд╕реВрдЪреАрдмрджреНрдз рд╣реИ (https://www.nuget.org/packages/System.Reflection.Emit.ILGeneration), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ netstandard1.6 рдкреИрдХреЗрдЬ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ ILGenerator рдХрд╛ рдХреЛрдИ UWP рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ (https://apisof.net/catalog/System.Reflection.Emit.ILGenerator)ред

Iow: рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рдХрд╛ рдПрдХ рд╕рд╛, innit?

@ рд╢реБрднреЗрдЪреНрдЫреБ рдЕрдЪреНрдЫрд╛ рд╕реБрдЭрд╛рд╡ред

@ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрд╛рдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдФрдЪрд┐рддреНрдп рдирд╣реАрдВ рд╣реИред рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреЛрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓рд╛рд░реНрдЬрд┐рд╢ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ (рдЧреНрд░реАрдиреНрд╕рдкреБрди рдХреЗ рджрд╕рд╡реЗрдВ рдирд┐рдпрдо ) рдореЗрдВ рдбреАрдПрд╕рдПрд▓ рдЕрдХреНрд╕рд░ рдкрд░реНрдпрд╛рдкреНрдд рдлрд╕рд▓ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦрдХ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдФрд░ рд▓реЗрдЦрди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ (рдирд┐рдпрдорд┐рдд рдкреНрд░рддрд┐рдмрд┐рдВрдм рдФрд░ Invoke рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдпрджрд┐ рдпрд╣ рдПрдХ рдорд╛рдирдХ рдШрдЯрдХ рд╣реИ, рддреЛ рдирд┐рдпрдо рдХреЗ рдХрдо рд╕реЗ рдХрдо "рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдФрд░ рдмрдЧ-рд╕рд╡рд╛рд░" рднрд╛рдЧреЛрдВ рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдУрдЯреА-рд▓рдХреНрд╖реНрдпреАрдХрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдЖрдИрдПрд▓ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рднреА рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдПрдХ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдереНрд░реЗрдбреЗрдб рдХреЛрдб рдХреА рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХрдИ FORTH рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЫреЛрдЯреЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ "рдореЗрдердб рдмреЙрдбреА" рдХреИрд╢ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреА рд╣реИ, рд░рдирдЯрд╛рдЗрдо рдУрд╡рд░рд╣реЗрдб рдХрд╛рдлреА рдХрдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрднреА рднреА рдиреЗрдЯрдЧреЗрдЯ рдкрд░ рдирд╣реАрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдиреЗрдЯрд╕реНрдЯреИрдбрд┐рд╡ рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рдж рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкреВрд░реНрдг рдПрдУрдЯреА рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╣рдордд рдирд╣реАрдВ рд╣реИрдВред рдкреНрд░рдореБрдЦ .NET рдХреЛрд░ рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ AOT рд╡рд╛рддрд╛рд╡рд░рдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ netstandard2.0 рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдореБрдЦ .NET рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдЕрдм .NET рд╕реНрдЯреИрдВрдбрд░реНрдб рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдмрди рдЧрдИ рд╣реИ? рдПрдУрдЯреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдПрдкреАрдЖрдИ рдЕрдм рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рддреЛ рд╡рд╣рд╛рдБ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ PlatformNotSupportedException рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдПрдкреАрдЖрдИ рдПрдХ PCL рд╕рдмрд╕реЗрдЯ рдХреА рдУрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп yanked рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рдпрд╛ рд╣рдо рдЕрд╕рдВрдЧрдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЛ рдХрдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдореЗрдВ рдлреЗрдВрдХрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ?

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

рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдореМрдЬреВрджрд╛ рдПрдХ (esp рдерд╛ред рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдм рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рдХрд░реНрдордХ рдбрд┐рдкреЛ рдореЗрдВ рдПрдХ рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рдФрд░ рдЯреВрдЯрдиреЗ рд╡рд╛рд▓рд╛ рдмрджрд▓рд╛рд╡ рд╣реИ) рдЬреЛ рд╣рдореЗрдВ рдЙрди рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ Reflection.Emit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд╛рдкрд╕реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред ред .NET рдорд╛рдирдХ рдореЗрдВ Reflection.Emit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдм .NET рдорд╛рдирдХ рдХреЛ рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрджрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рдПрдЧреНрдиреЙрд╕реНрдЯрд┐рдХ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдореЗрдВ .NET рдХреЛрд░ рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рднреА рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ? рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рд░ / рднреНрд░рдо / рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╣реЛрдЧрд╛ред .NET рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рд▓рд╛рдн рдХреЗред

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рджред рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдордиреЗ рдореМрдЬреВрджрд╛ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рднрд░реЛрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ:

https://www.nuget.org/packages/System.Reflection.Emit/4.3.0
https://www.nuget.org/packages/System.Reflection.Emit.Lightweight/4.3.0

рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдпреЗ рдкреИрдХреЗрдЬ netstandard1.1 рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЭреВрда рд╣реИред рд╡реЗ рдХреЗрд╡рд▓ .NET рдХреЛрд░ рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрде рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдореНрдореАрдж рдХрд░реЗрдВ рдХрд┐ рдпрджрд┐ рд╡рд╣ рдХрд┐рд╕реА рдЕрдиреНрдп .NET рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред

рд╣рдо рдЕрднреА рднреА netstandard2.0 рдкрд░ рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди System.Relfection.Emit рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ ( @AtsushiKan @joshfree) рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

@svick

рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, Reflection.Emit (Reflection.Emit.Lightweight рд╕рд╣рд┐рдд) рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ Reflection.Emit.Lightweight рдХреЛ IL рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реЛрдЧрд╛ред рддреЛ рдореИрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ IL рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВред рдХреГрдкрдпрд╛ред рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдпрд╣ рдореЗрд░реА рд╕рдордЭ рд╣реИ рдХрд┐ LambaExpression.Compile() рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдПрдУрдЯреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ System.Reflection.Emit.LightWeight рд▓рд┐рдП рдЦрд░рд╛рдм рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдФрд░ рдПрдХ "рд╕рдЪ" netstandard2.0 рдкреИрдХреЗрдЬ рд╣реЛрдиреЗ рд╕реЗ рдЕрдЪрд╛рдирдХ рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрди рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЖрдкрдХреЗ рдЖрдИрдлреЛрди рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рд╕реЗ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреАрдЪрд╛ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ LambdaExpression.Compile() рд╕рд╛рде рдЖрдЬ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛

@mythz

рдХреНрдпрд╛ рдпрд╣ рдЕрдм .NET рд╕реНрдЯреИрдВрдбрд░реНрдб рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдмрди рдЧрдИ рд╣реИ? рдПрдУрдЯреА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдПрдкреАрдЖрдИ рдЕрдм рд╣рдЯрд╛рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ? рддреЛ рд╡рд╣рд╛рдБ рдХреЛрдИ рдФрд░ рдЕрдзрд┐рдХ PlatformNotSupportedException рдЕрдкрд╡рд╛рдж рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдПрдкреАрдЖрдИ рд╡рд╛рдкрд╕ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдмрдЬрд╛рдп рдПрдХ PCL рд╕рдмрд╕реЗрдЯ рдХреА рдУрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ? рдпрд╛ рд╣рдо рдЕрд╕рдВрдЧрдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЪреБрдирд┐рдВрджрд╛ рд░реВрдк рд╕реЗ рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рд╕рддрд╣ рдХреЛ рдХрдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рджреВрд╕рд░реЛрдВ рдореЗрдВ рдлреЗрдВрдХрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ?

IMHO, PlatformNotSupportedException рдХреЛ рдлреЗрдВрдХрдирд╛ рдХреЗрд╡рд▓ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХреА рдПрдХ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ PCL рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдорд▓рд╛ System.Reflection.Emit.LightWeight , рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ PlatformNotSupportedException рдлреЗрдВрдХрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИ рдХрд┐ рдХрдо рд╕рдХреНрд╖рдо рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдорд╛рдирдХ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдорд╛рдирдХ рд╣реЛрдиреЗ рдХреА рдкреНрд░рдХреГрддрд┐ рдХреА рддрд░рд╣ рд╣реИред рдЬрдм рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрдзрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдорд╛рдирдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕рдВрднрд╡ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдкреНрд░рдореБрдЦ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдФрд░ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЬрд╝рд╛рдорд░реАрди рдЙрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рдпрд╣ рдЖрдВрдХрдбрд╝рд╛ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдЬ рд╣реИ, рдпрд╣ рдПрдХ рдЭреВрда рдХреА рддрд░рд╣ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВред Xamarin netstandard рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд░реНрдерди рдЕрдкрд╡рд╛рджреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реБрдЖ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдЪрд┐рдд рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдиреМрд╕рд┐рдЦрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

image

@weshaggard

System.Reflection.Emit рдХреЛ netstandard рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдлрд┐рд░ рд╕реЗ рдорд╛рдирдХ "рдЧрд▓рдд" рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдиреЗрдЯ / рдиреЗрдЯрдХреЛрд░реИрдк рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдирд┐рдЧрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдбрд╝рд╡реА рдЧреЛрд▓реА рд╣реИ, рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ 'LightInject.Interception' рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдореБрджреНрджрд╛ рд╣реИ рдЬреЛ System.Reflection.Emit рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдкрднреЛрдХреНрддрд╛ рдХреЛ рдЭреВрда рдмреЛрд▓рдХрд░ netcoreapp рд▓рдХреНрд╖рд┐рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣рд░ рдЬрдЧрд╣ рдЪрд▓ рд╕рдХрддреА рд╣реИред

@seesharper

IMHO, PlatformNotSupportedException рдХреЛ рдлреЗрдВрдХрдирд╛ рдкреАрд╕реАрдПрд▓ рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рджреЗрдЦрд╛ рдПрдкреАрдЖрдИ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдХрд╛ рдПрдХ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдорд▓рд╛ System.Reflection.Emit.LightWeight рдХреЗ рд╕рд╛рде рд╣реИ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ PlatformNotSupportedException рдХреЛ рдлреЗрдВрдХрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИред

рд╡реЗ рдмрд┐рд▓реНрдХреБрд▓ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИрдВред .NET рдорд╛рдирдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рдЗрд╕рдХреА рдмрд╣реБрдд рдЕрдзрд┐рдХ рдПрдкреАрдЖрдИ рд╕рддрд╣ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рдмрд┐рд▓реНрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдкреАрд╕реАрдПрд▓ рдмрд╣реБрдд рдХрдо рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдХрдо рдПрдкреАрдЖрдИ рдЪреМрд░рд╛рд╣реЗ рдХреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдиреЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рдордВрдЪ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рд▓реНрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рд╣реИред рдЙрдирдХреА рдХреНрд╖рдорддрд╛ рд╕рдорддреБрд▓реНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡реЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХреЛрдВ рдФрд░ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред .NET рд╕реНрдЯреИрдВрдбрд░реНрдб рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдПрдХ рд╣реА рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ рдпрджрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ Reflection.Emit, рдЕрдЧрд░ рдпрд╣ рд▓реИрдореНрдмрдбрд╛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдВрд╕ рдФрд░ рд░рд┐рдлреНрд▓реЗрдХреНрд╢рди рдХреА рддрд░рдл рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рдпреЗ API .NET рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рднреА рдмрд┐рд▓реНрдб рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЧреИрд░-рдкреЛрд░реНрдЯреЗрдмрд▓ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рд▓реНрдб рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

System.Reflection.Emit рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдиреЗрдЯрд╕реНрдЯреИрдб рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ рд▓рдВрдмреЗ рд╕рдордп рдореЗрдВ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдлрд┐рд░ рд╕реЗ рдорд╛рдирдХ "рдЧрд▓рдд" рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдиреЗрдЯ / рдиреЗрдЯрдХреЛрд░реИрдк рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рд▓реНрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдордЬрдмреВрд░ рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, espред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдмрд╣реБрдд рд╕реЗ рд╕рдХрд░реНрдордХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рдеред .NET рдорд╛рдирдХ рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рд╛рдн рдПрдХрд▓ рдЙрдкрдпреЛрдЧреА рдЕрдореВрд░реНрдд рдХреЛ рд▓рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ .NET рдХреЛрд░ рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдЙрдкрдпреЛрдЧ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ -рдХреЗрд╕ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреАрд╕реАрдПрд▓ рдкрд░ рдХрд┐рд╕реА рднреА рд▓рд╛рдн рдХреЗ рдмрд┐рдирд╛ .NET рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рд░ / рднреНрд░рдо рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред

рдкреАрд╕реАрдПрд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдореВрд░реНрдд рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдПрдкреАрдЖрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдкреНрд░рддрд┐рдЪреНрдЫреЗрджрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЖрдк рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджреНрд╡рд╛рд░рд╛ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╕рдмрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред

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

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

@weshaggard

рд╣рдо рдЕрднреА рднреА netstandard2.0 рдкрд░ рдЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди System.Relfection.Emit рдХреЗ рдорд╛рд▓рд┐рдХреЛрдВ ( @AtsushiKan @joshfree) рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реЛрдЧрд╛ред

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

@mythz рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рдХрд╣ рд░рд╣реЗ рд╣реИрдВред

@masonwheeler

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд░реЗрдл рдПрдорд┐рдЯ рдкреИрдХреЗрдЬ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрд┐рд░рд╛рд╡рдЯ рдХрд╛ рдХрд╛рд░рдг рд╣реИред рдореИрдВ рдпрд╣ рднреА рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдкрд░реЗрд╢рд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЗрд╕рдореЗрдВ рдРрд╕реЗ рдЯреНрд░реЗрдб-рдСрдл рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЙрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВред

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ "рдЕрдкрдорд╛рдирдЬрдирдХ" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд░рдЪрдирд╛рддреНрдордХ рдирд╣реАрдВ рд╣реИред рдЕрдкрдорд╛рдирдЬрдирдХ рд▓реЛрдЧ рдЗрди рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдПрдХ рдиреАрддрд┐ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдереНрдп рдХрд┐ рдЖрдк iOS рдкрд░ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ Apple рдХрд╛ рдиреАрддрд┐рдЧрдд рдирд┐рд░реНрдгрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдПрдХ рдиреАрддрд┐ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддрдХрдиреАрдХреА рдПрдХ рд╣реИред

рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЙрддреНрд╕рд░реНрдЬрди рдХреЗ рд╕рд╛рде рддреАрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  1. рд╡рд░реНрддрдорд╛рди рдкреИрдХреЗрдЬ рдХреЛ рдареАрдХ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ .NET рдорд╛рдирдХ 2.0 рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХрд╛рдо рдХрд░реЗрдВ ред рдореБрджреНрджрд╛ 2.0 рдХреЗ рдореБрдХрд╛рдмрд▓реЗ .NET рдорд╛рдирдХ 1.x рдореЗрдВ Type рдФрд░ TypeInfo рдХреЗ рдмреАрдЪ рдПрдХ рдЕрдЬреАрдм рд╡рд┐рд░рд╛рд╕рдд рд╕рдВрдмрдВрдз рд╣реИ рдФрд░ рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИрдВред рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИрдХ рдХреЛ рдмрд╣рд╛рд▓ рдХрд┐рдП рдмрд┐рдирд╛ рдкреИрдХреЗрдЬ рдХреЛ рдмрдирд╛рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреИрдХреЗрдЬ рдЫрд┐рдкрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

  2. .NET рдорд╛рдирдХ vNext рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдЙрддреНрд╕рд░реНрдЬрди рдЬреЛрдбрд╝реЗрдВ ред рдПрдУрдЯреА-рдХреЗрд╡рд▓ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдПрдХ рдХреНрд╖рдорддрд╛ рдПрдкреАрдЖрдИ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдб рдкреАрдврд╝реА рд╕рдорд░реНрдерд┐рдд рд╣реИ рдпрд╛ рдХреБрд╢рд▓ рд╣реИ (рдЕрд░реНрдерд╛рдд рд╣рдо рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред

  3. .NET рдорд╛рдирдХ рдкрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░рдирд╛ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдмрд╣реБ-рд▓рдХреНрд╖реНрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдореВрд▓ рдкрде рдерд╛ рдЬрдм рд╣рдордиреЗ рдкреИрдХреЗрдЬ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред

рдЕрднреА, рд╣рдо рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХреА рдУрд░ рдЭреБрдХ рд░рд╣реЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рднреА рдЯреЗрдмрд▓ рдкрд░ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдпрд╣ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрдВ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред рдпрд╣ рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдореЗрдВ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рдХреЛ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ .NET рдорд╛рдирдХ 2.0 рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХреЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рд╢реНрди рдореЗрдВ рдПрдкреАрдЖрдИ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдлрд┐рдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди .NET рдорд╛рдирдХ 2.0 vNext рдХреЛ рднреА рдареАрдХ рдХрд░рдирд╛ рд╣реИред

@terrajobst рдХреНрдпрд╛ рд╡рд┐рдХрд▓реНрдк 1 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рд╡рд┐рдХрд▓реНрдк 2 рдХреЛ рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ? рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ netstandard1.1 рдкреИрдХреЗрдЬ рдЧреНрд░рд╛рдл рдореЗрдВ рдЦреАрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдЬрд╛рдп netstandard2.0 рд▓рдХреНрд╖реНрдп рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реЛрдЧрд╛ред рдлрд┐рд░ рдорд╛рдирдХ рдХреЗ vNext рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдм рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЗрд╕рд▓рд┐рдП, рдЬрдм рддрдХ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ, рдореИрдВ 1 рдФрд░ 2 рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реВрдВред

@bording

рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЙрд╕реА рд╕рдордп рд╡рд╕реНрддреБрддрдГ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддреА рд╣реИ :-)

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ netstandard2.0 System.Reflection.Assembly.Load(byte[] rawAssembly) рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдЗрдирд░реА рдЗрдореЗрдЬ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рд╕реЗ рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╢реБрджреНрдз netstandard2.0 рдХреЗ рддрд╣рдд рд╕рднреА System.Reflection.Emit API рдХреЗ рдХреЙрдореНрдкрд┐рдЯрд┐рдмрд▓реНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

(рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ PNSE рдХреЗ рдмрд┐рдирд╛ рдХрд┐рддрдиреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо Assembly.Load рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ)

@GlassGrass рдЖрдкрдХреЛ рдХреНрдпрд╛ netstandard2.0 рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛?

рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдИрдПрд▓ рдХреЛ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдПрдкреАрдЖрдИ-рдЪрд╛рд▓рд┐рдд рдЖрдИрдПрд▓рдПрдПрд╕рдПрдо рдХреА рддрд░рд╣ рдПрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рд░реВрдкрд░реЗрдЦрд╛рдПрдВ рдирд╣реАрдВ рджрд┐рдЦрддреА рд╣реИрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЬреЗрдЖрдИрдЯреА (рдФрд░ рд╕рдкреЛрд░реНрдЯ рдЕрд╕реЗрдВрдмрд▓реА.рд▓реЙрдб) рд╡рд╛рд▓реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рднреА Ref.Emit рдХреЛ рд╕реАрдзреЗ рд╕рдорд░реНрдерди рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ netstandard2.0 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдирд╛ Ref.Emit рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдбреЗрд╕реНрдХрдЯреЙрдк / .netcore / .netnative рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред рдкрд╣рд▓реЗ рджреЛ рд╕рдорд░реНрдерди ref.emit рдФрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рди рд╣реА рдЗрд╕рдореЗрдВ JIT рд╣реЛрддрд╛ рд╣реИ рдФрд░ рди рд╣реА рдбрд╛рдпрдирд╛рдорд┐рдХ рдЕрд╕реЗрдВрдмрд▓реА рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП Corefxlab рдореЗрдВ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдЧреА, рдЬреЛ System.Reflection.Metadata рд╢реАрд░реНрд╖ рдкрд░ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ Ref.Emit (рдпрд╛ рдмреЗрд╣рддрд░) рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рдХреЛрдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреЗрдЦ рд░рд╣рд╛ рд╣реИред / cc @nguerrera @tmat

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП Corefxlab рдореЗрдВ рдЪрд╛рд░реЛрдВ рдУрд░ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдЧреАред System.Reflection.Metadata рдЬреЛ Ref.Emit (рдпрд╛ рдмреЗрд╣рддрд░) рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реА рдкреНрд▓реЗрдЯ рдкрд░ рд╣реИ: (https://github.com/dotnet/corefx/issues/4491 рдФрд░ https://github.com/dotnet/corefx/issues/2800)

https://github.com/dotnet/corefx/issues/2800 рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ Ref emit рд╕рд╛рдорд╛рди рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ 2800 рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдЖрдЧреЗ рдХреЗ рдорд╣реАрдиреЛрдВ рдореЗрдВ рднреА рдпрд╣ рдХрд╛рдо рдЬрд╛рд░реА рд░рд╣реЗрдЧрд╛ред рдЬрдм рддрдХ рдореИрдВ рдмрд╣реБрдд рдЖрдЧреЗ рдирд╣реАрдВ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рдХреЛрд░рдлреНрд▓реЗрдХреНрд╕ рдкрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдКрдВрдЧрд╛ред рдореЗрд░реЗ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдмрд╣реБрдд рдЕрдХреНрд╖рдо рд╣реИред

@AtsushiKan : рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрднреА рднреА рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣реАрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ: рдПрдХ рдЪреАрдЬ рдЬреЛ System.Reflection.Metadata рдФрд░ Assembly.Load(byte[]) рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИ рд╡рд╣ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░-рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рд╣реИред рдЖрдк рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рджреВрд╕рд░рд╛ ... рдЖрдк рдХреЗрд╡рд▓ рдХрднреА-рдХрднреА рдкреВрд░реНрдг рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рд▓рд╛рдЗрдХ рдореЙрдХрд┐рдВрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреАрдврд╝реА рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ рдХреЛрдИ рднреА рдХрднреА рднреА рдПрдХрд▓-рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм [assembly: InternalsVisibleTo] рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛рддреЗ рд╕рдордп рдпрд╣ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдФрд░ рдХрдард┐рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдХрд┐рд╕реА рдЕрдиреНрдп рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЕрдХреНрд╕рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ / рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рдЖрдкрдХреЛ рдХрдИ рдЧрддрд┐рд╢реАрд▓ рдПрдХрд▓-рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рдЗрд╕ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкрд╣рдЪрд╛рди / рдордЬрдмреВрдд рдирд╛рдо рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред (рд░рдирдЯрд╛рдЗрдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рдкрд╛ рд╕рдХрддрд╛ рд╣реВрдВред)

@stakx рдЖрдк IVT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдЧреИрд░-рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ System.Runtime.CompilerServices.IgnoresAccessChecksToAttribute рдХрд╛ рдЙрддреНрд╕рд░реНрдЬрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@tmat : рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХрд╣реАрдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ?

рдЕрдлрд╝рд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬреБрдЖ рдмрдирд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЗрд╕реЗ .NET core 3.0 рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛?

cc @steveharter @joshfree

@karelz https://github.com/dotnet/corefx/issues/30654 3.0 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИ

@joshfree рдпрд╣ рдПрдХ

@karelz рдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ Ref.Emit рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдирдЧреЗрдЯ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд┐рд░ рдкреИрдХреЗрдЬ рдХреЛ @weshaggard рджреНрд╡рд╛рд░рд╛ рдлрд┐рд░ рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдм рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╢реЗрд╖ рдХрд╛рдо рдХреЛ рдбреЙрдЯрдиреЗрдЯ / рдХреЛрд░рдлреИрдХреНрд╕ # 30654 рдХреЗ рд╕рд╛рде рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдлрд┐рд░ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реИ :) ... рд╢реЗрд╖ рдХрд╛рд░реНрдп рдКрдкрд░ рдмрддрд╛рдП рдЕрдиреБрд╕рд╛рд░ рдбреЙрдЯрдиреЗрдЯ / рдХреЛрд░рдлреИрдХреНрд╕ # 30654 рдореЗрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jchannon picture jchannon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

omajid picture omajid  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

noahfalk picture noahfalk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sahithreddyk picture sahithreddyk  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jamesqo picture jamesqo  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ