2019 рдХреЗ рд▓рд┐рдП рд╕реА # рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╢реАрд░реНрд╖ 10 рдХреАрдбрд╝реЗ

рдЪрд┐рддреНрд░ 1

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

рджрд╕рд╡рд╛рдБ рд╕реНрдерд╛рди: "рд╕рднреА рдХреЛ рднреНрд░рдорд┐рдд рдХрд░реЗрдВ"


V3066 30 AdjustCellBorderStyle тАЩрд╡рд┐рдзрд┐: F isFirstDisplayedRowтАЩ рдФрд░ DFirstDisplayedColumn тАЩрдореЗрдВ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдЧрд▓рдд рдХреНрд░рдоред DataGridViewComboBoxCell.cs 1934

protected override void OnMouseMove(DataGridViewCellMouseEventArgs e) { .... dgvabsEffective = AdjustCellBorderStyle( DataGridView.AdvancedCellBorderStyle, dgvabsPlaceholder, singleVerticalBorderAdded, singleHorizontalBorderAdded, isFirstDisplayedRow, // <= isFirstDisplayedColumn); // <= .... } 

" WinForms: рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рд╣реЛрдореНрд╕ " рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдкрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд┐рдо рджреЛ рддрд░реНрдХ рдЙрд▓рдЯ рджрд┐рдП рдЧрдП рдереЗред AdjustCellBorderStyle рдШреЛрд╖рдгрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:

 public virtual DataGridViewAdvancedBorderStyle AdjustCellBorderStyle( DataGridViewAdvancedBorderStyledataGridViewAdvancedBorderStyleInput, DataGridViewAdvancedBorderStyle dataGridViewAdvancedBorderStylePlaceholder, bool singleVerticalBorderAdded, bool singleHorizontalBorderAdded, bool isFirstDisplayedColumn, bool isFirstDisplayedRow) { .... } 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕рд╣реА рд╣реИред рдЕрдХреНрд╕рд░, рдХреБрдЫ рддрд░реНрдХ рдЬрд╛рдирдмреВрдЭрдХрд░ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЪрд░ рд╕реНрд╡реИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмреВрд▓ рдкреНрд░рдХрд╛рд░ рдЪрд░ рднреНрд░рдорд┐рдд рд╣реИрдВред рджреВрд╕рд░реЗ, рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдо рднреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ: рдХреЛрдИ "рд╕реНрд╡реИрдк" рдпрд╛ "рд░рд┐рд╡рд░реНрд╕" рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд▓рддреА рдХрд░рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ: рд▓реЛрдЧ рдЕрдХреНрд╕рд░ рдкрдВрдХреНрддрд┐ / рд╕реНрддрдВрдн рдЬреЛрдбрд╝реА рдХреЗ рдЖрджреЗрд╢ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдордЭрддреЗ рд╣реИрдВред

рдиреМрд╡рд╛рдВ рд╕реНрдерд╛рди: "рдЕрдирдВрдд рдирд┐рдХрдЯ рд╣реИ"


V3110 'TryValidateModel' рдкрджреНрдзрддрд┐ рдХреЗ рдЕрдВрджрд░ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдирдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ред рдЙрдкрд╕рд░реНрдЧрдореВрд▓реЗ рдЙрдкрдкрдж.рдЪрдХреНрд╖реБ 48

 public bool TryValidateModel(object model, string prefix) { return TryValidateModel(model, Prefix(prefix)); } 

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

 public bool TryValidateModel(object model) { return _updateModel.TryValidateModel(model); } 

рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлреЙрд░реНрдо рдХреА рдПрдХ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

 public bool TryValidateModel(object model, string prefix) { return _updateModel.TryValidateModel(model, Prefix(prefix)); } 

рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреНрдпреЛрдВрдХрд┐ _updateModel IUpdateModel рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЧ рднреА IUpdateModel рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рдЖрдард╡рд╛рдБ рд╕реНрдерд╛рди: тАЬрдХреЛрд╢рд┐рд╢ рдХрд░реЛ, рдкрд╛рдУтАЭ


V3091 рдЕрдиреБрднрд╡рдЬрдиреНрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдгред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рдЯрд╛рдЗрдкреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рд╣реИ: "рдкреНрд░рдмрдВрдзрди рд╕рдореВрд╣ рдЖрдИрдбреАред" 'рдИрдж' рд╢рдмреНрдж рд╕рдВрджрд┐рдЧреНрдз рд╣реИред рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯ.рдХреИрдВрд╕ 36

 public class HelpMessages { public const string SubscriptionId = "Subscription Id of the subscription associated with the management"; public const string GroupId = "Management Group Id"; // <= public const string Recurse = "Recursively list the children of the management group"; public const string ParentId = "Parent Id of the management group"; public const string GroupName = "Management Group Id"; // <= public const string DisplayName = "Display Name of the management group"; public const string Expand = "Expand the output to list the children of the management group"; public const string Force = "Force the action and skip confirmations"; public const string InputObject = "Input Object from the Get call"; public const string ParentObject = "Parent Object"; } 

рддреНрд░реБрдЯрд┐ " Azure PowerShell:" рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рд╣реИ " рд▓реЗрдЦ рд╕реЗ рдереАред рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ GroupName рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рдВрднрд╡рддрдГ " рдкреНрд░рдмрдВрдзрди рд╕рдореВрд╣ рдХрд╛ рдирд╛рдо " рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдгрддрд╛ рдХрд╛ рдиреНрдпрд╛рдп рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рджреБрд░реНрд▓рдн рдФрд░ рджреБрд░реНрд▓рдн рд╣реИред рдореБрд╢реНрдХрд┐рд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╕рд╛рддрд╡реАрдВ рдЬрдЧрд╣: "рдмрд╕ рдЕрдирджреЗрдЦреА"


V3078 'рд╕реЙрд░реНрдЯрдмрд╛рдп' рдкрджреНрдзрддрд┐ рдХреЗ рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореВрд▓ рдЫрдБрдЯрд╛рдИ рдХреНрд░рдо рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдореВрд▓ рдЫрдВрдЯрд╛рдИ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 'рддрдм' рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред GridModel.Selection.cs 107

 internal partial class GridModel { private void BuildCellSelectionRegions(....) { .... this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .OrderBy(c => c.RowItemInfo.LayoutInfo.Line)); } } 

" рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП UWP рдХреЗ рд▓рд┐рдП Telerik UI рдХреА рдЬрд╛рдБрдЪ " рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ред рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЙрд░реНрдЯ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░рдмреА рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг, рдкрд┐рдЫрд▓реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЛ рддрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

 this.MergeCellSelectionRegions(selectedItemsInView .OrderBy(c => c.Column.ItemInfo.LayoutInfo.Line) .ThenBy(c => c.RowItemInfo.LayoutInfo.Line)); 

рдЗрд╕ рддрд░рд╣ рдХреА рдЧрд▓рддрд┐рдпрд╛рдБ рд▓рд╛рдкрд░рд╡рд╛рд╣реА рдпрд╛ рдЕрдЬреНрдЮрд╛рдирддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛ рджреЛрд╖ рджреЗрдирд╛ рд╣реИред

рдЫрдард╛ рд╕реНрдерд╛рди: "рдХреЛрдб рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ," рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛


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

 public bool Remove(out int testPosition, out MaskedTextResultHint resultHint) { .... if (lastAssignedPos == INVALID_INDEX) { .... return true; // nothing to remove. } .... return true; } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде .NET рдХреЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ "ред рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд▓реМрдЯреЗрдЧреАред рд╣рд╛рдВ, рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдФрд░ рдЙрддреНрд╕реБрдХ рд╣реИред рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЯрд┐рдкреНрдкрдгреА рд╡рд┐рдзрд┐ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИ:

рд╕реНрд╡рд░реВрдкрд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЕрдВрддрд┐рдо рд╡рд░реНрдг рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред (рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЕрдВрддрд┐рдо рд╡рд░реНрдг рдирд┐рдХрд╛рд▓реЗрдВ)ред рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдкрд░ рдкрд░рдо рдореЗрдВ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдСрдкрд░реЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкрд░реАрдХреНрд╖рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред MaskedTextResultHint out param рдСрдкрд░реЗрд╢рди рдкрд░рд┐рдгрд╛рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред рд╕рдлрд▓рддрд╛ рдкрд░ рд╕рдЪ рд▓реМрдЯрд╛рддрд╛ рд╣реИ , рдЕрдиреНрдпрдерд╛ рдЧрд▓рдд ред

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

рдкрд╛рдВрдЪрд╡рд╛рдВ рд╕реНрдерд╛рди: "рдореБрдЭреЗ рд╕реВрдЪрдХрд╛рдВрдХ, рддреБрд░рдВрдд!"


V3102 рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕реНрдерд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ 'seq' рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рддрддреНрд╡ рддрдХ рд╕рдВрджрд┐рдЧреНрдз рдкрд╣реБрдВрдЪред XmlQueryRuntime.cs 738

 public bool MatchesXmlType(IList<XPathItem> seq, ....) { .... for (int i = 0; i < seq.Count; i++) { if (!CreateXmlType(seq[0]).IsSubtypeOf(....)) return false; } return true; } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде .NET рдХреЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ "ред рдЬрдм seq рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдЯреНрд░реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЧрд▓рддреА рд╕реЗ рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ ( i рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдбреЗрдХреНрд╕ 0) рдкрд░ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЪреМрдерд╛ рд╕реНрдерд╛рди: "рдмрд╕ рдПрдХ рдбреЙрд▓рд░ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ"


V3138 рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдИред SSPIHandleCache.cs 42

 internal static void CacheCredential(SafeFreeCredentials newHandle) { try { .... } catch (Exception e) { if (!ExceptionCheck.IsFatal(e)) { NetEventSource.Fail(null, "Attempted to throw: {e}"); } } } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде .NET рдХреЛрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ "ред рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдлреЗрдВрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕: {e}" рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ ред $ рдЪрд░рд┐рддреНрд░ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдИ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдирддреАрдЬрддрди, рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдЬреИрд╕рд╛ рд╣реИ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рддреАрд╕рд░рд╛ рд╕реНрдерд╛рди: "рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИ"


V3008 [CWE-563] 'this.linker.s3.region' рдЪрд░ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рд░ рдорд╛рди рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдПрдХ рдЧрд▓рддреА рд╣реИред рдЬрд╛рдБрдЪ рд▓рд╛рдЗрдиреЗрдВ: 116, 114. AWSSDK.DynamoDBv2.Net45 S3Link.cs 116

 public string Region { get { .... } set { if (String.IsNullOrEmpty(value)) { this.linker.s3.region = "us-east-1"; } this.linker.s3.region = value; } } 

рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ " .NET рдХреЗ рд▓рд┐рдП рдЕрдореЗрдЬрд╝рди рд╡реЗрдм рд╕реЗрд╡рд╛ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рддрд▓рд╛рд╢ рд╣реИ ред" рдЕрдЧрд░ рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рд╡рд╛рдкрд╕ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЗрд╕ .linker.s3.region рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рд░рд┐рдХреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдирд▓ рд╕рд╣рд┐рдд рдорд╛рди рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ ред

рджреВрд╕рд░реА рдЬрдЧрд╣: "рдХреНрд░рдо рдореЗрдВ рдмрдиреЗрдВ!"


'LOCALE_USER_DEFAULT' рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ рд╕рдордп V3070 Uninitialized рдЪрд░ 'LANG_USER_DEFAULT' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред NativeMethods.cs 890

 internal static class NativeMethods { .... public static readonly int LOCALE_USER_DEFAULT = MAKELCID(LANG_USER_DEFAULT); public static readonly int LANG_USER_DEFAULT = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT); .... } 

" WinForms: рддреНрд░реБрдЯрд┐рдпрд╛рдВ, рд╣реЛрдореНрд╕ " рд▓реЗрдЦ рд╕реЗ рддреНрд░реБрдЯрд┐ред рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЖрд░рдВрдн рдХреЗ рдХреНрд░рдо рдХреЛ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред LOCALE_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдЕрднреА рддрдХ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди 0. рд╣реИред LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИ, WinForms рдХреЛрдб рдХреЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

 internal static class NativeMethods { public static readonly int LOCALE_USER_DEFAULT = MAKELCID(LANG_USER_DEFAULT); public static readonly int LANG_USER_DEFAULT = MAKELANGID(0x00, 0x01); public static int MAKELANGID(int primary, int sub) { return ((((ushort)(sub)) << 10) | (ushort)(primary)); } public static int MAKELCID(int lgid) { return MAKELCID(lgid, 0x0); } public static int MAKELCID(int lgid, int sort) { return ((0xFFFF & lgid) | (((0x000f) & sort) << 16)); } } class Program { static void Main() { System.Console.WriteLine(NativeMethods.LOCALE_USER_DEFAULT); } } 

рд▓реЙрдиреНрдЪ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдВрд╕реЛрд▓ рдкрд░ рдирд┐рдореНрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: 0. рдЕрдм рд╣рдо LOCALE_USER_DEFAULT рдФрд░ LANG_USER_DEFAULT рдлрд╝реАрд▓реНрдб рдХреА рдШреЛрд╖рдгрд╛ рдХреЛ рд░реЛрдХрдХрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд░рд┐рдгрд╛рдо: 1024ред

рдкрд╣рд▓рд╛ рд╕реНрдерд╛рди: "рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ"


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

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


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

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрдврд╝рд╛ рд╣реИ? рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдзрд╛рдИ! рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ, рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ 2019 рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдмрдЧреЛрдВ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЧрдпрд╛ рд╣реИ ред

рдЪрд┐рддреНрд░ 2




рдпрджрд┐ рдЖрдк рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рд░реНрдЧреЗрдИ рдЦреНрд░реЗрдиреЛрд╡ред 2019 рдореЗрдВ C # рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╢реАрд░реНрд╖ 10 рдХреАрдбрд╝реЗ рдорд┐рд▓реЗ ред

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


All Articles