
рдЬрдм рд╣рдордиреЗ .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Azure SDK рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕реБрдЦрдж рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рдереЗред "рдХреЛрдб рдХреА рд╕рд╛рдврд╝реЗ рддреАрди рд▓рд╛рдЦ рд▓рд╛рдЗрдиреЗрдВ," рд╣рдо рдХрд╣рддреЗ рд░рд╣реЗ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрдиред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд┐рд╖реНрдХрд░реНрд╖ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд╢ рдФрд░ рдЕрд▓реИрдХ! рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЪрд╛рд▓рд╛рдХ рдмрди рдЧрдИред рддреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдХреНрдпрд╛ рдЙрддреНрд╕рд╛рд╣ рдерд╛ рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ - рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдкрдврд╝реЗрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдореИрдВ рдЕрдкрдиреЗ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рдмрд╛рдж рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдЬреЛ рдХрд┐ Microsoft Azure:
Azure PowerShell: Mostly Harmless рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдмрд╛рд░ рдореИрдВ рд╡рд┐рд╡рд┐рдз рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдареЛрд╕ рд╕рдВрдЦреНрдпрд╛ рдкрд░ рджрд╛рдВрд╡ рд▓рдЧрд╛ рд░рд╣рд╛ рдерд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЖрдХрд╛рд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рдкрд╣рд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рд╡рди-рдЯрд╛рдЗрдо рдЪреЗрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рднреА, рдпрджрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд░рд┐рдЪрдп рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдХреЛрдИ рднреА рдЕрдкрдиреЗ рдмрдЯ рдХреЛ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рддрдХрдиреАрдХреА рдЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЪреЗрддрд╛рд╡рдиреА рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ рдард┐рдХрд╛рдиреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдПрдирд╛рд▓рд╛рдЗрдЬрд░ рдЪрд▓рд╛рддреЗ рд╕рдордп рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдирд╛ рдареАрдХ рд╣реИред рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╣рдо рдЕрдиреБрд╕рдВрдзрд╛рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣рдореЗрд╢рд╛ рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд┐рдореНрди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рд╣реЛрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдБрдХрд┐, .NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Azure SDK рддреБрд░рдВрдд рдПрдХ рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдмрд┐рд╕реНрддрд░ рд╕рд╛рдмрд┐рдд рд╣реБрдЖред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕рдХреЗ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдЖрдХрд╛рд░ рдиреЗ рднреА рдорджрдж рдирд╣реАрдВ рдХреА, рдмрд▓реНрдХрд┐ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдБрдХрдбрд╝реЗ рд╣реИрдВ:
- .cs рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ (рдкрд░реАрдХреНрд╖рдг рд╕рд╣рд┐рдд рдирд╣реАрдВ): 16,500
- рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЙрд▓реНрдпреВрд╢рдВрд╕ (.sln): 163
- рдХреЛрдб рдХреА рдЧреИрд░-рдЦрд╛рд▓реА рд▓рд╛рдЗрдиреЗрдВ: 3 462 000
- рдЗрди рдСрдЯреЛ рдЬрдирд░реЗрдЯреЗрдб рдореЗрдВ рд╕реЗ: рд▓рдЧрднрдЧ 3,300,000
- рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред
рд▓рдЧрднрдЧ 95% рдХреЛрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕ рдХреЛрдб рдХрд╛ рдмрд╣реБрдд рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрдорддреМрд░ рдкрд░ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рдФрд░ рдмреЗрдХрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрддрд╛рд░реНрдХрд┐рдХ (рдХрдо рд╕реЗ рдХрдо рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ) рдФрд░ рдирд┐рд░рд░реНрдердХ рдХреЛрдб рд╣реИред рдЗрд╕рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред
рд╕рднреА резремрей рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдХреЛрдб рдХреА рд╕рднреА рдорд╛рддреНрд░рд╛ "рд╢реАрд░реНрд╖ рдкрд░ рдЪреЗрд░реА" рдмрди рдЧрдИред рд╢реЗрд╖ рдХреЛрдб (рдСрдЯреЛ-рдЬрдирд░реЗрдЯ рдирд╣реАрдВ) рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдПред рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорджрдж рдХреА рдЧрдИ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреЛрдб рдХреЛ рд╕рдорд╛рдзрд╛рди рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде "<рд╕рдорд╛рдзрд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛> \ src \ Generated" рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рддреНрдпреЗрдХ .cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЯреИрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯрд┐рдкреНрдкрдгреА рд╣реИ
<auto-generate> :
рдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреИрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджрд╕ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪрдпрдирд┐рдд рдСрдЯреЛ-рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреАред рдореИрдВ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╢реЗрд╖ "рдИрдорд╛рдирджрд╛рд░" рдХреЛрдб рдХреА рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЕрднреА рднреА рдЬреЛ рдХреБрдЫ рднреА рдерд╛ рдЙрд╕рд╕реЗ рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдЗрд╕ рдмрд╛рд░ рдореИрдВ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЗ рдХреЛрдбреНрд╕ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реВрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдкрд░ рд╕рдореВрд╣рд┐рдд рдХрд░реВрдБрдЧрд╛ рдЬрд┐рдирдореЗрдВ рд╡реЗ рдкрд╛рдП рдЧрдП рд╣реИрдВред
рдЦреИрд░, рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдВрдиреЗ .NET рдХреЛрдб рдХреЗ рд▓рд┐рдП Azure SDK рдореЗрдВ рдХреНрдпрд╛ рдкрд╛рдпрд╛ред
Microsoft.Azure.Management.Advisor
рдпрд╣ рдХрдИ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдЯреЛ-рдЬрдирд░реЗрдЯ рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рджрд░реНрдЬрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рдБрдЪ рдХреАред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪреЗрддрд╛рд╡рдиреА рд╕рдорд╛рди рдереА, рдФрд░, рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ, рдмреЗрдХрд╛рд░ред рдпрд╣рд╛рдБ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рд╕рд╛рдЦ! = рдЕрд╢рдХреНрдд' рд╣рдореЗрд╢рд╛ рд╕рдЪ рд╣реИред AdvisorManagementClient.cs 204
рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдХреЛрдб рдирд┐рд░рд░реНрдердХ рд╣реИ рдФрд░
рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓реНрд╕! = рдирд▓ рдЬрд╛рдБрдЪ рд╡реНрдпрд░реНрде рд╣реИред рдлрд┐рд░ рднреА, рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдпрд╣рд╛рдВ рдХреЛрдИ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВред
V3022 рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ '_queryParameters.Count> 0' рд╣рдореЗрд╢рд╛ рдЧрд▓рдд рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдирдСрдкрд░реЗрд╢рди .cs 871
рдлрд┐рд░, рдпрд╣ рдПрдХ рдЕрддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░реНрдорд╛рдг рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдХреЛрдб рд▓реЗрдЦрдХ рдирд╡ рдирд┐рд░реНрдорд┐рдд
рдЦрд╛рд▓реА рд╕реВрдЪреА рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕рдм рд╕рд╣реА рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЪреЗрдХ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реВрдЪреА рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдиреНрдп рд╕рдВрдЧреНрд░рд╣ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЪреЗрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореВрд▓реНрдп-рд░рд╣рд┐рдд рд╣реЛрдЧрд╛ред рдлрд┐рд░ - рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд╛рд╡рд╛ рдирд╣реАрдВ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕рдХреА рдЙрддреНрдкрддреНрддрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред
рдкреНрд░рддреНрдпреЗрдХ рдСрдЯреЛ-рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕реИрдХрдбрд╝реЛрдВ рд╕рдорд╛рди рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреА рдЧрдИ рд╣реИрдВред рдЙрдирдХреА рдирд┐рд░рд░реНрдердХрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдкрд░ рдЖрдЧреЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЕрдЧрд▓рд╛, "рд╕рд╛рдорд╛рдиреНрдп" рдХреЛрдб рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
Azure.Core
V3001 рдмрд╛рдпреАрдВ рдУрд░ рдФрд░ '<' рдСрдкрд░реЗрдЯрд░ рдХреЗ рджрд╛рдИрдВ рдУрд░ рд╕рдорд╛рди рдЙрдк-рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ 'рдмрдлрд░.рд▓рд┐рдлреНрдЯ' рд╣реИрдВред AzureBaseBuffersExtensions.cs 30
public static async Task WriteAsync(...., ReadOnlyMemory<byte> buffer, ....) { byte[]? array = null; .... if (array == null || buffer.Length < buffer.Length)
рд╣рд╛рд▓рдд рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╢рд╛рдпрдж рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдереАред рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрд┐
рдмрдлрд░ рдХреЛ
рд╕рд░рдгреА рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЪреЗрдХ рдХреЛ рдРрд╕рд╛ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
if (array == null || array.Length < buffer.Length)
рд╡реИрд╕реЗ рднреА, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╣рдореЗрд╢рд╛ рдХрд╣рддрд╛ рд╣реВрдВ, рдХреЛрдб рд▓реЗрдЦрдХ рдХреЛ рдРрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред
V3083 рдИрд╡реЗрдВрдЯ '_onChange', NullReferenceException рдХрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЖрд╣реНрд╡рд╛рди рд╕рдВрднрд╡ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЛ рдШрдЯрдирд╛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред ClientOptionsMonitor.cs 44
private event Action<TOptions, string> _onChange; .... private void InvokeChanged(....) { .... if (_onChange != null) { _onChange.Invoke(options, name); } }
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рддреНрд░реБрдЯрд┐ рдпрд╣рд╛рдБ рд╣реИред
рдЕрд╢рдХреНрдд рдФрд░ рдЙрд╕рдХреЗ рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдЙрдкрднреЛрдХреНрддрд╛ рдШрдЯрдирд╛ рд╕реЗ рд╣рдЯрд╛ рд╕рдХрддрд╛ рд╣реИред рддрдм
_onChange рдЪрд░
рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
private void InvokeChanged(....) { .... _onChange?.Invoke(options, name); }
Azure.Messaging.EventHubs
V3080 рд╕рдВрднрд╡
рдЕрд╢рдХреНрддрддрд╛ ред 'EventPropertyValue' рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред AmqpMessageConverter.cs 650
private static bool TryCreateEventPropertyForAmqpProperty( object amqpPropertyValue, out object eventPropertyValue) { eventPropertyValue = null; .... switch (GetTypeIdentifier(amqpPropertyValue)) { case AmqpProperty.Type.Byte: .... case AmqpProperty.Type.String: eventPropertyValue = amqpPropertyValue; return true; .... } .... switch (amqpPropertyValue) { case AmqpSymbol symbol: eventPropertyValue = ....; break; case byte[] array: eventPropertyValue = ....; break; case ArraySegment<byte> segment when segment.Count == segment.Array.Length: eventPropertyValue = ....; break; case ArraySegment<byte> segment: .... eventPropertyValue = ....; break; case DescribedType described when (described.Descriptor is AmqpSymbol): eventPropertyValue = ....; break; default: var exception = new SerializationException( string.Format(...., eventPropertyValue.GetType().FullName));
рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рджрд┐рдП рдЧрдП рдХреЛрдб рдЯреБрдХрдбрд╝реЗ рдореЗрдВ
EventPropertyValue рдЪрд░ рдорд╛рди рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдЪрд░ рдХреЛ рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ
рд░рд┐рдХреНрдд рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд▓реЗ
рд╕реНрд╡рд┐рдЪ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рдЪрд░ рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╡рд┐рдзрд┐ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреА рд╣реИред рджреВрд╕рд░реЗ
рд╕реНрд╡рд┐рдЪ рдмреНрд▓реЙрдХ рдореЗрдВ рдХрдИ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЪрд░ рдХреЛ рдПрдХ рдирдпрд╛ рдорд╛рди рднреА рдорд┐рд▓рддрд╛ рд╣реИред рдЬрдмрдХрд┐
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреНрд▓реЙрдХ рдореЗрдВ,
EventPropertyValue рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд╛рдВрдЪ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдПрдХ рдЧрд▓рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рд╕рдордп рдЪрд░
рд╢реВрдиреНрдп рд╣реИ ред
V3066 'EventHubConsumer' рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░: 'partitionId' рдФрд░ 'ConsumerGroup' рдХреЛ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рдХреНрд░рдоред TrackOneEventHubClient.cs 394
public override EventHubConsumer CreateConsumer(....) { return new EventHubConsumer ( new TrackOneEventHubConsumer(....), TrackOneClient.EventHubName, partitionId,
EventHubConsumer рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рддреАрд╕рд░реЗ рдФрд░ рдЪреМрдереЗ рддрд░реНрдХ рдХреЗ рднреНрд░рдорд┐рдд рдХреНрд░рдо рдкрд░ рд╕рдВрджреЗрд╣ рдХрд┐рдпрд╛ред рддреЛ рдЪрд▓рд┐рдП рдЗрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдШреЛрд╖рдгрд╛ рдХреЛ рджреЗрдЦреЗрдВ:
internal EventHubConsumer(TransportEventHubConsumer transportConsumer, string eventHubName, string consumerGroup, // <= 3 string partitionId, // <= 4 EventPosition eventPosition, EventHubConsumerOptions consumerOptions, EventHubRetryPolicy retryPolicy) { .... }
рджрд░рдЕрд╕рд▓, рддрд░реНрдХ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХреИрд╕реЗ рд╣реБрдИред рд╢рд╛рдпрдж, рдЧрд▓рдд рдХреЛрдб рдлреЙрд░реНрдореЗрдЯрд┐рдВрдЧ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред рдмрд╕
EventHubConsumer рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдШреЛрд╖рдгрд╛ рдкрд░ рдПрдХ рдФрд░ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрд╣рд▓рд╛
TransportConsumer рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд░реНрдЧ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд▓рд╛рдЗрди рдкрд░ рд╣реИ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐
рдкрд╛рд░реНрдЯреАрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рддреАрд╕рд░реЗ рд╕реНрдерд╛рди рдкрд░ рд╣реИ, рди рдХрд┐ рдЪреМрдереЗ (рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореВрд▓ рдХреЛрдб рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ) ред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдЕрдиреБрдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛрдб рдХреЛ рдирд┐рдореНрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░реВрдВрдЧрд╛:
internal EventHubConsumer ( TransportEventHubConsumer transportConsumer, string eventHubName, string consumerGroup, string partitionId, EventPosition eventPosition, EventHubConsumerOptions consumerOptions, EventHubRetryPolicy retryPolicy) { .... }
Azure.Storage
V3112 рдЗрд╕реА рддрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдХреЗ рднреАрддрд░ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдпрддрд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рд╣реИ 'ContentLanguage == other.ContentEncoding'ред BlobSasBuilder.cs 410
public struct BlobSasBuilder : IEquatable<BlobSasBuilder> { .... public bool Equals(BlobSasBuilder other) => BlobName == other.BlobName && CacheControl == other.CacheControl && BlobContainerName == other.BlobContainerName && ContentDisposition == other.ContentDisposition && ContentEncoding == other.ContentEncoding &&
рдЕрд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╣реБрдИ рдЧрд▓рддреАред рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдРрд╕реА рддреНрд░реБрдЯрд┐ рдвреВрдВрдврдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИред рдпрд╣рд╛рдБ рдХреЛрдб рдХрд╛ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:
.... ContentEncoding == other.ContentEncoding && ContentLanguage == other.ContentLanguage && ....
V3112 рдЗрд╕реА рддрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдХреЗ рднреАрддрд░ рдПрдХ рдЕрд╕рд╛рдорд╛рдиреНрдпрддрд╛ред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рд╣реИ 'ContentLanguage == other.ContentEncoding'ред FileSasBuilder.cs 265
public struct FileSasBuilder : IEquatable<FileSasBuilder> { .... public bool Equals(FileSasBuilder other) => CacheControl == other.CacheControl && ContentDisposition == other.ContentDisposition && ContentEncoding == other.ContentEncoding
рдмрд╣реБрдд рд╕рдорд╛рди рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рд╣реИред рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рджреА рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди рддреНрд░реБрдЯрд┐ рдмрдиреА рд░рд╣реАред
Microsoft.Azure.Batch
V3053 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред 'рдЖрдИрд▓рд┐рд╕реНрдЯ' рдФрд░ 'рд▓рд┐рд╕реНрдЯ' рдХреЗ рд╕рдмреНрд╕реНрдЯреАрдЯреНрдпреВрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред рдкреНрд░реЙрдкрд░реНрдЯреАрдбрд╛рдЯрд╛ред 157
V3053 рдПрдХ рдЕрддреНрдпрдзрд┐рдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред 'рд▓рд┐рд╕реНрдЯ' рдФрд░ 'IReadOnlyList' рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдкреНрд░реЙрдкрд░реНрдЯреАрдбрд╛рдЯрд╛ред 158
public class PropertyData { .... public bool IsTypeCollection => this.Type.Contains("IList") || this.Type.Contains("IEnumerable") || this.Type.Contains("List") ||
рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рд╡реНрдпрд░реНрде рдпрд╛ рдЧрд▓рдд рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рдЪреЗрддрд╛рд╡рдиреА рдЬрд╛рд░реА рдХреАред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "IList" рдХреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж "рд╕реВрдЪреА" рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреА рдЦреЛрдЬ рдмреЗрдорд╛рдиреА рд▓рдЧрддреА рд╣реИред рдпрд╣ рд╕рдЪ рд╣реИ, рдпрд╣ рд╢рд░реНрдд:
this.Type.Contains("IList") || this.Type.Contains("List")
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
this.Type.Contains("List")
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, "IReadOnlyList" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╡реНрдпрд░реНрде рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдПрдХ рдЫреЛрдЯреЗ рд╡рд┐рдХрд▓реНрдк "рд╕реВрдЪреА" рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рдореМрдХрд╛ рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЦреЛрдЬ рд╕рдмреНрд╕рдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рд╕реНрд╡рдпрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдФрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реИрд╕реЗ рднреА, рдХреЗрд╡рд▓ рдХреЛрдб рд▓реЗрдЦрдХ рдХреЛ рджреЛрдиреЛрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕рд╣реА рдХреЛрдб рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рд╣реИред
V3095 'httpRequest.Content.Headers' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдпрд╣ рд╢реВрдиреНрдп рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 76, 79. рдмреИрдЪрдмреИрдбрдХреЗрдЕрд░ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ .cs 76
public override Task ProcessHttpRequestAsync( HttpRequestMessage httpRequest, ....) { .... signature.Append(httpRequest.Content != null && httpRequest.Content.Headers.Contains("Content-Language") ? .... : ....; long? contentLength = httpRequest.Content?.Headers?.ContentLength; .... }
HttpRequest.Content.Headers рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд╛рдБрдЪ рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рд╕рд╢рд░реНрдд рдПрдХреНрд╕реЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
V3125 рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж 'omPropertyData' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреНрд╕: 156, 148ред рдХреЛрдб-рдЬреЗрдирд░реЗрд╢рди рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ редcs 156
private static string GetProtocolCollectionToObjectModelCollectionString( ...., PropertyData omPropertyData, ....) { if (IsMappedEnumPair(omPropertyData?.GenericTypeParameter, ....)) { .... } if (IsTypeComplex(omPropertyData.GenericTypeParameter)) .... }
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рд╕реНрдерд┐рддрд┐ рд╣реИред рдПрдХ рдХреЛрдб рдмреНрд▓реЙрдХ рдореЗрдВ
omPropertyData рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рдХреНрдд рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд╣реБрдВрдЪ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИред рдХреЛрдб рдореЗрдВ рдЖрдЧреЗ, рдпрд╣ рд╕рдВрджрд░реНрдн рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрдХ рдХреЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
V3146 'рдореВрд▓реНрдп' рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд
рдЕрд╢рдХреНрддрддрд╛ ред 'FirstOrDefault' рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЕрд╢рдХреНрдд рдорд╛рди рд▓реМрдЯрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреИрдЪрд╢реЗрдпрд░рдХреЗрдХреНрд░реЗрдбрд┐рдРрдбрд┐рдПрдВрдЯ.рдХреЗрдПрд╕ 127
public override Task ProcessHttpRequestAsync(HttpRequestMessage httpRequest, ....) { .... foreach (string canonicalHeader in customHeaders) { string value = httpRequest.Headers. GetValues(canonicalHeader).FirstOrDefault(); value = value.Replace('\n', ' ').Replace('\r', ' ').TrimStart(); .... } .... }
FirstOrDefault рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░рдг, рдпрджрд┐ рдЦреЛрдЬ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛, рдЬреЛ
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП
рдЕрд╢рдХреНрдд рд╣реИ ред рдорд╛рди рдХреЛ
рдорд╛рди рдЪрд░ рдХреЗ рд▓рд┐рдП рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреЗрдХ рдХреЗ
рд░рд┐рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
foreach (string canonicalHeader in customHeaders) { string value = httpRequest.Headers. GetValues(canonicalHeader).FirstOrDefault(); value = value?.Replace('\n', ' ').Replace('\r', ' ').TrimStart(); .... }
Microsoft.Azure.ServiceBus
V3121 'рдлреНрд▓реИрдЧрд╕' рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЧрдгрди 'рдмреНрд▓реЙрдХрд╢реВрдЯрд┐рдВрдЧ' рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Fx.cs 69
static class Fx { .... public static class Tag { .... [Flags] public enum BlocksUsing { MonitorEnter, MonitorWait, ManualResetEvent, AutoResetEvent, AsyncResult, IAsyncResult, PInvoke, InputQueue, ThreadNeutralSemaphore, PrivatePrimitive, OtherInternalPrimitive, OtherFrameworkPrimitive, OtherInterop, Other, NonBlocking, } .... } .... }
рдЧрдгрди рдХреЛ
рдЭрдВрдбреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рд▓рдЧрд╛рддрд╛рд░ рдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (
рдореЙрдирд┐рдЯрд░рдПрдВрдЯрд░ = 0 ,
рдореЙрдирд┐рдЯрд░рд╡реЗрдЯ = 1 ,
рдореИрдиреБрдЕрд▓рдПрдиреЗрдЯрдИрд╡реЗрдВрдЯ = 2 рдФрд░ рдЗрд╕реА рддрд░рд╣)ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдЬрдм рдЭрдВрдбреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ
рдореЙрдирд┐рдЯрд░рд╡реЗрдЯ (=) |
ManualResetEvent (= 2) , рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ 3 рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рд╛рдВрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
(AutoResetEvent )ред рдпрд╣ рдХреЙрд▓рд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЖ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐
рдмреНрд▓реЙрдХрд┐рдВрдЧрд╕рд┐рдВрдЧ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЭрдВрдбреЗ рд╕рдВрдпреЛрдЬрди (рдмрд┐рдЯ рдлрд╝реАрд▓реНрдб) рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рдЬреЛ рджреЛ рдХреА рд╢рдХреНрддрд┐рдпрд╛рдВ рд╣реИрдВред
[Flags] public enum BlocksUsing { MonitorEnter = 1, MonitorWait = 2, ManualResetEvent = 4, AutoResetEvent = 8, AsyncResult = 16, IAsyncResult = 32, PInvoke = 64, InputQueue = 128, ThreadNeutralSemaphore = 256, PrivatePrimitive = 512, OtherInternalPrimitive = 1024, OtherFrameworkPrimitive = 2048, OtherInterop = 4096, Other = 8192, NonBlocking = 16384, }
V3125 'рд╕рддреНрд░' рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╕рддреНрдпрд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЪреЗрдХ рд▓рд╛рдЗрдиреЗрдВ: 69, 68. AmqpLinkCreator.cs 69
public async Task<Tuple<AmqpObject, DateTime>> CreateAndOpenAmqpLinkAsync() { .... AmqpSession session = null; try {
рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ
рд╕реЗрд╢рди рдЪрд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдПрдмреЙрд░реНрдЯ рдкрджреНрдзрддрд┐ рдХреЛ рд╕рд╢рд░реНрдд рдПрдХреНрд╕реЗрд╕ рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди
GetInnerException рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ
рдмреЗрд╡рдЬрд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ, рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рдмрдЬрд╛рдп
NullReferenceException рдХреЛ рдлреЗрдВрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреЛрдб рддрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
AmqpExceptionHelper.GetClientException рд╡рд┐рдзрд┐
рдЗрдирд░рд╕реЗрдкреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП
рд╢реВрдиреНрдп рдорд╛рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди
рдХрд░рддреА рд╣реИ:
public static Exception GetClientException( Exception exception, string referenceId = null, Exception innerException = null, bool connectionError = false) { .... }
рдЗрд╕рд▓рд┐рдП, рдХреЛрдИ
рд╕рддреНрд░ рдмреБрд▓рд╛рдиреЗ рдкрд░ рдХреЗрд╡рд▓ рд╕рд╢рд░реНрдд рдЕрднрд┐рдЧрдо рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
GetInnerException () :
public async Task<Tuple<AmqpObject, DateTime>> CreateAndOpenAmqpLinkAsync() { .... AmqpSession session = null; try {
рдирд┐рд╖реНрдХрд░реНрд╖
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЖрдХрд╛рд░ рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рд╕рд╛рд░реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рд╕рддрд░реНрдХ рд░рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рдХреБрдЫ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ .NET рдХреЗ рд▓рд┐рдП Azure SDK рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВред рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рджреЛрд╖реЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдкрд░рд┐рдгрд╛рдо рд╕реБрдЦрдж рдЕрдзрд┐рдХ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдЕрдиреБрдЪрд┐рдд рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирдП рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ ред рд▓рдбрд╝рд╛рдИ рдХреЗ рдХреАрдбрд╝реЗ рдореЗрдВ рдЧреБрдб рд▓рдХ!