π’ Roslyn π’
Π£ΡΠΎΠ²Π΅Π½Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°: π #senior
ΠΠ° ΡΡΠΎΠΉ Π½Π΅Π΄Π΅Π»Π΅ Π²ΡΡ
ΠΎΠ΄ΠΈΠ» ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠΎΠ»ΠΈΠΊ πΊ ΠΏΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Roslyn Π² ΡΠ²ΡΠ·ΠΊΠ΅ Ρ Unity. ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΡΡ ΠΈ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° C#, ΡΠΆΠ΅ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Roslyn. Π Π² ΠΈΠ½ΡΠΎΠΏΠΎΠ»Π΅ Unity Roslyn ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π½Π΅ΡΠ°ΡΡΠΎ, ΡΠ°Π·Π²Π΅ ΡΡΠΎ Π² Π±Π΅ΡΠ΅Π΄Π°Ρ
ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊ ΡΡΠΎ ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° ΡΠ΅Π΄ΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅Π½Ρ ΠΏΡΠΎ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ.
Roslyn β ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ C# ΠΈ Visual Basic, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ API Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π°, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°.
ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½Π°ΡΡΡΠ΅Π½ΠΈΠΉ ΡΡΠΈΠ»Ρ ΠΈΠ»ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΊΠΎΠ΄Π΅. Π ΡΠ°ΠΊΠΆΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠΊΠΈΠΉ boilerplate, ΡΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ°ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π° ECS ΠΈΠ»ΠΈ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ DI (ΡΠΌ. Pure DI).
ΠΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ΅ ΡΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΊ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π°ΠΌ Π² CI/CD ΠΈ ΠΏΡΠΎΠ³ΠΎΠ½ΡΡΡ ΠΏΡΠΈ ΠΌΠ΅ΡΠΆΠ°Ρ ΠΈΠ»ΠΈ ΡΠ±ΠΎΡΠΊΠ°Ρ .
ΠΠΎΠΎΠ±ΡΠ΅, Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ cs-ΡΠ°ΠΉΠ», ΠΏΠ΅ΡΠ΅Π³Π½Π°ΡΡ Π² ΡΡΡΠΎΠΊΡ, ΡΠ΅ΡΠ΅Π· ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΡΠΊΠ°ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ.
ΠΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½ "Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅" ΠΈΠ· "ΡΡΡΠΎΠΊ ΠΈ ΠΏΠ°Π»ΠΎΠΊ" ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎπΊ
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠ°ΠΊ Roslyn, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΊΠ»Π°ΡΡΠ½ΠΎΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ Ρ DotNext πΊ
Roslyn ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ (Syntax Tree πͺ), Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ (ΠΊΠ»Π°ΡΡ, ΠΌΠ΅ΡΠΎΠ΄, Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ.Π΄.).
Π’Π°ΠΊΠΆΠ΅ Roslyn ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Semantic Model πͺ), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ.
Π Π²ΠΈΠ΄Π΅ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ Π² Unity. Π’.Π΅. ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΠ°ΠΏΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ "Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ" Π΄Π»Ρ Π΄Π²ΠΈΠΆΠΊΠ°. ΠΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ββββββββββββ
#unity #gamedev #development #roslyn #tool #compiler #analyse #Π³Π΅ΠΉΠΌΠ΄Π΅Π² #ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° #Π°Π½Π°Π»ΠΈΠ· #ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ #ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ #Π²ΠΈΠ΄Π΅ΠΎ