рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдиреЗ рддреБрд░рдВрдд рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛: рдЖрдИрдбреАрдИ рдкреНрд▓рдЧ-рдЗрди, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди, C ++ рдФрд░ C # analyzers, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВред рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдИрдбреАрдИ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред
рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдкреАрдЫреЗ рдореБрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реА рджреГрд╖реНрдЯрд┐ рдФрд░ рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдП рдЧрдП рдирд┐рд░реНрдгрдпреЛрдВ рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ рджреЗрдЧрд╛ред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ (рддрдм рдпрд╣ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдерд╛), рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд╛рдо рдерд╛ - рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рдкреНрд▓рдЧ-рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдмрд▓рд╛ рд╣реБрдЖ рдерд╛ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдкреАрдЖрдИ рдХреА рдирд┐рд░реНрднрд░рддрд╛ред рдХрднреА-рдХрднреА рд╕реА ++ рднрд╛рд╖рд╛ рдХреА рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬрд┐рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реА ++ рд╕рдВрдХрд▓рдХ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реАрдЦ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЖрдорддреМрд░ рдкрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдерд╛ред рдФрд░ рддрдм рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдерд╛ - рд╕реА рдФрд░ рд╕реА ++ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдПред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдмрджрд▓ рдЧрдпрд╛ред рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдЗрд╕ рдЖрдИрдбреАрдИ рдХреЗ рдХрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдкреАрдЖрдИ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рдмрджрд▓ рдЧрдП, рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рд╣рдо рдЙрд╕ рд╕рдордп рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдирдП рд╕реА # рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдХрд╛рдо рдХреА рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдП (рд╕рд╛рде рд╣реА рд╕рд╛рде рд╣рдорд╛рд░реА рдирдИ рд╕реА ++ рдкрд░рдд рднреАред MSBuild \ Visual Studio рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде MSBuild рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ)ред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦ рдкрдврд╝реЗрдВ: "
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдФрд░ рд░реЛрдЬрд╝рд▓рд┐рди 2.0 рд╕рдорд░реНрдерди: рдХрднреА-рдХрднреА рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ ред" рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд▓реЗрдЦ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╣рдордиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, PVS-Studio, MSBuild, Roslyn) рдХреА рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдпреЛрдЬрдирд╛рдПрдБ рднреА рдереАрдВред рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рдордЭрдирд╛ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред
рдЕрдВрддрддрдГ, рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рд▓рд╛рдП, рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЖрд╢рд╛ рдХреА рдереА, рд╣рдордиреЗ рдЬреЛ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдХрд┐рдП рдереЗ, рд╡реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ \ MSBuild рдХреЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдВрдЧреЗред рднрд╛рдЧ рдореЗрдВ, рдЗрд╕ рдзрд╛рд░рдгрд╛ рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдкреБрд╖реНрдЯрд┐ рд╣реЛ рдЪреБрдХреА рд╣реИред рдХреНрдпрд╛ рдЗрд╕ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд╕рдорд░реНрдерди рдореЗрдВ рдорджрдж рдХреА? рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди
рдпрд╣ рд╕рдм рд╢реБрд░реВ рд╣реБрдЖ, рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдореЗрдВ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рдерд╛, рдЬрд╣рд╛рдВ рдЗрд╕рдиреЗ рд╢реБрд░реБрдЖрдд рдХреА рдФрд░ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, 2 рд╕рдорд╕реНрдпрд╛рдПрдВ рддреБрд░рдВрдд рд╕рд╛рдордиреЗ рдЖрдИрдВ, рдЬрд┐рд╕рдиреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред
рдкрд╣рд▓рд╛
IVsSolutionWorkspaceService рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд╛рдЗрдЯрд╡реЗрдЯ рд╕реЙрд▓реНрдпреВрд╢рди рд▓реЛрдб рдореЛрдб рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЕрдкрдбреЗрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдЕрдХреНрд╖рдо рдерд╛, рдХреЛ
рдбрд┐рдкреНрд░реЗрдХреЗрдЯреЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рд╕рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХреЗрд╡рд▓ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдереА, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред рд╕рдорд╕реНрдпрд╛рдУрдВред Microsoft рдиреЗ рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕ рдореЛрдб рдХреЛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ ... рд╣рдордиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ рдирд┐рдкрдЯрд╛ - рдЙрдкрдпреБрдХреНрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред
рджреВрд╕рд░рд╛ - рдЬрдм рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдореНрди рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рд╣реИ рдЬреЛ рдЬреЛрдЦрд┐рдо рдореЗрдВ рд╣реИрдВ рдпрд╛ рдПрдХ рдлреАрдЪрд░ рд╡реАрдПрд╕ рдЕрдкрдбреЗрдЯ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВредрд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рд▓реЙрдЧреНрд╕ (рдПрдХреНрдЯрд┐рд╡рд┐рдЯреАрд▓реЙрдЧ рдлрд╛рдЗрд▓) рдХреЛ рджреЗрдЦрдирд╛ рдЖрдЦрд┐рд░рдХрд╛рд░ 'i':
рдЪреЗрддрд╛рд╡рдиреА: рдПрдХреНрд╕рдЯреЗрдВрд╢рди 'рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ' рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА 'рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдСрдЯреЛ-рд▓реЛрдб' рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдЕрдм рднрд╡рд┐рд╖реНрдп рдХреЗ Visual Studio 2019 рдЕрджреНрдпрддрди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреА, рдЬрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЕрдкрдбреЗрдЯ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВредрд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдПрдХ рдорддрд▓рдм рдерд╛ - рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓рдирд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ COM рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рдореИрдВ рдереЛрдбрд╝реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдЬрд╛рдКрдВрдЧрд╛ред
Microsoft рдХреЗ рдкрд╛рд╕ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рдиреЗ рдкрд░ рдПрдХ рд▓реЗрдЦ рд╣реИ: "
рдХреИрд╕реЗ рдХрд░реЗрдВ: рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ VSPackages рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AsyncPackage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ "ред рдЙрд╕реА рд╕рдордп, рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдорд╛рдорд▓рд╛ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рдореБрдЦреНрдп рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд▓реЛрдбрд┐рдВрдЧ, рдпрд╛ рдмрд▓реНрдХрд┐, рдЖрд░рдВрднреАрдХрд░рдг рдХреА рд╡рд┐рдзрд┐ рд╣реИред рдкрд╣рд▓реЗ, рдЖрд╡рд╢реНрдпрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣реБрдЖ - рд╣рдорд╛рд░реЗ
рдкреИрдХреЗрдЬ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдУрд╡рд░рд░рд╛рдЗрдб
рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рд╡рд┐рдзрд┐
, рдФрд░
рдСрдирд╢реЗрд▓рдкреНрд░реЛрдкрд░реЗрдЯреА рдЪреЗрдВрдЬ рд╡рд┐рдзрд┐ред рддрд░реНрдХ рдХреЛ
OnShellPropertyChange рдкрджреНрдзрддрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрдм рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЕрднреА рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдФрд░ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкреНрд▓рдЧ-рдЗрди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЪрд░рдг рдореЗрдВ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ 'рдЬрд╝реЛрдВрдмреА' рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдФрд░ рдЗрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рддрд░реНрдХ рд╣реИ рдФрд░ 'рдЬрд╝реЛрдВрдмреА' рд░рд╛рдЬреНрдп рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд╕рд╛рде
OnShellPropertyChange рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
AsyncPackage рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд▓рдЧ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ,
рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ
рд╕реАрд▓ рд╕рдВрд╢реЛрдзрдХ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд░рдВрднрд┐рдХ
рдУрд╡рд░рд░рд╛рдЗрдЬреНрдб рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА 'рдЬреЙрдореНрдмреА' рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рддрд░реНрдХ рдХреЛ рднреА рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд▓рдЧрдЗрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред
рд╕рдорд╛рдзрд╛рди 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"
рдпрд╣рд╛рдВ "/ рдХрдорд╛рдВрдб" рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд▓рдЧ-рдЗрди рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдХрдорд╛рдВрдб рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдереЗред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ рдкреНрд▓рдЧрдЗрди рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж devenv.exe рдХреА рд▓реЙрдиреНрдЪ рд▓рд╛рдЗрди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ "рдмреИрд╕рд╛рдЦреА" рдкрд░ рд░реЛрдХрдирд╛ рдкрдбрд╝рд╛, рдФрд░ рд▓реЙрдЧ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЙрдЧ рд▓реЛрдб рдХрд░рдирд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╕рд╣реА" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛, рдкреНрд▓рдЧ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рд▓реЙрдЧ рдХреА рд▓реЛрдбрд┐рдВрдЧ рдореЗрдВ рджреЗрд░реА рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ рд╕рдВрднрд╡ рдерд╛ред
рдлреВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рд╕рдм рдХреБрдЫ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИ, рдХреЛрдИ рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рд╣реИ - рдЕрдВрдд рдореЗрдВред
рдФрд░ рдлрд┐рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ - рдкрд╛рд╡реЗрд▓ (рд╣реИрд▓реЛ!) рдПрдХ рдкреНрд▓рдЧ-рдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд╣ рдкреВрдЫрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХреА?
рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗ - рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП - рдХреИрд╕реЗ? рдирд╣реАрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдпрд╣рд╛рдВ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╕рдВрджреЗрд╢ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЬ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝рдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╣рдо рдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдЖрдкрдХреЛ рднреА рдирдорд╕реНрддреЗ) рд╣рдорд╛рд░реА рдорд╢реАрдиреЛрдВ рдкрд░ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ - рд╣рдордиреЗ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдХреМрди рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рд▓реЛрдб рдХрд┐рдП рдЧрдП рдереЗред рдФрд░ рдЕрдЪрд╛рдирдХ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╡реАрдПрд╕рдПрдХреНрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рд╣реИ - рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдПред
VSIXInstaller рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ - рдкреИрдХреЗрдЬ рдХреИрд╢ред рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдЗрд╕ рддрдереНрдп рд╕реЗ рднреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рдереА рдХрд┐ рдЬрдм рдХреИрд╢ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЗ рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (C: \ ProgramData \ Microsoft \ VisualStudio \ Package) VSIXInstaller рдиреЗ рд▓реЙрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦреА рдереАред рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдЕрдЧрд░ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╢ рд╕реЗ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ рд▓реЙрдЧ рдХреЛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рдиреЛрдЯред VSIXInstaller рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реБрдП, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рдХреЛ рдиреЛрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд░реЛрд╕рд▓рд┐рди рдФрд░ MSBuild рдХреЗ рдкрд╛рд╕ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИ рдЬреЛ рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдХреЛ рдкрдврд╝рдиреЗ, рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдФрд░ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реБрдЖ - рдкреНрд▓рдЧрдЗрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреИрд╢ рдореЗрдВ рдерд╛ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдПрдХ рдерд╛рдХреНрд╕рд┐рдХреНрд╕ рдкреИрдХреЗрдЬ рдерд╛), рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдпрд╣ .vsixmanifest (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдПрдХ рдЦреБрд▓рд╛ рдкреНрд░рд╢реНрди рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрджреНрдпрдкрд┐ .vsixmanifest рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдмрдВрдз рдереЗ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдмреБрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рдпрд╣ рднреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдорд╛рд╣реМрд▓ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЦрд░рд╛рдм рдерд╛ред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдФрд░ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдпрд╣ рдЕрд╕рдВрднрд╡ рдерд╛ред 'рд░рд┐рдХрд╡рд░реА' рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рднреА рдЕрдкреНрд░рд┐рдп рдереА, рдХреНрдпреЛрдВрдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (рд╕рдВрдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ) рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛, рд╕рд╛рде рд╣реА рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдЬреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ - рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╕реБрдЦрдж рдирд╣реАрдВ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ GUID рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдкреБрд░рд╛рдиреЗ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕реА рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп GUID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ)ред
рдФрд░ рдЬрдм рд╕реЗ рд╣рдо рдЕрдкреНрд░рд┐рдп рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рдереЗ, рдореИрдВ рдПрдХ рдФрд░ рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ - рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 2 рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореЗрдиреВ рдЖрдЗрдЯрдо 'рдПрдХреНрд╕рдЯреЗрдВрд╢рди' рдЯреИрдм рдХреЗ рддрд╣рдд 'рдЪрд▓реЗ рдЧрдП'ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд▓рдЧрдЗрди рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрдо рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЧрдИ рд╣реИред рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╣рд┐рдд рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕ 'рдлрд╝реАрдЪрд░' рдХрд╛ рдХреЛрдИ рдЬрд╝рд┐рдХреНрд░ рдбрд╛рдХреНрдпреВрдореЗрдВрдЯ рдпрд╛ рдмреНрд▓реЙрдЧ рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдЕрдм, рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 7.02 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рдЕрдЧрд▓реЗ рджрд┐рди, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдерд╛ - рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдИ рдЧрдИ рдереАред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рддреЗ рд╕рдордп (рдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рдХрд░рдирд╛), рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ рдХреЛ рдХрднреА-рдХрднреА "рдЦрд╛рд▓реА" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ - рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдереА: рдмрдЯрди, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛, рдЖрджрд┐ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрднреА-рдХрднреА рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рдереАред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдорд╢реАрди рдкрд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ 'рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди' рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рджрд┐рдЦрд╛рдИ рджреЗрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ - рдЗрд╕рдореЗрдВ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рд╕реНрдерд╛рдкрдирд╛ / рдЕрджреНрдпрддрди рдХреЗ рджреМрд░рд╛рди рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ рдерд╛ред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдорд╢реАрди рдкрд░ рднреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдирд╛ рдмрдВрдж рд╣реЛ рдЧрдпрд╛, рдФрд░ рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ "рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдорд░рдореНрдордд рдХрд░рддрд╛ рд╣реИред" рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдирд╣реАрдВ - рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реАред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВред
рдпрд╣ рдорд╛рдорд▓рд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЦрд┐рдбрд╝рдХреА (
рдЯреВрд▓рд╡рд┐рдВрдбреЛрд╡рди рдХреНрд▓рд╛рд╕ рдХреЗ рд╡рдВрд╢рдЬ) рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЧреНрд░рд┐рдб рдФрд░ рдмрдЯрди рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг) рдХреЗ рдЖрд░рдореНрдн рдХреЗ рдХреНрд░рдо рдореЗрдВ рдирд┐рдХрд▓рд╛ред рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд, рдирд┐рдпрдВрддреНрд░рдг рдХреА
рд╢реБрд░реВрдЖрдд рдлрд▓рдХ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рд╣реБрдИ, рдФрд░ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕рдм рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛,
FindToolWindowAsync рд╡рд┐рдзрд┐ (рдкрд╣рд▓реА рдХреЙрд▓ рдкрд░ рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдирд╛) рдиреЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдирд┐рдпрдВрддреНрд░рдг рдЕрджреГрд╢реНрдп рд░рд╣рд╛ред рд╣рдордиреЗ рдлрд▓рдХ рднрд░рдиреЗ рдХреЗ рдХреЛрдб рдкрд░ рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд▓рд╕реА рдЖрд░рдВрднреАрдХрд░рдг рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ред
рд╕рдорд░реНрдерди рд╕реА # 8.0
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЛрд╕рд▓рд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ - рдирдП рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рдм Microsoft.CodeAnalysis рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╕рдорд░реНрдерд┐рдд рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рддреИрдпрд╛рд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдХреЗ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рд╕рдВрдмрдВрдз рд╣реИ, рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрдж рдХреЛ рд╕рдм рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдирдП рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рдВ, рд╣рдореЗрдВ рд░реЛрдЬрд▓рд┐рди рдХреЗ рдЕрдзрд┐рдХ рд╣рд╛рд▓рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирдпрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╡реГрдХреНрд╖ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдкреЗрдбрд╝ рдХреЗ рдирдП / рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдиреЛрдбреНрд╕ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ C # 8 рдореЗрдВ рд╕рдмрд╕реЗ рдЪрд░реНрдЪрд┐рдд рдирд╡рд╛рдЪрд╛рд░ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рд╣реИред рдореИрдВ рдпрд╣рд╛рдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ - рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдХреЗ рдпреЛрдЧреНрдп рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рд╣реИ (рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реИ)ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЕрдм рддрдХ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдлрд╝реНрд▓реЛ рддрдВрддреНрд░ рдореЗрдВ рдЕрд╢рдХреНрдд рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛рдиреА, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ, рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ)ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЪрд░ рдХреЗ рдЧреИрд░-
рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЖрдк рдЕрднреА рднреА рдЗрд╕реЗ рдХрд╛рдлреА рд╕рд░рд▓рддрд╛ рд╕реЗ (рдпрд╛ рдЧрд▓рддреА рд╕реЗ) рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ рдХреЛ рдбреАрд░рдлреЗрд░рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдирдЖрд░рдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдмреЗрд╢рдХ, рдпрджрд┐ рдпрд╣ рдХреЛрдб рдореЗрдВ рдРрд╕рд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рджреЗрдЦрддрд╛ рд╣реИ) рдЪрд░ рдХреЗ рдЧреИрд░-рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд╡рдЬреВрджред
рдореИрдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ рд╕рд╛рде рдХреЗ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред рдЕрдкрдиреЗ рдЖрдк рдХреЛ, рд╣рдордиреЗ рдЗрд╕реЗ 'рднрд╛рд╡рдирд╛рддреНрдордХ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕' рдХрд╣рд╛ред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛рдлреА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВ:
obj.Calculate(); obj?.Calculate(); obj.Calculate(); obj!?.Calculate(); obj!!!.Calculate();
рд╡реИрд╕реЗ, рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рдореБрдЭреЗ рдирдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ 'рднрд░рдиреЗ' рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реАрдХреЗ рдорд┐рд▓реЗред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк 'рдбрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рддрдХ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред' рдпрд╣реА рд╣реИ, рдЖрдк рди рдХреЗрд╡рд▓ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
object temp = null!
рд▓реЗрдХрд┐рди рдпрд╣ рднреА:
object temp = null!!!;
рдЖрдк рдмрд┐рдЧрд╛рдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдЧреЗ рдмрдврд╝реЗрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ:
object temp = null!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;
рдпрд╣ рдХреЛрдб рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк .NET рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо SDK рд╕реЗ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЯреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Visual Studio рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдк рдИрд╡реЗрдВрдЯ рд╡реНрдпреВрдЕрд░ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
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 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ 'рдореВрд▓реНрдпрд╛рдВрдХрди' рд╢рдмреНрдж рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред рдЕрдиреБрд╡рд╛рдж, рдЬреЛ рдЕрд░реНрде рдореЗрдВ рдирд┐рдХрдЯрддрдо рдерд╛ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧ рд░рд╣рд╛ рдерд╛, "рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рдерд╛"ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдиреБрд╡рд╛рдж рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ - рддреЛ рдЖрдк рдореБрдЭреЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкрдврд╝рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рд╕рдмрд╕реЗ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкреНрд▓рдЧрдЗрди рд╕рдорд░реНрдерди рдерд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рдЯреВрд▓рд╕реЗрдЯ рдФрд░ MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░рдг рдерд╛, рдЬрд┐рд╕рдиреЗ рдЕрдм рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХрд╛рд░реНрдп рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рдЪрд░рдг рдореЗрдВ рдмрдиреЗ "рд╣рдорд╛рд░реЗ" рдЯреВрд▓рд╕реЗрдЯ рдкрд░ рд╣рдорд╛рд░реА рд╢рд░реНрдд рдХреЛ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╕рд╣реА рдард╣рд░рд╛рдпрд╛ рдЧрдпрд╛ред
рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ, рдпрд╣ рд╕рднреА NuGet рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП NuGet рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрди рдЯреИрдм рдкрд░, рдПрдХ 'рдЕрдкрдбреЗрдЯ' рдмрдЯрди рд╣реИ ... рдЬреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рд╕рд╛рдордиреЗ рдЖрдП, рдФрд░ рдЙрди рд╕рднреА рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд╣реА рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рджрд░реНрджрдирд╛рдХ, рд▓реЗрдХрд┐рди, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реИ рд▓рдХреНрд╖реНрдп рдХреЛ 'рдЯреБрдХрдбрд╝рд╛ рджреНрд╡рд╛рд░рд╛ рдЯреБрдХрдбрд╝рд╛' рдЕрджреНрдпрддрди Microsoft.Build / Microsoft.CodeAnalysis рд╕рдВрдХреБрд▓ред
рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдирд┐рдпрдореЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдорддрднреЗрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рддреБрд░рдВрдд рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдиреЛрдб рдХреЗ рд▓рд┐рдП рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмрджрд▓ рдЧрдИ рд╣реИред рдпрд╣ рдареАрдХ рд╣реИ, рдЬрд▓реНрджреА рдареАрдХ рд╣реЛ рдЧрдпрд╛ред
рдореБрдЭреЗ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рд╣рдо рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдПрдирд╛рд▓рд╛рдЗрдЬрд░ (рд╕реА #, рд╕реА ++, рдЬрд╛рд╡рд╛) рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрдирд┐рдпрдореЛрдВ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ, рдпрд╛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЭреВрдареА рдирдХрд╛рд░рд╛рддреНрдордХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░реЗрдВ)ред рдпреЗ рдкрд░реАрдХреНрд╖рдг рдЕрджреНрдпрддрди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ / рдЯреВрд▓рд╕реЗрдЯ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рдордп рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рд╛рдордиреЗ рдЖрдИрдВред
рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛрдбрдЕрдирд▓рд┐рд╕рд┐рд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рднреАрддрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЧрд┐рд░рд╛рд╡рдЯ рдереАред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдореЗрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░, рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рджреМрд░рд╛рди рдЕрдкрд╡рд╛рдж рд╣реБрдП - рдЕрд░реНрде рд╕рдВрдмрдВрдзреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЦреЛрд▓рдирд╛, рдЖрджрд┐ред
Visual Studio 2017 рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЗ рдЪреМрдХрд╕ рдкрд╛рдардХреЛрдВ рдХреЛ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ рдПрдХ рд╕реНрдЯрдм рд╣реИ - MSBuild.exe рдлрд╝рд╛рдЗрд▓ 0 рдмрд╛рдЗрдЯреНрд╕ рдЖрдХрд╛рд░ рдореЗрдВ рд╣реИред
рдЗрд╕ рдмрд╛рд░ рдореБрдЭреЗ рдФрд░ рдЖрдЧреЗ рдЬрд╛рдирд╛ рдерд╛ - рдЕрдм рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ рдЦрд╛рд▓реА рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдЯрдмреНрд╕ - csc.exe, vbc.exe, VBCSCompiler.exe рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХреНрдпреЛрдВ? рдЗрд╕рдХрд╛ рдЖрдзрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдмреЗрд╕ рдореЗрдВ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ, рдЬрд┐рд╕ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреЗ рдЕрдВрддрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдП - рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдИ рдЪреЗрддрд╛рд╡рдиреА рдЕрдиреБрдкрд╕реНрдерд┐рдд рдереАрдВред
рд╕рдорд╕реНрдпрд╛ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХ рдмрди рдЧрдИ - рдЬрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдХреБрдЫ рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИ, рдореБрдЭреЗ рд░реЛрдЬрд▓рд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдирд╛ рдкрдбрд╝рд╛ред
рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
Csc рд╡рд░реНрдЧ рдХреА
GetDefineConstantsSwitch рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ
Microsoft.Build.Tasks.CodeAnalysis рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдХрд░реЗрдВред рдХрдИ рд╕реАрдорд╛рдВрдХрдХ рдкрд░
String.Split рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
string[] allIdentifiers = originalDefineConstants.Split(new char[] { ',', ';', ' ' });
рдпрд╣ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдареАрдХ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЧреЗ рдХреА рдЦреБрджрд╛рдИред
рдЕрдЧрд▓рд╛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ
рдЯреВрд▓рдЯреИрдХ рдХреНрд▓рд╛рд╕ рдХреЗ
ComputePathToTool рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП
рдХреЙрд▓ рд╣реИ ред рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ (
csc.exe ) рдХреЗ рд▓рд┐рдП рдкрде рдмрдирд╛рддреА рд╣реИ рдФрд░ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрде рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛
рдЕрд╢рдХреНрдд рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред
рдХреЙрд▓рд░ рдХреЛрдб:
.... string pathToTool = ComputePathToTool(); if (pathToTool == null) {
рдЪреВрдВрдХрд┐ рдХреЛрдИ
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 рдЧреБрдг
рд╕рддреНрдп рд╣реИ (рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдХрд▓рди рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ)ред рдирддреАрдЬрддрди, рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐ (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдгрд┐рдд
рдЯреВрд▓рдЯреИрд╕реНрдХред рдПрдХреНрд╕реНрдпреВрдЯреНрдпреВрдЯ ) рдпрд╣
рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐
рдПрдХреНрд╕рдХреНрдпреВрдЯреНрдпреВрдЯреВрд▓ рд╡рд┐рдзрд┐ рдХрд╛ рд░рд┐рдЯрд░реНрди рдХреЛрдб 0 рд╣реИ, рдФрд░, рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди
рд╕рд╣реА рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ рдХрд░рддрд╛
рд╣реИ ред рдЖрдкрдХреЗ рдкрд╛рд╕
csc.exe рдХреЗ рдкреАрдЫреЗ рдХреНрдпрд╛ рдерд╛ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдХрд▓рдХ рдпрд╛ рд▓рд┐рдпреЛ рдЯреЙрд▓реНрд╕реНрдЯреЙрдп рдХрд╛ 'рд╡реЙрд░ рдПрдВрдб рдкреАрд╕'
рдЯреЗрдХреНрд╕реНрдЯреБрдЕрд▓ рд░реВрдк рдореЗрдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред
рдирддреАрдЬрддрди, рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдкрдЬреА рд╣реИ рдХрд┐ рдЪрд░рдгреЛрдВ рдХрд╛ рдЕрдиреБрдХреНрд░рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╕рдВрдХрд▓рдХ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ;
- рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ;
рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВред рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реНрдЯрдмреНрд╕ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред
рдареАрдХ рд╣реИ, рдЕрдЧрд░ csc.exe рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рд╛ (рдФрд░ рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛) рддреЛ рд╕рдлрд▓ рд╕рдВрдХрд▓рди рдХреЗ рдкрд╛рддреНрд░ рдХреИрд╕реЗ рдЖрдП?
рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ -
Microsoft.CodeAnalysis.CSharp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ
CSharpCommandLineParser.ParseConditionalCompilationSymbols ред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рднреА
рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдИ рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ред
string[] values = value.Split(new char[] { ';', ',' } );
Csc.GetDefineConstantsSwitch рд╡рд┐рдзрд┐ рд╕реЗ рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░ рджреЗрдЦреЗрдВ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрд╣рд╛рдЯреНрд╕рдПрдк рдПрдХ рд╡рд┐рднрд╛рдЬрдХ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рд╡рд░реНрдг рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдереЗ, рддреЛ рдпрд╣ рд╡рд┐рдзрд┐ рдЙрдиреНрд╣реЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд░ рджреЗрдЧреАред
рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЙрдареА - рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░
GetDefineConstantsSwitch рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛
рдерд╛ , рд▓реЗрдХрд┐рди
ParseConditionalCompilationSymbols рдирд╣реАрдВред
рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рд╛рдордиреЗ рдЖрдИ рдереА, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЧрд┐рд░рд╛рд╡рдЯ рдереА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдкрд░ рдЬреЛ рдПрдХрддреНрд░ рдирд╣реАрдВ рдХреА рдЧрдИ рдереАрдВред Microsoft.CodeAnalysis рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реБрдИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓реМрдЯреАрдВ -
ArgumentNullException (рдХреБрдЫ рдЖрдВрддрд░рд┐рдХ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдХреЛ рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛),
NullReferenceException рдФрд░ рдЕрдиреНрдпред
рдореИрдВ рдиреАрдЪреЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдпрд╣ рдореБрдЭреЗ рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрд╛ред
рд░реЛрд╕рд▓рд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдХреЛрдб рд╕реЗ рдПрдХ
NullReferenceException рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛
рдЧрдпрд╛ ред рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдХрд╛рд░рдг, рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛрдб рдкрд╛рдпрд╛ рдФрд░, рдмреНрдпрд╛рдЬ рдХреЗ рд▓рд┐рдП, рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛ рдлрд┐рд░ рд╕реЗ рдЖрддреА рд╣реИред
рдЦреИрд░ - рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ (рдкреНрд░рдпреЛрдЧ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 16.0.3 рдкрд░ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдирд┐рдореНрди рдлрд╝реЙрд░реНрдо рдХреА рдПрдХ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдЪрд╛рд╣рд┐рдП:
class C1<T1, T2> { void foo() { T1 val = default; if (val is null) { } } }
рд╣рдореЗрдВ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝рд░ (.NET рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрд╕рдбреАрдХреЗ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛) рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
TypeSymbol (рдореЗрдиреВ рдЖрдЗрдЯрдо "TypeSymbol (рдпрджрд┐ рд╣реЛ рддреЛ рджреЗрдЦреЗрдВ)" рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдкреНрд░рдХрд╛рд░
ConstantPatternSyntax (
рдирд▓ ) рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдкреЗрдбрд╝ рдХреЗ рдиреЛрдб рд╕реЗред рдЙрд╕рдХреЗ рдмрд╛рдж, 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.CodeAnalysis рдбреАрдмрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЯреНрд░реА рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдиреЛрдб рд╕реЗ
рдЯрд╛рдЗрдкрд╕реНрдорд╛рдЗрд▓ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдХреЗ рдбреАрдмрдЧрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдЯреАрдХ рд╕реНрдерд╛рди рдкрд░ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо
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 ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
рдпрд╣рд╛рдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реБрдЖ - рдкреБрд░рд╛рдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдХрд┐рд╕реА рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж, рджреЛ рдмрд┐рдВрджреБ рдереЗ, рдЬрд┐рди рдкрд░ рдпрд╣ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИредрд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдЙрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдерд╛ рдЬреЛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЯреВрд▓рд╡рд░реНрдЬрди рдХреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ - рдРрд╕реЗ рдХрдИ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдЯреВрд▓рд╕реЗрдЯ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдФрд░ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдзрд┐рдХ рд╡рд░реНрддрдорд╛рди рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдгред рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдХреНрд░рдорд╢рдГ рдПрдХ рдЙрдЪреНрдЪ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдп рдерд╛ред рдПрдХ рдЧрдгрдирд╛ рдереА рдХрд┐ MSVuild / Visual Studio рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрдиреБрд░реВрдк ToolsVersion, 16.0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдЬреЛ рднреА рдорд╛рдорд▓рд╛ ... рд╣рд┐рдд рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЧреБрдгреЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдмрджрд▓рд╛ рдЧрдпрд╛:рдмреЗрд╢рдХ, рдордЬрд╛рдХ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рдПрдХреНрд╕рдмреЙрдХреНрд╕ рдХреЗ рдмрджрд▓рддреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореВрд▓реНрдпреЛрдВ (рдЪрд╛рд╣реЗ рд╡рд╣ рдирд╛рдо рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛрдИ рднреА рд╣реЛ) рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛, Microsoft рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрд╕реНрдерд┐рд░ рдмрд╛рдд рд╣реИред :)
рд╕рдорд╛рдзрд╛рди рдХрд╛рдлреА рд╕рд░рд▓ рдерд╛ - рдЯреВрд▓рд╕реЗрдЯ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп (рдПрдХ рдЕрд▓рдЧ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЗрдХрд╛рдИ рдХрд╛ рдЖрд╡рдВрдЯрди)редрджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 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 рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдПрдХ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, 2 рд╕рдорд╕реНрдпрд╛рдПрдВ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╣рд▓ рд╣реЛ рдЧрдИ рдереАрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рд╕рдВрдмрдВрдзрд┐рдд рдереАрдВ:- 'рдХрд░рдВрдЯ' рдЯреВрд▓рд╕реЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, Visual Studio 2017 рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛;
- .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 рдХреЛрд░ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рддрд░реНрдХ рднреА рдЬреЛрдбрд╝рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдерд╛редрдкрд╣рд▓реЗ, .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдХрд╛рдо рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛: рд╣рдордиреЗ рдмрд╕ рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ MSBuild рдХреА рдХреАрдордд рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛редрдЕрдм, рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рджрд┐рдЦрддрд╛ рд╣реИ:- .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рддреИрдпрд╛рд░реА;
- рдореЙрдбрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ:
- рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рд╢реБрд░реБрдЖрдд;
- рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЬрд╛рд░реА рд░рдЦрд╛ред
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЪрд░рдгреЛрдВ рд╕реЗ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рд╣реИрдВ:- рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗред
- рдмрд╛рд╣реНрдп .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдВред
.NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП .targets / .props рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - Microsoft.DotNet.MSBuildSdkResolverред рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рджреАрдХреНрд╖рд╛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рдереА - рд╣рдо рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ) рдХрд╣рд╛рдВ рд╣реИред рдЪреВрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣рдорд╛рд░реЗ рд╡рд┐рддрд░рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рдЖрд╢рдВрдХрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рддрд░реНрдХ рдЕрдЪрд╛рдирдХ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛редрдЕрдм рдПрд╕рдбреАрдбреА рдлрд╛рдЗрд▓реЗрдВ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ рдЖрдпрд╛рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдЖрдЧреЗ рдХреЗ рддрд░реНрдХ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╣рдорд╛рд░реЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рд▓рд┐рдП рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рд╕реЗред рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд Microsoft.Conon.props рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓рд╕реЗрдЯ рд╕реЗ рдЗрд╕реЗ рдФрд░ рдЕрдиреНрдп рдореВрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВредрдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрд╡рд╢реНрдпрдХ рдЖрдпрд╛рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдФрд░ рдХрдИ рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ .NET рдХреЛрд░ SDK рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдХреЗ рдЖрдЧреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдмрд╛рдХреА рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВредрдирд┐рд╖реНрдХрд░реНрд╖
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, Visual Studio 2019 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди Visual Studio 2017 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдХрдИ рдХрд╛рд░рдХреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Microsoft рдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2015 рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХреЗ рдмреАрдЪ рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ред рд╣рд╛рдБ, рд╣рдордиреЗ рдореБрдЦреНрдп рдЯреВрд▓рд╕реЗрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкрд░ рдЙрдиреНрдореБрдЦ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред рджреВрд╕рд░рд╛ - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреВрд▓рд╕реЗрдЯ рдФрд░ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдерд╛ - рдлрд┐рд░ рд╕реЗ рд╕рдм рдХреБрдЫ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдпрд╣ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛ред рдирдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рд╕рдорд░реНрдерди (рд╕рд╛рде рд╣реА рдПрдХ рдорд╢реАрди рдкрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдХреЛрдИ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИрдВ) рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдХрд╛рд░рдг рднреА рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рд╣реА рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдпрд╛ рд╣реИредрдЦреБрдж рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИредрд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдореИрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рджреЛрд╣рд░рд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдЬреЛ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдерд╛ - рдХрднреА-рдХрднреА рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд░реНрдЧреЗрдИ рд╡рд╛рд╕рд┐рд▓рд┐рд╡ред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдХрд╛ рд╕рдорд░реНрдерди