рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХрд╛ рд╕рдорд░реНрдерди


рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд╕рдорд░реНрдерди рдиреЗ рдХрдИ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛: рдкреНрд▓рдЧрдЗрди рд╣реА, рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ, C ++ рдФрд░ C # analyzers рдХреА рдХреЛрд░, рдФрд░ рдХреБрдЫ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдИрдбреАрдИ рдХреЗ рд╕рдорд░реНрдерди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ред

рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдЖрдк рдХрд╛рд░реНрдп рдФрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реА рджреГрд╖реНрдЯрд┐ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭ рд╕рдХреЗрдВ рдЬреЛ рд╣рдо рд╣рд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖрдП рдереЗред

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

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдЬрд╛рд░реА рд╣реЛрдиреЗ рдкрд░ рдЪреАрдЬреЗрдВ рдмрджрд▓ рдЧрдИрдВред IDE рдХреЗ рдХрдИ API рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рднрд╛рд░реА рдмрджрд▓рд╛рд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рд╣реА рдЬреЛрдбрд╝реЗ рдЧрдП рдирдП C # рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдкрд┐рдЫрдбрд╝реА рдЕрдиреБрдХреВрд▓рддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ рднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рд╕рд╛рде рд╣реА рд╕рд╛рде MSBuild рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C ++ рдХреЗ рд▓рд┐рдП рдирдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░рдд рдХреЗ рд╕рд╛рде MSBuild \ Visual Studio рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгред

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

рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП, рдФрд░ рд╣рдо рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рдереЗ рдХрд┐ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ \ MSBuild рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬрд╝реА рд╕реЗ рдорджрдж рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЖрд╢рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд╛рдмрд┐рдд рд╣реЛрдиреЗ рд▓рдЧреА рдереА рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рдХрдИ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП рдереЗред рдХреНрдпрд╛ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХреА? рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдкрдврд╝реЗрдВред

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди


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

рд▓рд╛рдЗрдЯрд╡реЗрдЯ рд╕реЙрд▓реНрдпреВрд╢рди рд▓реЛрдб рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ IVsSolutionWorkspaceService рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдХрд░рдирд╛ рдерд╛ (рдЬреЛ, рд╡реИрд╕реЗ, рдкрд╣рд▓реЗ рдХреЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЕрдХреНрд╖рдо рд╣реЛ рдЧрдпрд╛ рдерд╛, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдореЗрдВ рд╡рд╛рдкрд╕)ред рдЗрд╕реЗ рдбреЗрдкреНрд░рд┐рдХреЗрдЯреЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рдерд╛ рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдмрдирдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рдореЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рдЪрд▓рд╛ рдерд╛ ... рдпрд╣ рддрдп рдХрд░рдирд╛ рдЖрд╕рд╛рди рдерд╛ - рд╣рдордиреЗ рдмрд╕ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред

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

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд▓реЙрдиреНрдЪ (рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓) рдХреЗ рд▓реЙрдЧ рдиреЗ рдЗрд╕реЗ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА:

рдЪреЗрддрд╛рд╡рдиреА: рдПрдХреНрд╕рдЯреЗрдВрд╢рди 'рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ' рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА 'рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдЯреЛ-рд▓реЛрдб' рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдм рднрд╡рд┐рд╖реНрдп рдХреЗ Visual Studio 2019 рдЕрджреНрдпрддрди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрдкрдбреЗрдЯ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред

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

Microsoft рджреНрд╡рд╛рд░рд╛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд▓рдЧ-рдЗрди рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ Microsoft рджреНрд╡рд╛рд░рд╛ рдПрдХ рд▓реЗрдЦ рд╣реИ: " рдХреИрд╕реЗ рдХрд░реЗрдВ: рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ VSPackages рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AsyncPackage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ "ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдЗрд╕рдореЗрдВ рдФрд░ рдмрджрд▓рд╛рд╡ рдЖрдиреЗ рдереЗред

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

рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ AsyncPackage рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рд╣реЛ рд░рд╣реЗ рдкреНрд▓рдЧ рдЗрди рдХреЛ рд╕реАрд▓ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЖрд░рдВрднрд┐рдХ рддрд░реАрдХреЗ рд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдкрджреНрдзрддрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ InitializeAsync , рдЬреЛ рдХрд┐ рд╣рдордиреЗ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИред 'рдЬрд╝реЛрдВрдмреА' рдЪреЗрдХ рд▓реЙрдЬрд┐рдХ рдХреЛ рднреА рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреЗрдЯрд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЕрдм рд╣рдорд╛рд░реЗ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдЕрднреА рднреА рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдирд╛ рдерд╛ рдЬреЛ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд╛рдж рдХрд┐рдП рдЬрд╛рдиреЗ рдереЗред рд╣рдордиреЗ IVsPackageLoadEvents рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ OnPackageLoaded рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐ рдЙрди рд╡рд┐рд▓рдВрдмрд┐рдд рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд▓реЛрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рддрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ рдЬрдм рддрдХ рдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд▓реЛрдб рди рд╣реЛред рдлрд╛рдЗрд▓ рдореИрдиреЗрдЬрд░ рдореЗрдВ рдбрдмрд▓ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рд▓реЙрдЧ рдЦреЛрд▓рдирд╛ (рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдЗрд╕реЗ рдЦреЛрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ) рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓реЙрдЧ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде devenv.exe рдХрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓реЙрдиреНрдЪ рдХрдорд╛рдВрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреА:

"C:\Program Files (x86)\Microsoft Visual Studio\ 2017\Community\Common7\IDE\devenv.exe" /command "PVSStudio.OpenAnalysisReport C:\Users\vasiliev\source\repos\ConsoleApp\ConsoleApp.plog" 

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

рдХрд╛рд╣реЗ, рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╣рдордиреЗ рдЗрд╕реЗ рдЖрдЦрд┐рд░реА рдореЗрдВ рдмрдирд╛рдпрд╛ рдерд╛; рдкреНрд▓рдЧрдЗрди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓реЛрдб рдФрд░ рдЦреБрд▓рддрд╛ рд╣реИред

рдФрд░ рдпрд╣рд╛рдВ рдЬрдм рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдкреЙрд▓ (рд╣рд╛рдп рдкреЙрд▓!) рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрдЫрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрднреА рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣ рдХрд╣рдирд╛ рдХрд┐ рд╣рдо рд╣реИрд░рд╛рди рдереЗ рдПрдХ рдЦрд╝рд╛рдореЛрд╢реА рд╣реЛрдЧреАред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛! рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ: рдпрд╣рд╛рдВ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрджреЗрд╢ рдпрд╣ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ (рд╣рд╛рдп рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░!) рдФрд░ рдореИрдВ рдЕрдкрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ - рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ? рдлрд┐рд░ рдпрд╣ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ - рдФрд░ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдирдП рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдПред

рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП VSIXInstaller рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреИрдХреЗрдЬ рдХреИрд╢ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рдерд╛ред рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЗрд╕ рддрдереНрдп рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП VSIXInstaller рдХреЗ рдХрд╛рд░рдг рдХреИрд╢реНрдб рдкреИрдХреЗрдЬ (C: \ ProgramData \ Microsoft \ VisualStudio \ Package) рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрддреНрд╕реБрдХрддрд╛ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рдЬрдм рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реБрдИ, рддреЛ рдХреИрд╢реНрдб рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреАред

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

рддреЛ, рдпрд╣ рд╡рд╣реА рд╣реБрдЖ рдЬреЛ: рдкреНрд▓рдЧрдЗрди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрд╢ рдерд╛ (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП .vsix рдкреИрдХреЗрдЬ рдерд╛) рдФрд░ рдирдП рдХреЗ рдмрдЬрд╛рдп рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ .vsixmanifest рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ / рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдХреНрдпреЛрдВ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ (рдЬреЛ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреА рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╕реНрдерд╛рдкрдирд╛) рдЕрднреА рддрдХ рдПрдХ рдкреНрд░рд╢реНрди рд╣реИред рдирддреАрдЬрддрди, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ - .vsixmanifif рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрджред

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

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдирд╣реАрдВ рднрд╛рдЧреЗ, рд╣рдордиреЗ рдирдП рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ GUID рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ ( рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬ рдареАрдХ рдереЗ; рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рдЭрд╛ GUID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛)ред

рдЬрдм рд╕реЗ рд╣рдордиреЗ рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рд╣реИ: рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 2 рдореЗрдВ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдиреВ "рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕" рдЯреИрдм рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдиреЗ рдкреНрд▓рдЧрдЗрди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рджреГрд╢реНрдп рд░рд┐рд▓реАрдЬрд╝ рд╕рд╣рд┐рдд рдЕрдЧрд▓реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛ рд░рд╣рд╛ред рдореБрдЭреЗ рдЗрд╕ "рд╕реБрд╡рд┐рдзрд╛" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рди рддреЛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╣реИ рдФрд░ рди рд╣реА рдмреНрд▓реЙрдЧ рдореЗрдВред

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

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

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

рд╕реА # 8.0 рдХрд╛ рд╕рдорд░реНрдерди


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

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

рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рд╢рд╛рдпрдж C # 8 рдХреА рд╕рдмрд╕реЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЪрд░реНрдЪрд┐рдд рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдореИрдВ рдЕрдм рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╡рд┐рд╖рдп рдЬреЛ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ (рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдлрд╝реНрд▓реЛ рддрдВрддреНрд░ рдореЗрдВ рдЕрд╢рдХреНрдд рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдкрд░ рдмрд╕ рдЧрдП рд╣реИрдВ (рдЕрд░реНрдерд╛рдд, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ, рдкрд╛рд░реНрд╕ рдФрд░ рд╕реНрдХрд┐рдк рдХрд░реЗрдВ)ред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЧреИрд░-рдЕрд╢рд╛рдВрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХрд╛, рдЕрднреА рднреА рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ (рдпрд╛ рджреБрд░реНрдШрдЯрдирд╛рд╡рд╢) рдореВрд▓реНрдп рд╢реВрдиреНрдп рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдПрдирдЖрд░рдИ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рд╛рдВрддрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреЗ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ рдРрд╕рд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдкрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рднрд▓реЗ рд╣реА рдЪрд░ рдЧреИрд░-рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдХрд╛ рд╣реЛред

рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрдХреЛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред рд╣рдордиреЗ рдЗрд╕реЗ "рднрд╛рд╡рдирд╛рддреНрдордХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕" рдирд╛рдо рджрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╕реНрдирд┐рдкреЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реИ:

 obj.Calculate(); obj?.Calculate(); obj.Calculate(); obj!?.Calculate(); obj!!!.Calculate(); 

рд╡реИрд╕реЗ, рдореЗрд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдиреЗ рдореБрдЭреЗ рдХреБрдЫ рдРрд╕реЗ рдЯреНрд░рд┐рдХреНрд╕ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ "рдХреНрд░реИрд╢" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдХрд┐рддрдиреЗ 'рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ!' рдХрд┐рд░рджрд╛рд░ рдЖрдкрдХреЛ рдкрд╕рдВрдж рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рди рдХреЗрд╡рд▓ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 object temp = null! 

рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЗрд╕ рддрд░рд╣:

 object temp = null!!!; 

рдФрд░, рдЗрд╕реЗ рдФрд░ рднреА рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реБрдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рдЧрд▓ рдмрд╛рддреЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 object temp = null!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!; 

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

рд╡рд┐рдлрд▓рддрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЗрд╡реЗрдВрдЯ рд╡реНрдпреВрдЕрд░ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 Faulting application name: devenv.exe, version: 16.0.28803.352, time stamp: 0x5cc37012 Faulting module name: WindowsBase.ni.dll, version: 4.8.3745.0, time stamp: 0x5c5bab63 Exception code: 0xc00000fd Fault offset: 0x000c9af4 Faulting process id: 0x3274 Faulting application start time: 0x01d5095e7259362e Faulting application path: C:\Program Files (x86)\ Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe Faulting module path: C:\WINDOWS\assembly\NativeImages_v4.0.30319_32\ WindowsBase\4480dfedf0d7b4329838f4bbf953027d\WindowsBase.ni.dll Report Id: 66d41eb2-c658-486d-b417-02961d9c3e4f Faulting package full name: Faulting package-relative application ID: 

рдпрджрд┐ рдЖрдк рднреА рдкрд╛рдЧрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрдордпрд╛рджрд┐рдмреЛрдзрдХ рдмрд┐рдВрджреБ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рдорджрдж рдХреЗ рдмрд┐рдирд╛, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреБрдж рд╣реА рд╕рднреА рдХреЛ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рдХрд░рдиреЗ рд▓рдЧреЗрдЧрд╛ред Microsoft.CodeAnalysis рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдФрд░ csc.exe рдХрдВрдкрд╛рдЗрд▓рд░ рдРрд╕реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпреЗ рдЙрджрд╛рд╣рд░рдг, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрд╕ рдЪрд╛рд▓ рдХреЛ рдордЬрд╛рдХрд┐рдпрд╛ рдкрд╛рдпрд╛ред

рдЯреВрд▓рд╕реЗрдЯ


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдРрд╕рд╛ рд╣реА рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╕рдорд░реНрдерди рд╕рдмрд╕реЗ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдерд╛ред рдПрдХ рдмрд╛рдд рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ MSBuild рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЯреВрд▓рд╕реЗрдЯ рдФрд░ рдПрдХ рддрдВрддреНрд░ рдерд╛, рдЬреЛ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрднреА рддрдХ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдирд╛ рдмрд╛рдХреА рдерд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЦрд░реЛрдВрдЪ рд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛ рдпрд╣ рдЖрд╕рд╛рди рд░рд╛рд╕реНрддрд╛ рдмрдирд╛ рджрд┐рдпрд╛ред "рд╣рдорд╛рд░реЗ" рдЯреВрд▓рд╕реЗрдЯ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдХреА рд░рдгрдиреАрддрд┐, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╕рдордп рдЫрдбрд╝реА рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд┐рдпрд╛, рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕рд╣реА рд╕рд╛рдмрд┐рдд рд╣реБрдЖред

рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ NuGet рд╕рдВрдХреБрд▓ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП NuGet рд╕рдВрдХреБрд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЯреИрдм рдореЗрдВ "рдЕрдкрдбреЗрдЯ" рдмрдЯрди рд╣реИ ... рд▓реЗрдХрд┐рди рдпрд╣ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдФрд░ рдЙрди рд╕рднреА рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдерд╛ред рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рджрд░реНрджрдирд╛рдХ рдЕрднреА рддрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ Microsoft рдХреЗ рд▓рдХреНрд╖реНрдп рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред рд╣рд▓реНрдХрд╛ / Microsoft.CodeAnalysisред

рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдВрддрд░ рдХреЛ рддреБрд░рдВрдд рджреЗрдЦрд╛ рдЧрдпрд╛: рдореМрдЬреВрджрд╛ рдиреЛрдб рдкрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓ рдЧрдИред рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ; рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдЬрд▓реНрджреА рд╕реЗред

рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ, рд╣рдо рдУрдкрди-рд╕реЛрд░реНрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рд╣рдорд╛рд░реЗ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ (рд╕реА #, рд╕реА ++, рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪреЗрдВ рдпрд╛ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЪреВрдХ рдЧрдП рд╣реИрдВ (рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)ред рдпреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдЗрдмреНрд░реЗрд░реА / рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдг рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдЧрдорди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдмрд╛рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рдореБрджреНрджреЛрдВ рдХреЛ рднреА рдкрдХрдбрд╝рд╛ред

рдПрдХ рдпрд╣ рдерд╛ рдХрд┐ рдХреЛрдбрдЕрдирд▓рд┐рд╕рд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЕрдВрджрд░ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЦрд░рд╛рдм рд╣реЛ рдЧрдпрд╛ рдерд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп, рд╣рдордиреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реВрдЪрдирд╛рдУрдВ рдЬреИрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдб рд╕реЗ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдЬреИрд╕реЗ рдХрд┐ рдЕрд░реНрде рд╕рдВрдмрдВрдзреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдЦреЛрд▓рдирд╛ рдЗрддреНрдпрд╛рджрд┐ред

рдЖрдк рдореЗрдВ рд╕реЗ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝рд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╡рд┐рддрд░рдг рдбрдореА рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ - 0 рдмрд╛рдЗрдЯреНрд╕ рдХреА MSBuild.exe рдлрд╝рд╛рдЗрд▓ред

рдЕрдм рд╣рдореЗрдВ рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХреЛ рдФрд░ рднреА рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдерд╛ рдФрд░ рд╕рдВрдХрд▓рдХ csc.exe, vbc.exe, рдФрд░ VBCSCompiler.exe рдХреЗ рд▓рд┐рдП рдЦрд╛рд▓реА рдбрдореАрдЬрд╝ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдерд╛ред рдХреНрдпреЛрдВ? рд╣рдо рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг рдЖрдзрд╛рд░ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдЖрдП: рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЕрдкреЗрдХреНрд╖рд┐рдд рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рд╣рдордиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕реЗ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдерд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд░реЛрдЬрд▓рд┐рди рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреЛрдб рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдиреА рдкрдбрд╝реАред

рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп Microsoft рд╕реЗ рд╡рд░реНрдЧ Csc рдХреЗ GetDefineConstantsSwitch рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдХрдИ рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдкрд░ String.Split рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 string[] allIdentifiers = originalDefineConstants.Split(new char[] { ',', ';', ' ' }); 

рдпрд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддрдВрддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ; рд╕рднреА рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЦреБрджрд╛рдИ рдХрд░рддреЗ рд░рд╣реЛред

рдЕрдЧрд▓рд╛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдХреНрд▓рд╛рд╕ рдЯреВрд▓рдЯреИрд╕реНрдХ рдХреЗ ComputePathToTool рд╡рд┐рдзрд┐ рдХрд╛ рдХреЙрд▓ рдерд╛ред рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ ( csc.exe ) рдХреЗ рд▓рд┐рдП рдкрде рдХреА рдЧрдгрдирд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╣реИред рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рд╡рд┐рдзрд┐ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЕрдиреНрдпрдерд╛ рдЕрд╢рдХреНрдд рд╣реИред

рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб:

 .... string pathToTool = ComputePathToTool(); if (pathToTool == null) { // An appropriate error should have been logged already. return false; } .... 

рдЪреВрдВрдХрд┐ рдХреЛрдИ csc.exe рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рд╣реИ (рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?), PathToTool рдХреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдорд╛рди рдирд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдзрд┐ ( ToolTask.Execute ) рдЧрд▓рдд рд╣реИ ред рдирд┐рдХрд╛рд▓реЗ рдЧрдП рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рд╕рд╣рд┐рдд рдХрд╛рд░реНрдп рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдЪрд▓реЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ рд╣рдо csc.exe рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

рдЕрдм pathToTool рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрде рдХреЛ рдЕрдм-рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ ToolTask.Execute рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ ManagedCompiler рдХреА рдХреЙрд▓ рд╣реИред ExecuteTool рд╡рд┐рдзрд┐:

 protected override int ExecuteTool(string pathToTool, string responseFileCommands, string commandLineCommands) { if (ProvideCommandLineArgs) { CommandLineArgs = GetArguments(commandLineCommands, responseFileCommands) .Select(arg => new TaskItem(arg)).ToArray(); } if (SkipCompilerExecution) { return 0; } .... } 

SkipCompilerExecution рдЧреБрдг рд╕рддреНрдп рд╣реИ (рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ (рдкрд╣рд▓реЗ рд╕реЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд ToolTask.Execute ) рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ ExecuteTool рдХрд╛ рд░рд┐рдЯрд░реНрди рдорд╛рди 0 рд╣реИ рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рд╕рд╣реА рд╣реИ ред рдЪрд╛рд╣реЗ рдЖрдкрдХрд╛ csc.exe рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдХрд▓рдХ рдерд╛ рдпрд╛ рд▓рд┐рдпреЛ рдЯреЙрд▓реНрд╕реНрдЯреЙрдп рджреНрд╡рд╛рд░рд╛ "рдпреБрджреНрдз рдФрд░ рд╢рд╛рдВрддрд┐" рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред

рдЗрд╕рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЙрд╕ рдХреНрд░рдо рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХрджрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рдереЗ:

  • рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ;
  • рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП;

рдФрд░ рд╣рдо рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗред рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рдбрдореА рдЬреЛрдбрд╝реЗ рдЧрдПред

рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ csc.exe рдлрд╝рд╛рдЗрд▓ рдЕрдиреБрдкрд╕реНрдерд┐рдд (рдФрд░ рдХрд╛рд░реНрдп рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛) рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛?

рдареАрдХ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рднреА рд╣реИ: CSharpCommandLineParser.ParseConditionalCompilationSymbols рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ Microsoft.CodeAnalysis.CSharp ред рдпрд╣, рднреА, рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдкрд░ String.Split рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ:

 string[] values = value.Split(new char[] { ';', ',' } /*, StringSplitOptions.RemoveEmptyEntries*/); 

рджреЗрдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рднрд╛рдЬрдХреЛрдВ рдХрд╛ рдпрд╣ рд╕реЗрдЯ Csc.GetDefineConstantsSwitch рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ? рдпрд╣рд╛рдБ, рдПрдХ рд╕реНрдкреЗрд╕ рд╡рд┐рднрд╛рдЬрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдареАрдХ рд╕реЗ рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдРрд╕рд╛ рддрдм рд╣реБрдЖ рдЬрдм рд╣рдо рд╕рдорд╕реНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд░рд╣реЗ рдереЗ: рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдВрддрд░рд┐рдХреНрд╖-рдкреГрдердХ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП, GetDefineConstantsSwitch рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди ParseConditionalCompilationSolbols рд╡рд┐рдзрд┐ рдирд╣реАрдВред

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

рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ред

рд░реЛрд╕рд▓рд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рд╣рдордиреЗ рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛: рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ NullReferenceException рдХреЛ рдлреЗрдВрдХ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдкрд╛рдпрд╛ рдФрд░ - рдмрд╕ рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛ рдХреЗ рд▓рд┐рдП - рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рдмрдиреА рд░рд╣реЗрдЧреАред

рд╣рдордиреЗ рдЗрд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ (рд╕рдВрд╕реНрдХрд░рдг 16.0.3) рдореЗрдВ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд┐рдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 class C1<T1, T2> { void foo() { T1 val = default; if (val is null) { } } } 

рдЖрдкрдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдпрд╣ .NET рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ)ред рдЯрд╛рдЗрдк рдХрд░реЗрдВ рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрдкреИрдВрдЯрд╕реНрдЯрд░реНрдирд╕реЗрдВрдЯреИрдХреНрд╕ ( рдирд▓ ) рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рдиреЛрдб рдХреЗ "рдЯрд╛рдЗрдк рдЯрд╛рдЗрдкрд╕реНрдореЙрд▓рдмреЛрд▓ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ)" рдореЗрдиреВ рдЖрдЗрдЯрдо рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЯрд╛рдЗрдкрд╕рдВрдмреЛрд▓ рджреЗрдЦреЗрдВред Visual Studio рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдЧрд╛, рдФрд░ рдЕрдкрд╡рд╛рдж рдЬрд╛рдирдХрд╛рд░реА - рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ - рдЗрд╡реЗрдВрдЯ рд╡реНрдпреВрдЕрд░ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдЧрд╛:

 Application: devenv.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.NullReferenceException at Microsoft.CodeAnalysis.CSharp.ConversionsBase. ClassifyImplicitBuiltInConversionSlow( Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, System.Collections.Generic.HashSet'1 <Microsoft.CodeAnalysis.DiagnosticInfo> ByRef) at Microsoft.CodeAnalysis.CSharp.ConversionsBase.ClassifyBuiltInConversion( Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, System.Collections.Generic.HashSet'1 <Microsoft.CodeAnalysis.DiagnosticInfo> ByRef) at Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.GetTypeInfoForNode( Microsoft.CodeAnalysis.CSharp.BoundNode, Microsoft.CodeAnalysis.CSharp.BoundNode, Microsoft.CodeAnalysis.CSharp.BoundNode) at Microsoft.CodeAnalysis.CSharp.MemberSemanticModel.GetTypeInfoWorker( Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode, System.Threading.CancellationToken) at Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel.GetTypeInfoWorker( Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode, System.Threading.CancellationToken) at Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.GetTypeInfo( Microsoft.CodeAnalysis.CSharp.Syntax.PatternSyntax, System.Threading.CancellationToken) at Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.GetTypeInfoFromNode( Microsoft.CodeAnalysis.SyntaxNode, System.Threading.CancellationToken) at Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.GetTypeInfoCore( Microsoft.CodeAnalysis.SyntaxNode, System.Threading.CancellationToken) .... 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рдорд╕реНрдпрд╛ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рдХрд╛рд░рдг рд╣реЛрддреА рд╣реИред

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

рдпрд╣ рдЕрдВрддрддрдГ рд╣рдореЗрдВ ClassifyImplicitBuiltInConversionSlow рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рд╕реНрдЯреИрдХ рдХреЗ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ:

 private Conversion ClassifyImplicitBuiltInConversionSlow( TypeSymbol source, TypeSymbol destination, ref HashSet<DiagnosticInfo> useSiteDiagnostics) { Debug.Assert((object)source != null); Debug.Assert((object)destination != null); if (source.SpecialType == SpecialType.System_Void || destination.SpecialType == SpecialType.System_Void) { return Conversion.NoConversion; } Conversion conversion = ClassifyStandardImplicitConversion(source, destination, ref useSiteDiagnostics); if (conversion.Exists) { return conversion; } return Conversion.NoConversion; } 

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

C ++ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рддрдВрддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди


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

рдкрд╣рд▓рд╛ рдпрд╣ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдЙрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдерд╛ рдЬреЛ рдХрд┐ рдЯреВрд▓рд╡рд╛рд░реНрдб рдХреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдкрд░ рдирд┐рд░реНрднрд░ рдереЗред рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рдХреБрдЫ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдЯреВрд▓рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рд╕рдмрд╕реЗ рд╣рд╛рд▓ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдирдП рд╕рдВрд╕реНрдХрд░рдг, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдмрдбрд╝рд╛ рдореВрд▓реНрдп рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдереА рдХрд┐ рдирдП MSBuild / Visual Studio рдХреЗ рд▓рд┐рдП ToolVersion рдХрд╛ рдореВрд▓реНрдп 16.0 рд╣реЛрдЧрд╛ред рд╣рд╛рдБ, рдЬрд╝рд░реВрд░! рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреИрд╕реЗ рдмрджрд▓ рдЧрдП:
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрддреНрдкрд╛рдж рдХрд╛ рдирд╛рдо
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛
рдЙрдкрдХрд░рдг рд╕рдВрд╕реНрдХрд░рдг
PlatformToolset рд╕рдВрд╕реНрдХрд░рдг
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2010
10.0
4.0
100
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012
11.0
4.0
110
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2013
12.0
12.0
120
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2015
14.0
14.0
140
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2017
15.0
15.0
141
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019
16.0
рд╡рд░реНрддрдорд╛рди
142

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

рд╣рдордиреЗ рдЯреВрд▓рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЬреЛрдбрд╝рдХрд░ (рдЕрд░реНрдерд╛рдд рдПрдХ рдЕрд▓рдЧ рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдПрдХрд▓рд┐рдВрдЧ) рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ред

рджреВрд╕рд░реЗ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ Visual Studio 2017 рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм VisualStudioVersion рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рд╣реИ) рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рдереАрдВред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдПрдХ .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрдард┐рди рдХрд╛рд░реНрдп рд╣реИред .NET рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓рд╕реЗрдЯ рдФрд░ рдЯреВрд▓рд╡реНрдпреВ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред C ++ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓рд╕реЗрдЯ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Visual Studio 2017 рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдмрдЬрд╛рдп MSBuild.exe.config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЯреВрд▓рд╕реЗрдЯ рдХреА рд╡реИрд╢реНрд╡рд┐рдХ рд╕реВрдЪреА ( Microsoft.Build.Evaluation.ProjectCollection.GlobalProjectCollection.Toolsets рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ Visual Studio 2015 рдФрд░ рдкреВрд░реНрд╡ рдореЗрдВ)ред

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

C # .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рддрдВрддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди


рдЗрд╕ рдХрд╛рд░реНрдп рдореЗрдВ рджреЛ рдкрд░рд╕реНрдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЗ рд╢рд╛рдорд┐рд▓ рдереЗ:

  • рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдореЗрдВ .NET рдХреЛрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ 'рдХрд░рдВрдЯ' рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рддреЛрдбрд╝рдХрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛;
  • рд╡рд┐рд╢реНрд▓реЗрд╖рдг Visual Studio рдХреА рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреНрд░рддрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдПрдХ рд╣реА рд╕реНрд░реЛрдд рд╕реЗ рдЖ рд░рд╣реА рдереАрдВ: рдХреБрдЫ рдмреЗрд╕ .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЧрд▓рдд рд░рд╛рд╕реНрддреЛрдВ рдкрд░ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЯреВрд▓рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрд╛ред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдерд╛, рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА (рдкрд┐рдЫрд▓реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде, 15.0 ) -

 The imported project "C:\Windows\Microsoft.NET\Framework64\ 15.0\Microsoft.Common.props" was not found. 

рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдореЗрдВ C # .NET рдХреЛрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА (рд╡рд░реНрддрдорд╛рди рдЯреВрд▓рд╕реЗрдЯ рд╕рдВрд╕реНрдХрд░рдг, рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде ):

 The imported project "C:\Program Files (x86)\Microsoft Visual Studio\ 2017\Community\MSBuild\Current\Microsoft.Common.props" was not found. .... 

рдЪреВрдВрдХрд┐ рдпреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рдорд╛рди рд╣реИрдВ (рдЬреЛ рд╡реЗ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ), рд╣рдо рдПрдХ рдкрддреНрдерд░ рд╕реЗ рджреЛ рдкрдХреНрд╖рд┐рдпреЛрдВ рдХреЛ рдорд╛рд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рдереЗред

рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ, рдореИрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ рдЙрд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛, рдмрд┐рдирд╛ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗред рдпреЗ рд╡рд┐рд╡рд░рдг (рдХреИрд╕реЗ C # .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдВрддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди) рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдЧрд╛ред рд╡реИрд╕реЗ, рдЕрдЧрд░ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рдкрдврд╝ рд░рд╣реЗ рдереЗ, рддреЛ рд╢рд╛рдпрдж рдЖрдкрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦреЛрдВ рдХрд╛ рджреВрд╕рд░рд╛ рд╕рдВрджрд░реНрдн рд╣реИред :)

рдЕрдм, рд╣рдордиреЗ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛? рд╣рдордиреЗ рдЕрдкрдиреЗ рдЕрдкрдиреЗ рдЯреВрд▓рд╕реЗрдЯ рдХреЛ .NET рдХреЛрд░ SDK ( Sdk.props , Sdk.targets ) рд╕реЗ рдмреЗрд╕ .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдиреЗ рд╣рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рджрд┐рдпрд╛ рдФрд░ рдЖрдпрд╛рдд рдкреНрд░рдмрдВрдзрди рдореЗрдВ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ред рд╣рд╛рдВ, рд╣рдорд╛рд░рд╛ рдЯреВрд▓рд╕реЗрдЯ рдлрд┐рд░ рд╕реЗ рдереЛрдбрд╝рд╛ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛, рдФрд░ рд╣рдореЗрдВ .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рднреА рдЬреЛрдбрд╝рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд▓рдЧрддрд╛ рд╣реИред

рддрдм рддрдХ, рд╣рдордиреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП MSBuild рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдХреЗ .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдерд╛ред

рдЕрдм рдЬрдм рд╣рдорд╛рд░рд╛ рд╕реНрдерд┐рддрд┐ рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдерд╛, рддрдВрддреНрд░ рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЧрдпрд╛:

  • .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛;
  • рдореВрд▓реНрдпрд╛рдВрдХрди:
    • рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рд╢реБрд░реВ рдХрд░реЗрдВ;
    • рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдЬрд╛рд░реА рд░рдЦреЗрдВред

рдпрд╣ рдХреНрд░рдо рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреЛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рд╣реИрдВ:

  • рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдЖрд░рдВрдн рдХрд░реЗрдВ;
  • рдмрд╛рд╣реНрдп .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдмрд╛рдж рдХреЗ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред

рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп Microsoft.DotNet.MSBuildSdkResolver рдЖрд╡рд╢реНрдпрдХ .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЙрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рд╣рдо рдЙрд╕ рд╕реНрд░реЛрдд рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдЬрд╣рд╛рдВ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (рдпрд╛рдиреА рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ)ред рдЪреВрдВрдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╣рдорд╛рд░реЗ рд╡рд┐рддрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЪрд╛рдирдХ рддрд░реНрдХ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХреЛрдИ рдЬреЛрдЦрд┐рдо рдирд╣реАрдВ рд╣реИред

рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рдЖрдпрд╛рддрд┐рдд рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ Sdk рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдмрд╛рдХреА рдореВрд▓реНрдпрд╛рдВрдХрди рддрд░реНрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдХрд┐рд╕ рд╕реНрдерд╛рди рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЬрд╛рдПред рдпрд╣ Microsoft.Common.props рдХреЗ рдКрдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ рдЗрд╕ рдФрд░ рдЕрдиреНрдп рдмреЗрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдЙрдирдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдпрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░рдиреА рдкрдбрд╝реЗред

рдПрдХ рдмрд╛рд░ рдЬрдм рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЖрдпрд╛рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЧреБрдг рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ .NET рдХреЛрд░ SDK рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХрд╛ рд╕рдорд░реНрдерди рдЖрдорддреМрд░ рдкрд░ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╕реЗ рдЖрд╕рд╛рди рдерд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Microsoft рдиреЗ Visual Studio 2015 рд╕реЗ Visual Studio 2017 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп рдЬрд┐рддрдиреА рдЪреАрдЬрд╝реЗрдВ рджреЗрдЦреАрдВ, рдЙрддрдиреА рдирд╣реАрдВ рдмрджрд▓реАрдВред рд╣рд╛рдБ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЖрдзрд╛рд░ рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ Visual Studio рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдб рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рдерд╛ред рд╡рд╣ рдХрдареЛрд░ред рджреВрд╕рд░рд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЯреВрд▓рд╕реЗрдЯ рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рддрдВрддреНрд░ рд╢рд╛рдорд┐рд▓ рдереЗ рдФрд░ рд╣рдореЗрдВ рдмрд╕ рдЗрд╕реЗ рдЦрд░реЛрдВрдЪ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рдерд╛ - рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЛ рдерд╛ рдЙрд╕ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗ рдирдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рддрд╣рдд .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рджрд░реНрдж рд░рд╣рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдФрд░ рдмрд┐рдирд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЙрдкрд┐рдпреЛрдВ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░) рд╣рдореЗрдВ рдпрд╣ рднреА рдЙрдореНрдореАрдж рджрд┐рд▓рд╛рддреА рд╣реИ рдХрд┐ рд╣рдордиреЗ рдХреБрдЫ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд▓реЗ рдХрд░ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдпрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╣рд╛рдеред

рд▓реЗрдХрд┐рди рдореИрдВ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдмрддрд╛рдП рдЧрдП рд╡рд┐рдЪрд╛рд░ рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛: рдХрднреА-рдХрднреА рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред

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


All Articles