рд░реЛрдЬрд▓рд┐рди рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛

рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ / рдбреЗрд▓реАрд▓рд╛рдЗрди

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

рд╣рдорд╛рд░реЗ рдХрдИ рдкрд╛рдардХреЛрдВ рдХреЛ рд░реЛрдЬрд▓рд┐рди (рдпрд╛ .NET рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдУрдкрди рд╕реЛрд░реНрд╕ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдХрд╛ рд╕реЗрдЯ рд╣реИ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЗ C # рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рдмреЗрд╕рд┐рдХ .NET рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреАрдЖрдИ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

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

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдПрдВрдбреНрд░реА рдХрд╛рд░рдкреЛрд╡ рдиреЗ рд░реЛрд╕реЗрд▓ рдЪреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдЦрд┐рд░реА рд▓реЗрдЦ " рдиреНрдпреВ рдИрдпрд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 6.00 рд░рд┐рд▓реАрдЬ: рд╕реНрдХреИрдирд┐рдВрдЧ рд░реЛрдЬрд▓рд┐рди " рд▓рд┐рдЦрд╛ рд╣реИ, 3 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╣реЛ рдЧрдпрд╛ рд╣реИред рддрдм рд╕реЗ C # PVS-Studio рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдХрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓реАрдВред рджрд░рдЕрд╕рд▓, рдПрдВрдбреНрд░реА рдХрд╛ рд▓реЗрдЦ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдкреАрд╡реА # рд╕реНрдЯреВрдбрд┐рдпреЛрдЬ рдореЗрдВ C # рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╣рдо рд░реЛрдЬрд╝рд▓рд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рдерд╛ред рддреЛ рдЗрд╕ рдкрд▓ рддрдХ рд╕реА # рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЕрдзрд┐рдХ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛?

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

рдлрд┐рд▓рд╣рд╛рд▓ рд╣рдо рд░реЛрд╕реЗрд▓рд┐рди 3.0 рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрд░рд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣рдордиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2017 рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреВрдЯрд┐рд╡ рдореЗрдВ "рд╕реНрдЯрдм" рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдЯреВрд▓рд╕реЗрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЦрд╛рд▓реА MSBild рд╣реИ .exe рдлрд╝рд╛рдЗрд▓ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдПрдХ "рдмреИрд╕рд╛рдЦреА" рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ (MSBuild API рд▓реЛ-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдХрд╛рд░рдг рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рд╣реИ), рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрдИ рд░реЙрд╕рд┐рди рдЕрдкрдбреЗрдЯ рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд░реВрдк рд╕реЗ рдкрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХреА рд╣реИред 2017. рдЕрдм рддрдХ рдпрд╣ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2019 рдЕрдкрдбреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреБрд░рд╛рдиреЗ MSBuild рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдореЗрдВ (рдХреБрдЫ рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рднреА) рдорджрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред

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

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

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

PVS-Studio C # рдореЗрдВ рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рди рддреЛ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ, рдФрд░ рди рд╣реА рдЧрд╣рд░рд╛рдИ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рдХреЗрд╡рд▓ рд╕реАрдорд╛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЖрднрд╛рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ, рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ (рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓реНрдпрд╛рдВрдХрди рдХреА рдЧрдИ рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдиреЗ рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╡рд┐рдзрд┐ рдХрд╛ рд╕реНрд╡рдпрдВ рд╣реА рдпрд╣ рдорд╛рдирдХрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдлрд▓ рдЕрдЬреНрдЮрд╛рдд рд╣реИред

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

рдЕрдм рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЕрд╡рдЧрдд рд╣реИ рдХрд┐ рдЪрд░ рдирд┐рд╖реНрдкрд╛рджрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрдЧрд░ рд╢рд░реНрдд рдХреЗ рддрд╣рдд)ред рдпрджрд┐ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрдХ рдХреЗ рдРрд╕реЗ рд╡реИрд░рд┐рдПрдмрд▓ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ V3080 рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░, рдпрджрд┐ рдпрд╣ рд╕рднреА рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ рдЕрд╢рдХреНрдд рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯреЛрд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рддрдВрддреНрд░ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ рдХрд┐ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ - рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреА рдПрдХ рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдВрддрд┐рдо рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рдЪрд┐рдд рд╣реИред рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рд░рд▓ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗрд╡рд▓ рд╢рд┐рдХрд╛рдпрдд рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╢рдХреНрдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рджреЗрдЦрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ, рдпрд╣ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ C # 8.0 рдХреА рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗ рдЕрд╢рдХреНрдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрд╢рдХреНрдд рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рд╕реЗрдЯ рдХрд░рдиреЗ рддрдХ рд╕реАрдорд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреЗ рд╣реИрдВ - рдХреЗрд╡рд▓ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╣рд╛рдВ рдирд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЕрдм рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЦреЛрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ - рдордзреНрдпрдо

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рд╡рд░реНрддрдорд╛рди' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред CSharpSyntaxTreeFactoryService.PositionalSyntaxReference.cs 70

private SyntaxNode GetNode(SyntaxNode root) { var current = root; .... while (current.FullSpan.Contains(....)) // <= { .... var nodeOrToken = current.ChildThatContainsPosition(....); .... current = nodeOrToken.AsNode(); // <= } .... } public SyntaxNode AsNode() { if (_token != null) { return null; } return _nodeOrParent; } 

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

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

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред CommonCommandLineParser.cs 911

 private IEnumerable<CommandLineSourceFile> ExpandFileNamePattern(string path, string baseDirectory, ....) { string directory = PathUtilities.GetDirectoryName(path); .... var resolvedDirectoryPath = (directory.Length == 0) ? // <= baseDirectory : FileUtilities.ResolveRelativePath(directory, baseDirectory); .... } public static string GetDirectoryName(string path) { return GetDirectoryName(path, IsUnixLikePlatform); } internal static string GetDirectoryName(string path, bool isUnixLike) { if (path != null) { .... } return null; } 

ExpandFileNamePattern рд╡рд┐рдзрд┐ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЪрд░ GetDirectoryName (рд╕реНрдЯреНрд░рд┐рдВрдЧ) рд╡рд┐рдзрд┐ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рдЕрддрд┐рднрд╛рд░рд┐рдд рд╡рд┐рдзрд┐ GetDirectoryName (рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмреВрд▓) рдХрд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рдЪрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдирд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдБрдЪ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдирд┐рд░реНрдорд╛рдг рд╣реИред

V3080 рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛, рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рджреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде, рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрдВрдЯрд░рдкреНрд░реЛрдбреЗрдХреНрдЯрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдпрд╣рд╛рдБ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рд╕реНрдкреИрдирд╕реНрдЯрд╛рд░реНрдЯрд▓реЛрдХреЗрд╢рди' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред TestWorkspace.cs 574

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ 'spanEndLocationExclusive'ред TestWorkspace.cs 574

 private void MapMarkupSpans(....) { .... foreach (....) { .... foreach (....) { .... int? spanStartLocation = null; int? spanEndLocationExclusive = null; foreach (....) { if (....) { if (spanStartLocation == null && positionInMarkup <= markupSpanStart && ....) { .... spanStartLocation = ....; } if (spanEndLocationExclusive == null && positionInMarkup <= markupSpanEndExclusive && ....) { .... spanEndLocationExclusive = ....; break; } .... } .... } tempMappedMarkupSpans[key]. Add(new TextSpan( spanStartLocation.Value, // <= spanEndLocationExclusive.Value - // <= spanStartLocation.Value)); } } .... } 

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

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

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

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

рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╢рдХреНрддрддрд╛ - рдЙрдЪреНрдЪ

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'CollectionType.Type' рдХреЗ рдирд┐рд░реАрдХреНрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AbstractConvertForToForEachCodeRefactoringProvider.cs 137

 public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { .... var collectionType = semanticModel.GetTypeInfo(....); if (collectionType.Type == null && collectionType.Type.TypeKind == TypeKind.Error) { return; } .... } 

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

 if (collectionType.Type == null || collectionType.Type.TypeKind == TypeKind.Error) .... 

рд╡реИрд╕реЗ, рдЪреАрдЬреЗрдВ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдордиреЗ рдЖ рд╕рдХрддреА рд╣реИрдВ: рд╣рд╛рд▓рдд рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдСрдкрд░реЗрдЯрд░реНрд╕ == рдФрд░ ! = рдЧрдбрд╝рдмрдбрд╝ рд╣реИрдВ ред рддрдм рд╕рд╣реА рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 if (collectionType.Type != null && collectionType.Type.TypeKind == TypeKind.Error) .... 

рдХреЛрдб рдХрд╛ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг рдХрдо рддрд╛рд░реНрдХрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдХреЛ рднреА рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдХреЛ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред

рдПрдХ рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐ред

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред рдирд┐рд░реАрдХреНрд╖рдг 'рдХрд╛рд░реНрд░рд╡рд╛рдИ' рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред TextViewWindow_InProc.cs 372

 private Func<IWpfTextView, Task> GetLightBulbApplicationAction(....) { .... if (action == null) { throw new InvalidOperationException( $"Unable to find FixAll in {fixAllScope.ToString()} code fix for suggested action '{action.DisplayText}'."); } .... } 

рдЕрдкрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдХрд╛рд░реНрд░рд╡рд╛рдИ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред

рдпрд╣рд╛рдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рдЕрдВрддрд┐рдо V3080 рддреНрд░реБрдЯрд┐ рдЖрдИ рд╣реИред

V3080 рд╕рдВрднрд╡ рдЕрд╢рдХреНрддрддрд╛ред 'рдкреНрд░рдХрд╛рд░' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред ObjectFormatterHelpers.cs 91

 private static bool IsApplicableAttribute( TypeInfo type, TypeInfo targetType, string targetTypeName) { return type != null && AreEquivalent(targetType, type) || targetTypeName != null && type.FullName == targetTypeName; } 

рд╡рд┐рдзрд┐ рдХрд╛рдлреА рдЫреЛрдЯреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВред рд░рд┐рдЯрд░реНрди рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдЧрд▓рдд рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЬрдм accessing.full рдирд╛рдо рдЖрддрд╛ рд╣реИ , рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ (рд╡реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд╣реАрдВ рдмрджрд▓реЗрдВрдЧреЗ):

 return (type != null && AreEquivalent(targetType, type)) || (targetTypeName != null && type.FullName == targetTypeName); 

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

 return type != null && (AreEquivalent(targetType, type) || targetTypeName != null && type.FullName == targetTypeName); 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ V3080 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЕрдм рдЕрдиреНрдп рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рд╕рдордп рд╣реИ рдЬреЛ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред

рдЯрд╛рдЗрдкреЛ

V3005 'SourceCodeKind' рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рд╣реА рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдбрд╛рдпрдирд╛рдорд┐рдХрдлрд╛рдЗрд▓рдЗрдиреНрдлреЛ .cs 17

 internal sealed class DynamicFileInfo { .... public DynamicFileInfo( string filePath, SourceCodeKind sourceCodeKind, TextLoader textLoader, IDocumentServiceProvider documentServiceProvider) { FilePath = filePath; SourceCodeKind = SourceCodeKind; // <= TextLoader = textLoader; DocumentServiceProvider = documentServiceProvider; } .... } 

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

 public DynamicFileInfo( string _filePath, SourceCodeKind _sourceCodeKind, TextLoader _textLoader, IDocumentServiceProvider _documentServiceProvider) { FilePath = _filePath; SourceCodeKind = _sourceCodeKind; TextLoader = _textLoader; DocumentServiceProvider = _documentServiceProvider; } 

рдЕрд╕рд╛рд╡рдзрд╛рдиреА

V3006 рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред 'рдереНрд░реЛ' рдХреАрд╡рд░реНрдб рдЧрд╛рдпрдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдирдпрд╛ InvalidOperationException (FOO) рдлреЗрдВрдХреЗрдВред ProjectBuildManager.cs 61

 ~ProjectBuildManager() { if (_batchBuildStarted) { new InvalidOperationException("ProjectBuilderManager.Stop() not called."); } } 

рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд┐рддрд┐ рдХреЗ рддрд╣рдд, рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдЬрдмрдХрд┐ рдЕрдкрд╡рд╛рдж рд╡рд╕реНрддреБ рдмрд╕ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдереНрд░реЛ рдХреАрд╡рд░реНрдб рдЫреВрдЯ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдХреЛрдб рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:

 ~ProjectBuildManager() { if (_batchBuildStarted) { throw new InvalidOperationException("ProjectBuilderManager.Stop() not called."); } } 

рд╕реА # рдореЗрдВ рд╡рд┐рдзреНрд╡рдВрд╕рдХ рдХреЗ рд╕рд╛рде рдореБрджреНрджрд╛ рдФрд░ рдЙрдирд╕реЗ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛ рдПрдХ рдФрд░ рдЪрд░реНрдЪрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

рдЬрдм рдкрд░рд┐рдгрд╛рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ

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

V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред GoToDefinitionCommandHandler.cs 62

 internal bool TryExecuteCommand(....) { .... using (context.OperationContext.AddScope(....)) { if (....) { return true; } } .... return true; } 

рд╡рд┐рдзрд┐ TryExecuteCommand рд╕рд╣реА рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдкрд░, рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдХреБрдЫ рдЪреЗрдХ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИред

 public bool ExecuteCommand(....) { .... if (caretPos.HasValue && TryExecuteCommand(....)) { .... } .... } 

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

рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЪреЗрддрд╛рд╡рдиреА:

  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред CommentUncommentSelectionCommandHandler.cs 86
  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред RenameTrackingTaggerProvider.RenameTrackingCommitter.cs 99
  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред JsonRpcClient.cs 138
  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред AbstractFormatEngine.OperationApplier.cs 164
  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рдорд╛рди' рдореВрд▓реНрдп рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИред TriviaDataFactory.CodeShapeAnalyzer.cs 254
  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред ObjectList.cs 173
  • V3009 рдпрд╣ рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ 'рд╕рд╣реА' рдХреЗ рд╕рдорд╛рди рдорд╛рди рджреЗрддреА рд╣реИред ObjectList.cs 249

рдЧрд▓рдд рдЪреАрдЬ рдХреА рдЬрд╛рдВрдЪ рдХреА

V3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рдорд╛рди', 'valueToSerialize' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред RoamingVisualStudioProfileOptionPersister.cs 277

 public bool TryPersist(OptionKey optionKey, object value) { .... var valueToSerialize = value as NamingStylePreferences; if (value != null) { value = valueToSerialize.CreateXElement().ToString(); } .... } 

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

 var valueToSerialize = value as NamingStylePreferences; if (valueToSerialize != null) { value = valueToSerialize.CreateXElement().ToString(); } 

рдПрдХ рдФрд░ рд╕рдорд╛рди рдмрдЧ:

V3019 рд╕рдВрднрд╡рддрдГ рдПрдХ рдЧрд▓рдд рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рддреБрд▓рдирд╛ 'рдХреАрд╡рд░реНрдб' рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдмрд╛рдж рдХреА рдЬрд╛рддреА рд╣реИред рдЪрд░ 'рдХреЙрд▓рдорд╕реНрдЯреЗрдЯ', 'рдХреЙрд▓рдорд╕реНрдЯреИрдЯ 2' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред StreamingFindUsagesPresenter.cs 181

 private void SetDefinitionGroupingPriority(....) { .... foreach (var columnState in ....) { var columnState2 = columnState as ColumnState2; if (columnState?.Name == // <= StandardTableColumnDefinitions2.Definition) { newColumns.Add(new ColumnState2( columnState2.Name, // <= ....)); } .... } .... } 

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

рд╢рд╛рдпрдж, рд╕реНрддрдореНрдн рдХреЗ рдмрдЬрд╛рдп ??ред рдХреНрдпрд╛ рд▓реЗрдЦрдХ рд╕реНрддрдореНрдн рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ ? 2 .рдирд╛рдо ред рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рджреЛрд╖рдкреВрд░реНрдг рдЪрд░ рдирд╛рдореЛрдВ рдХреЗ рдХреЙрд▓рдорд╕реНрдЯреЗрдЯ рдФрд░ рдХреЙрд▓рдорд╕реНрдЯреИрдЯ 2 рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдирд┐рд░рд░реНрдердХ рдЬрд╛рдБрдЪ

рдХрд╛рдлреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА (100 рд╕реЗ рдЕрдзрд┐рдХ) рдЧреИрд░-рд░рд╛рдЬрдиреАрддрд┐рдХ рдкрд░ рдЬрд╛рд░реА рдХреА рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрд╛рдВрдЪ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд┐рд░реНрдорд╛рдгред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'navInfo == null' рд╣рдореЗрд╢рд╛ рдЭреВрдареА рд╣реЛрддреА рд╣реИред AbstractSyncClassViewCommandHandler.cs 101

 public bool ExecuteCommand(....) { .... IVsNavInfo navInfo = null; if (symbol != null) { navInfo = libraryService.NavInfoFactory.CreateForSymbol(....); } if (navInfo == null) { navInfo = libraryService.NavInfoFactory.CreateForProject(....); } if (navInfo == null) // <= { return true; } .... } public IVsNavInfo CreateForSymbol(....) { .... return null; } public IVsNavInfo CreateForProject(....) { return new NavInfo(....); } 

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмрдЧ рди рд╣реЛред рдпрд╣ рдПрдХ рдЯреЛ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ "рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрдХреНрд╢реБрдЕрд▓ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ + рдбреЗрдЯрд╛рдлреНрд▓реЛ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕" рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░рдг рд╣реИред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреВрд╕рд░реА рдЬрд╛рдВрдЪ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ navInfo == рдЕрд╢рдХреНрдд рдирд┐рд░рд░реНрдердХ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ navInfo рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рдореВрд▓реНрдп рд╣реИ, рдЙрд╕реЗ рдкреБрд╕реНтАНрддрдХрд╛рд▓рдп рд╕реЗрд╡рд╛рд░рдд рд╕реЗ рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛ред Service.NavInfoFactory.CreateForProject , рдЬреЛ NavInfo рд╡рд░реНрдЧ рдХреА рдПрдХ рдирдИ рд╡рд╕реНтАНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рд╡рд╛рдкрд╕реА рдХрд░реЗрдЧрд╛ред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдпрд╣ рдЕрд╢рдХреНрдд рдирд╣реАрдВ рд▓реМрдЯреЗрдЧрд╛ред рдпрд╣рд╛рдВ рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рдкрд╣рд▓реЗ рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреНрдпреЛрдВ рдЬрд╛рд░реА рдирд╣реАрдВ рдХреА рд╣реИ == рдЕрд╢рдХреНрдд ? рдХреБрдЫ рдХрд╛рд░рдг рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдкреНрд░рддреАрдХ рдЪрд░ рд╢реВрдиреНрдп рд╣реИ , рддреЛ navInfo рдорд╛рди рдПрдХ рдЕрд╢рдХреНрдд рд╕рдВрджрд░реНрдн рднреА рд░рд╣реЗрдЧрд╛ред рджреВрд╕рд░реА рдмрд╛рдд, рднрд▓реЗ рд╣реА navInfo рдХреЛ реВрдкреНрд╕ рд╕рд░реНрд╡рд┐рд╕ рд╕реЗ рдореВрд▓реНрдп рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ erviceService.NavInfoFactory.CreateForSymbol , рдпрд╣ рдорд╛рди рднреА рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкрд╣рд▓рд╛ рдЪреЗрдХ navInfo == рдирд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЕрдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдБрдЪ

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

рдЖрдЗрдП рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВред

V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд░рд┐рд╕реАрд╡рд░' рдСрдмреНрдЬреЗрдХреНрдЯ Binder_Expressions.cs 7770 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рд░рд┐рд╕реАрд╡рд░' рдСрдмреНрдЬреЗрдХреНрдЯ Binder_Expressions.cs 7776 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

 private BoundExpression GetReceiverForConditionalBinding( ExpressionSyntax binding, DiagnosticBag diagnostics) { .... BoundExpression receiver = this.ConditionalReceiverExpression; if (receiver?.Syntax != // <= GetConditionalReceiverSyntax(conditionalAccessNode)) { receiver = BindConditionalAccessReceiver(conditionalAccessNode, diagnostics); } var receiverType = receiver.Type; // <= if (receiverType?.IsNullableType() == true) { .... } receiver = new BoundConditionalReceiver(receiver.Syntax, 0, // <= receiverType ?? CreateErrorType(), hasErrors: receiver.HasErrors) // <= { WasCompilerGenerated = true }; return receiver; } 

рд░рд┐рд╕реАрд╡рд░ рдЪрд░ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рд╢рд░реНрдд рдирд▓ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рд╕рд┐рдВрдЯреИрдХреНрд╕ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд░рд┐рд╕реАрд╡рд░ рд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрдХ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 private BoundExpression GetReceiverForConditionalBinding( ExpressionSyntax binding, DiagnosticBag diagnostics) { .... BoundExpression receiver = this.ConditionalReceiverExpression; if (receiver?.Syntax != GetConditionalReceiverSyntax(conditionalAccessNode)) { receiver = BindConditionalAccessReceiver(conditionalAccessNode, diagnostics); } var receiverType = receiver?.Type; if (receiverType?.IsNullableType() == true) { .... } receiver = new BoundConditionalReceiver(receiver?.Syntax, 0, receiverType ?? CreateErrorType(), hasErrors: receiver?.HasErrors) { WasCompilerGenerated = true }; return receiver; } 

рд╣рдореЗрдВ рдпрд╣ рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЕрдкрдиреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЕрдиреНрдп рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ:

  • V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ ''TType' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред SyntaxGeneratorExtensions_Negate.cs 240
  • V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐' рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирд╕рд┐рдирдЯреИрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕.рдПрд╕рд╕реА 349 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • V3042 рд╕рдВрднрд╛рд╡рд┐рдд NullReferenceExceptionред '?' рдФрд░ '' рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ 'рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐' рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирд╕рд┐рдирдЯреИрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕рдПрдХреНрд╕.рдПрд╕рд╕реА 349 рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

рд╣рд╛рд▓рдд рдореЗрдВ рддреНрд░реБрдЯрд┐

V3057 ' рд╕рдмреНрд╕реНрдЯреНрд░рд┐рдВрдЧ ' рдлрд╝рдВрдХреНрд╢рди '-1' рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрдмрдХрд┐ рдЧреИрд░-рдирдХрд╛рд░рд╛рддреНрдордХ рдорд╛рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред рджреВрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реЗрдВред CommonCommandLineParser.cs 109

 internal static bool TryParseOption(....) { .... if (colon >= 0) { name = arg.Substring(1, colon - 1); value = arg.Substring(colon + 1); } .... } 

рдпрджрд┐ рдХреЛрд▓рди рд╡реИрд░рд┐рдПрдмрд▓ 0 рд╣реИ, рдЬреЛ рдХреЛрдб рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдареАрдХ рд╣реИ, рддреЛ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдмрдЯрд╛рдЗрдЯрд▓ рд╡рд┐рдзрд┐ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧреАред рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 if (colon > 0) 

рд╕рдВрднрд╡ рдЯрд╛рдЗрдкреЛ

V3065 рдкреИрд░рд╛рдореАрдЯрд░ 't2' рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред CSharpCodeGenerationHelpers.cs 84

 private static TypeDeclarationSyntax ReplaceUnterminatedConstructs(....) { .... var updatedToken = lastToken.ReplaceTrivia(lastToken.TrailingTrivia, (t1, t2) => { if (t1.Kind() == SyntaxKind.MultiLineCommentTrivia) { var text = t1.ToString(); .... } else if (t1.Kind() == SyntaxKind.SkippedTokensTrivia) { return ReplaceUnterminatedConstructs(t1); } return t1; }); .... } 

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

рдЕрд╕рд╛рд╡рдзрд╛рдиреА

V3083 рдЗрд╡реЗрдВрдЯ 'TagsChanged', NullReferenceException рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрдиUpdater.Tagger.cs 37

 public void OnTextBufferChanged() { if (PreviewUpdater.SpanToShow != default) { if (TagsChanged != null) { var span = _textBuffer.CurrentSnapshot.GetFullSpan(); TagsChanged(this, new SnapshotSpanEventArgs(span)); // <= } } } 

TagsChanged рдШрдЯрдирд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдЕрд╢рдХреНрдд рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдФрд░ рдШрдЯрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдлрд┐рд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рдСрдкрд░реЗрд╢рди рдЕрдЧрд░ рдШрдЯрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ "рдЕрд╕рд╛рд╡рдзрд╛рдиреА" рдХрд╣рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рдЕрдиреНрдп рдЬрдЧрд╣реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 private void OnTrackingSpansChanged(bool leafChanged) { var handler = TagsChanged; if (handler != null) { var snapshot = _buffer.CurrentSnapshot; handler(this, new SnapshotSpanEventArgs(snapshot.GetFullSpan())); } } 

рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реИрдВрдбрд▓рд░ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред OnTextBufferChanged рд╡рд┐рдзрд┐ рдореЗрдВ , рдХрд┐рд╕реА рдХреЛ рдШрдЯрдирд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрди рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдЕрдВрддрд░реНрд╡рд┐рд░реЛрдзреА рдкрд░реНрд╡рддрдорд╛рд▓рд╛

рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ V3092 рд░реЗрдВрдЬ рдЪреМрд░рд╛рд╣реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдЕрдЧрд░ (A> 0 && A <5) {...} рдФрд░ рдпрджрд┐ (A> 3 && A <9) {...}ред ILBuilderEmit.cs 677

 internal void EmitLongConstant(long value) { if (value >= int.MinValue && value <= int.MaxValue) { .... } else if (value >= uint.MinValue && value <= uint.MaxValue) { .... } else { .... } } 

рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдирд╛рдо рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рдЗрд╕ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

 internal void EmitLongConstant(long value) { if (value >= -2147483648 && value <= 2147483648) { .... } else if (value >= 0 && value <= 4294967295) { .... } else { .... } } 

рд╢рд╛рдпрдж, рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рддрд┐ рдЕрдЬреАрдм рджрд┐рдЦрддреА рд╣реИред рдЗрд╕рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ ( рдФрд░ рдпрджрд┐ ) рдХреЗрд╡рд▓ 2147483648 + 1 рд╕реЗ 4294967295 рд░реЗрдВрдЬ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрд╕реА рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рдПрдХ рдФрд░ рдЬреЛрдбрд╝реЗ:

  • рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ V3092 рд░реЗрдВрдЬ рдЪреМрд░рд╛рд╣реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдЕрдЧрд░ (A> 0 && A <5) {...} рдФрд░ рдпрджрд┐ (A> 3 && A <9) {...}ред LocalRewriter_Literal.cs 109
  • рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рднреАрддрд░ V3092 рд░реЗрдВрдЬ рдЪреМрд░рд╛рд╣реЗ рд╕рдВрднрд╡ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг: рдЕрдЧрд░ (A> 0 && A <5) {...} рдФрд░ рдпрджрд┐ (A> 3 && A <9) {...}ред LocalRewriter_Literal.cs 66

рдЕрд╢рдХреНрдд (рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдХрдореА) рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ

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

V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'displayName' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 498, 503. рдлреНрдпреВрдЬрдирдПрдПрд╕рдПрд╕рдбрд┐рдореЗрдиреНрдбрд┐рдЯреА.рдПрд╕рд╕реА 498

 internal static IAssemblyName ToAssemblyNameObject(string displayName) { if (displayName.IndexOf('\0') >= 0) { return null; } Debug.Assert(displayName != null); .... } 

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреНрд░реБрдЯрд┐ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред

V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'scriptArgsOpt' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 321, 325. рдХреЙрдордирдХреЙрдордирд▓рд╛рдЗрдирдкреИрд░ред 321

 internal void FlattenArgs(...., List<string> scriptArgsOpt, ....) { .... while (args.Count > 0) { .... if (parsingScriptArgs) { scriptArgsOpt.Add(arg); // <= continue; } if (scriptArgsOpt != null) { .... } .... } } 

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЛ рдХрд┐рд╕реА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рджреЗрдиреЗ рджреЗрдВ:

 internal void FlattenArgs(...., List<string> scriptArgsOpt, ....) { .... while (args.Count > 0) { .... if (parsingScriptArgs) { scriptArgsOpt?.Add(arg); continue; } if (scriptArgsOpt != null) { .... } .... } } 

рд░реЛрд╕рд▓рд┐рди рдХреЛрдб рдореЗрдВ, 15 рдФрд░ рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдереАрдВ:

  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'LocalFunctions' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 289, 317. ControlFlowGraphBuilder.RegionBuilder.cs 289
  • V3095 'рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди .verloadResolutionResult' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╡рд╣ рдЕрд╢рдХреНрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 579, 588. рдмрд╛рдЗрдВрдбрд░_рдЗрдирд╡реЛрдХреЗрд╢рди.рдХреЗ 579
  • V3095 'рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рдиред рдореАрдереЛрдбрдЧреНрд░реБрдк' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реВрдиреНрдп рд╕реЗ рдкрд╣рд▓реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 592, 621. рдмрд╛рдЗрдВрдбрд░_ рдЗрдирд╡реЛрдХреЗрд╢рди.рдХреЗ 592
  • V3095 рдЕрд╢рдХреНрдд рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдЫреБрдЖ-рдЫреАрдВрдЯрд╛ Logger' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 111, 126. CSharpCompiler.cs 111
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'newExceptionRegionsOpt' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 736, 743. AbstractEditAndContinueAnalyzer.cs 736
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдкреНрд░рддреАрдХ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 422, 427. AbstractGenerateConstructorService.Editor.cs 422
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ '_state.BaseTypeOrInterfaceOpt' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 132, 140ред AbstractGenerateTypeService.GenerateNamedType.cs 132
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдПрд▓рд┐рдореЗрдВрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 232, 233. рдкреНрд░реЛрдЬреЗрдХреНрдЯрдпреВрд▓реЗрдЯ .cs 232
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рднрд╛рд╖рд╛' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 22, 28. ExportCodeCleanupProvider.cs 22
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рд╕рджрд╕реНрдп рдЯрд╛рдЗрдк' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрди: 183, 184. рд╕рд┐рдВрдЯреИрдХреНрд╕рдЬреЗрдирд░реЗрдЯрд░рдПрдХреНрд╕реНрдЯреЗрдВрд╢рди_рдХреНрд░рд┐рдПрдЯрдЧреЗрдЯ рд╣реИрд╢рдХреЛрдбрдореИрдереЛрдбреНрд╕ред 183
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдорд╛рдиреНрдпрдЯрд╛рдЗрдкрдбрдХреНрд▓реЗрд░реЗрд╢рди' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд░реЗрдЦрд╛рдПрдБ: 223, 228. рд╕рд┐рдВрдЯреЗрдХреНрд╕рдЯреНрд░реАрдХреНрд╕реНрдЯреЗрдиреНрд╢рдиреНрд╕.cs 223
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рдЯреЗрдХреНрд╕реНрдЯ' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 376, 385. MSBuildWorkspace.cs 376
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'nameOrMemberAccessExpression' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 206, 223. CSharpGenerateTypeService.cs 206
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'simpleName' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 83, 85. CSharpGenerateMethodService.cs 83
  • V3095 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 'рд╡рд┐рдХрд▓реНрдк' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 23, 28. OptionKey.cs 23

рдЖрдЗрдП V3105 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣рд╛рдВ рд╕рд╢рд░реНрдд рдирд▓ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЧреЗ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдЬрд╛рдБрдЪ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рджреЛ рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдБ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рджрд░реНрд╢рд╛рддреА рд╣реИрдВ:

V3105 рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж 'documentId' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред CodeLensReferencesService.cs 138

V3105 рд╢реВрдиреНрдп-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж 'documentId' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред CodeLensReferencesService.cs 139

 private static async Task<ReferenceLocationDescriptor> GetDescriptorOfEnclosingSymbolAsync(....) { .... var documentId = solution.GetDocument(location.SourceTree)?.Id; return new ReferenceLocationDescriptor( .... documentId.ProjectId.Id, documentId.Id, ....); } 

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

 return new ReferenceLocationDescriptor( .... documentId?.ProjectId.Id, documentId?.Id, ....); 

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рднреА рд╢реВрдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдХреЛрдб рдореЗрдВ рдЕрдиреНрдп рд╕рдорд╛рди рддреНрд░реБрдЯрд┐рдпрд╛рдВ:

  • V3105 'рдкреНрд░рддреАрдХ' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред SymbolFinder_Hierarchy.cs 44
  • V3105 'рдкреНрд░рддреАрдХ' рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрд╢рдХреНрдд-рд╕рд╢рд░реНрдд рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред NullReferenceException рд╕рдВрднрд╡ рд╣реИред SymbolFinder_Hierarchy.cs 51

рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдФрд░ рдХреЛрд╖реНрдардХ

V3123 рд╢рд╛рдпрдж '?:' рдСрдкрд░реЗрдЯрд░ рдЕрдкреЗрдХреНрд╖рд╛ рд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдиреНрдп рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдХрдо рд╣реИред Edit.cs 70

 public bool Equals(Edit<TNode> other) { return _kind == other._kind && (_oldNode == null) ? other._oldNode == null : _oldNode.Equals(other._oldNode) && (_newNode == null) ? other._newNode == null : _newNode.Equals(other._newNode); } 

рд░рд┐рдЯрд░реНрди рдмреНрд▓реЙрдХ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдорд╛рди рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ _kind == other._kin d рд╣реЛрдЧреА, (рдЗрд╕ рдХрд╛рд░рдг рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рдж рдПрдХ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╣реИ), рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╢рд░реНрддреЛрдВ рдХреЗ рдмреНрд▓реЙрдХ " ? " рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╣рд▓реА рд╕реНрдерд┐рддрд┐ _kind == other._kind && (_oldNode == null) рд╣реИ ред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рдФрд░& рдореЗрдВ рдСрдкрд░реЗрдЯрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ " ? "ред рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдП "" ? рдХреЛрд╖реНрдардХ рдореЗрдВ:

 return _kind == other._kind && ((_oldNode == null) ? other._oldNode == null : _oldNode.Equals(other._oldNode)) && ((_newNode == null) ? other._newNode == null : _newNode.Equals(other._newNode)); 

рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рдИ рдЧрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

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

рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЬреЛ рдореИрдВрдиреЗ рд░реЛрдЬрд▓рд┐рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛрдб (2,770,000 рд▓рд╛рдЗрдиреЛрдВ) рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рдпрд╛, рдпрд╣ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдПрдВрдбреНрд░реА рдиреЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛, рдореИрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рддреИрдпрд╛рд░ рд╣реВрдВред

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

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

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


All Articles