
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬрдЯрд┐рд▓ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╣рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐ "рд╕рд┐рд▓реНрд╡рд░ рдмреБрд▓реЗрдЯ" рдХреА рдЦреЛрдЬ рд╣рдореЗрд╢рд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдорди рдореЗрдВ рдПрдХ рддреВрдлрд╛рдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкрд╛рддреА рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ "рдлреИрд╢рдиреЗрдмрд▓" рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреА рд╢реНрд░реЗрд╖реНрдарддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИред рдЦреИрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд╣ C # C ++ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ "рдХреВрд▓рд░" рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рдкрд╡рд┐рддреНрд░ рдпреБрджреНрдзреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рдкреЛрд╕реНрдЯ рдХреНрдпреЛрдВ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдлрд┐рд░ рднреА, рдЗрд╕реЗ "рдкреЗрдВрдЯ рдЕрдк" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдареАрдХ рд╣реИ, C # / lisp / F # / Haskell / рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ ... рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдпрд╣ рд╣реИред рд╕рднреА рд▓рд╛рд▓рд┐рддреНрдп рдЦреЛ рдЧрдП рд╣реИрдВ, рдпрд╣ рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рди рдХрд┐ "рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ"ред
рдпрд╣ рдкреЛрд╕реНрдЯ " рдордореНрдо ... рд╕реБрдкрд░ рднрд╛рд╖рд╛ ... рдореБрдЭреЗ рд╕реА ++ рдХреГрдкрдпрд╛! " рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИред рдЙрд╕ рд▓реЗрдЦ рдХреЛ рдЬрдирддрд╛ рдХреЗ рдмреАрдЪ рд╕рдордЭ рдирд╣реАрдВ рдорд┐рд▓реАред рдЕрдм рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд C # рдореЗрдВ рдХрдИ рдЕрдВрд╢ рд╣реИрдВ, рдЬреЛ рд▓реЛрдХрдкреНрд░рд┐рдп Microsoft Visual Studio рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ PVS-Studio рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрди рдЕрдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЙрд╕ рд▓реЗрдЦрди рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C # рдореЗрдВ C ++ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдмрд╣рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - "рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рд╡реЗрд▓рдХрдоред" рдХреМрди рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ - рдпрд╣ рднреА рд▓рд┐рдЦреЗрдВ, рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред
рд╕рд╛рдзрд╛рд░рдг рдХреЙрдореНрдмреЛрдХреНрд╕
рддреЛ, рдкрд╣рд▓рд╛ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдЫрд╡рд┐ рд╕реЗ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рдиреЛрд░реНрдорд▓ рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рдореЗрдВ рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЪрдпрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЪрд┐рддреНрд░рд╛ 1 - рдПрдХ рд╕рд░рд▓ рддреАрди-рд▓рд╛рдЗрди рдХреЙрдореНрдмреЛрдХреНрд╕
рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╛рддреА рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рдкреНрд░рд╛рд░реВрдкрдг рдХреЛ рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╣реЙрд░рд░ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВред
рдирд┐рдЬреА рд╢реВрдиреНрдп OnMenuMyDropDownCombo (рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЗрд╖рдХ, EventArgs e) { рдЕрдЧрд░ (e == EventArgs.Empty) { рдлреЗрдВрдХ (рдирдпрд╛ рддрд░реНрдХрдмреЛрдзрдХ) (); } OleMenuCmdEventArgs eventArgs = e рдХреЗ рд░реВрдк рдореЗрдВ OleMenuCmdEventArgs; рдЕрдЧрд░ (EventArgs! = null) { string newChoice = eventArgs.InValue рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ; IntPtr vOut = eventArgs.OutValue; рдЕрдЧрд░ (vOut! = IntPtr.Zero && newChoice! = null) { рдлреЗрдВрдХ (рдирдпрд╛ рддрд░реНрдХрдмреЛрдзрдХ) (); } рдФрд░ рдпрджрд┐ (vOut! = IntPtr.Zero) { рдорд╛рд░реНрд╢рд▓ .рдЧреИрд░рдиреЗрдЯрд┐рд╡ рд╡реЗрд░рд┐рдПрдВрдЯрдСрд░реНрдмрдЬреЗрдХреНрдЯ ( this.currentDropDownComboChoice, vOut); } рдФрд░ рдЕрдЧрд░ (newChoice! = null) { bool validInput = false; int indexInput = -1; рдХреЗ рд▓рд┐рдП (indexInput = 0; indexInput <dropDownComboChoices.Length; indexInput ++) { рдЕрдЧрд░ (рд╕реНрдЯреНрд░рд┐рдВрдЧ .Compare ( dropDownComboChoices [indexInput], newChoice, рд╕рдЪ) == 0) { validInput = true; рддреЛрдбрд╝; } } рдЕрдЧрд░ (рдорд╛рдиреНрдп) { this.currentDropDownComboChoice = dropDownComboChoices [indexInput]; if (currentDropDownComboChoice == Resources.Viva64) UseViva64Analysis (рдЕрд╢рдХреНрдд, рдЕрд╢рдХреНрдд); рдФрд░ рдпрджрд┐ (currentDropDownComboChoice == Resources.GeneralAnalysis) UseGeneralAnalysis (рдЕрд╢рдХреНрдд, рдЕрд╢рдХреНрдд); рдФрд░ рдпрджрд┐ (currentDropDownComboChoice == Resources.VivaMP) UseVivaMPAnalysis (рдЕрд╢рдХреНрдд, рдЕрд╢рдХреНрдд); рдЕрдиреНрдпрдерд╛ { рдлреЗрдВрдХ (рдирдпрд╛ рддрд░реНрдХрдмреЛрдзрдХ) (); } } рдЕрдиреНрдпрдерд╛ { рдлреЗрдВрдХ (рдирдпрд╛ рддрд░реНрдХрдмреЛрдзрдХ) (); } } рдЕрдиреНрдпрдерд╛ { рдлреЗрдВрдХ (рдирдпрд╛ рддрд░реНрдХрдмреЛрдзрдХ) (); } } рдЕрдиреНрдпрдерд╛ { рдлреЗрдВрдХ (рдирдпрд╛ рддрд░реНрдХрдмреЛрдзрдХ) (); } }
рдФрд░ рдпрд╣рд╛рдБ IntPtr.Zero рдФрд░ Mars.GetNativeVariantForObject () рд╣реИ? рдЦреИрд░, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ ... рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрдореНрдмреЛрдХреНрд╕ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЛрдб рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдирдЬрджреАрдХреА OnMenuMyDropDownComboGetList () рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИред
рдпрд╣рд╛рдБ C # рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИред рдирд╣реАрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдореБрдЭрд╕реЗ OLE, рдорд╛рд░реНрд╢рд▓рд┐рдВрдЧ рдХреЛ рд╕рдордЭрд╛рдпрд╛ред рд╕реА рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рджреБрдЦреА рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рднреА рдПрдХ рд╣реА рд╣реИ рдпрд╣ рдХреИрд╕реЗ рдкреБрд╕реНрддрдХреЛрдВ рдФрд░ рдЗрдВрдЬреАрд▓рд╡рд╛рджрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рд╛рджрдЧреА рдХрд╣рд╛рдВ рд╣реИ? рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХреЛрдб рдиреЗрд╡рд┐рдЧреЗрд╢рди
рдЬрдм рдЖрдк Visual Studio рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреЛрдб рдЬреИрд╕рд╛ рдХреБрдЫ рдЯреНрд░рд┐рдЧрд░ рд╣реЛрддрд╛ рд╣реИред
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп OpenDocumentAndNavigateTo (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрде, int рд▓рд╛рдЗрди, рдЗрдВрдЯ рдХреЙрд▓рдо) { IVsUIShellOpenDocument рдУрдкрдирдбреЙрдХ = Package.GetGlobalService ( рдЯрд╛рдЗрдкреЛрдлрд╝ (IVsUIShellOpenDocument)) IVsUIShellOpenDocument рдХреЗ рд░реВрдк рдореЗрдВ; рдЕрдЧрд░ (OpenDoc == null) рд╡рд╛рдкрд╕реА; IVsWindowFrame рдлреНрд░реЗрдо; Microsoft.VisualStudio.OLE.Interop.IServiceProvider рд╕рдкрд╛; IVsUIHierarchy hier; рдпреВрдВрдЯ рдЖрдЗрдЯрдо; рдЧрд╛рдЗрдб рд▓реЙрдЬрд┐рдХрд▓ рд╡реНрдпреВ = VSConstants.LOGVIEWID_Code; рдЕрдЧрд░ (ErrorHandler.Failed) OpenDoc.OpenDocumentViaProject (рдкрде, рд░реЗрдл рддрд╛рд░реНрдХрд┐рдХ рджреЗрдЦреЗрдВ, рдмрд╛рд╣рд░ рд╕рдкрд╛, рдмрд╛рд╣рд░ hier, рдмрд╛рд╣рд░ рдЖрдЗрдЯрдо, рдмрд╛рд╣рд░ рдлреНрд░реЗрдо)) || рдлреНрд░реЗрдо == рдЕрд╢рдХреНрдд) рд╡рд╛рдкрд╕реА; рдСрдмреНрдЬреЗрдХреНрдЯ рдбреЙрдХрдбреЗрдЯрд╛; рдлреНрд░реЗрдоред GetProperty ((int) __ VSFPROPID.VSFPROPID_DocData, рдбреЙрдХрдбреЙрдЯ рдЖрдЙрдЯ); VsTextBuffer рдмрдлрд░ = VsTextBuffer рдХреЗ рд░реВрдк рдореЗрдВ docData; рдЕрдЧрд░ (рдмрдлрд░ == рдЕрд╢рдХреНрдд) { IVsTextBufferProvider рдмрдлрд░Provider = IVDTextBufferProvider рдХреЗ рд░реВрдк рдореЗрдВ docData; рдЕрдЧрд░ (рдмрдлрд░рдкреНрд░реЛрдЗрдбрд░! = рдЕрд╢рдХреНрдд) { IVsTextLines рд▓рд╛рдЗрдиреЗрдВ; ErrorHandler.ThrowOnFailure ( рдмрдлрд░рдкреЙрдЗрдбрд░.рдЬреАрдЯ рдЯреЗрдХреНрд╕реНрдЯрдмрдлрд░ (рдЖрдЙрдЯ рд▓рд╛рдЗрди)); рдмрдлрд░ = VsTextBuffer рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ; рдЕрдЧрд░ (рдмрдлрд░ == рдЕрд╢рдХреНрдд) рд╡рд╛рдкрд╕реА; } } IVsTextManager mgr = Package.GetGlobalService (рдЯрд╛рдЗрдкреЛрдлрд╝ (VsTextManagerClass)) IVsTextManager рдХреЗ рд░реВрдк рдореЗрдВ; рдЕрдЧрд░ (mgr == null) рд╡рд╛рдкрд╕реА; mgr.NavigateToLineAndColumn ( рдмрдлрд░, рд░реЗрдл рддрд╛рд░реНрдХрд┐рдХ рд╡реНрдпреВ, рд▓рд╛рдЗрди, рдХреЙрд▓рдо, рд▓рд╛рдЗрди, рдХреЙрд▓рдо); }
рдпреЛ-рдорд╛рдИ ... рд╣реЙрд░рд░ред рдЬрд╛рджреВ рдордВрддреНрд░ рдХрд╛ рд╕реЗрдЯред рдПрдХ рдмрд╛рд░ C # рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдЗрд╕ рдХреЛрдб рдиреЗ рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред рдХреМрди рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ XYZ рдореЗрдВ рдмреЗрд╣рддрд░ рд▓рдЧреЗрдЧрд╛? рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╣рд▓ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреА рднрд╛рд╖рд╛ "рд▓рдВрдмрд╡рдд" рд╣реИ рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИред
рджрд┐рдирд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рдареАрдХ рд╣реИ, рд╕реА # рдореЗрдВ рддрд╛рд░реАрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд┐рд▓реНрдХреБрд▓ рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЖрдЦрд┐рд░рдХрд╛рд░, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рд░реВрдк рд╣реИрдВред рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдЬрдм рддрдХ рдмрд╛рд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ __time64_t рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рдЖрдпрд╛, рдФрд░ C # рдХреЛрдб рдореЗрдВ DateTime рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
рдбреЗрдЯрд╛ рдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП __time64_t рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕ рддрд░рд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдереИрддрд┐рдХ DateTime Time_T2DateTime (long time_t) { // 116444736000000000 - рдпрд╣ 1600 рд╣реИ long win32FileTime = 10000000 * time_t + 116444736000000000; DateTime.FromFileTime (win32FileTime) рд╡рд╛рдкрд╕ рдХрд░реЗрдВ; }
рдФрд░ рдпрд╣рд╛рдБ C # рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ ... рд╢рд╛рдпрдж рдореБрдЭреЗ рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛? рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рддрд░рд╣, рдлрд┐рд░ рд╕реЗ, рдкреБрд░рд╛рдиреЗ рдлреИрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ "рдкреЗрди" рдХрд░рдирд╛ рд╣реЛрдЧрд╛?
рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреА рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЧрдгрдирд╛
рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдЙрди рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╕рдорд╛рдзрд╛рди (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдорд╛рдзрд╛рди) рдореЗрдВ рд╣реИрдВред
рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдлреЙрд░реНрдЪреНрдпреВрдирд░ рдХреЗ рдмрдЬрд╛рдп, рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
Solution2 рд╕рдорд╛рдзрд╛рди = PVSStudio.DTE.Solution рд╕рдорд╛рдзрд╛рди 2 рдХреЗ рд░реВрдк рдореЗрдВ; SolutionBuild2 solutionBuild = (SolutionBuild2) solution.SolutionBuild; SolutionContexts ProjectContexts = solutionBuild.ActiveConfiguration.SolutionContexts; int prjCount = projectContexts.Count; for (int i = 1; рдореИрдВ <= prjCount; i ++) { SolutionContext projectContext = null; рдХреЛрд╢рд┐рд╢ { projectContext = projectContexts.Item (i); } рдкрдХрдбрд╝рдирд╛ (рдЕрдкрд╡рд╛рдж) { // try / catch рдмреНрд▓реЙрдХ рдПрдХ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИред // рд╕рдорд╛рдзрд╛рди рдкрд░ рд╕рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ // рдЕрдирд▓реЛрдбреЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рдеред рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП; } ...
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, рдлреЙрд░-рде рдпреВрдЬрд╝ рдХреЛ рдЕрднреА рддрдХ рдирд╣реАрдВ рднреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрд╛ рд╣реИред рджреВрд╕рд░реЗ, рдЕрдЧрд░ рд╣рдо рдЙрд╕ рддрддреНрд╡ рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╕реЗрдЯ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА "рдмрд╣реБрдд рд╕рд╣реА" рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдЙрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдХреЛрдб рдХрд╛рдлрд╝реА рдЬрдЯрд┐рд▓ рд╣реИред рдФрд░ C # рдлрд┐рд░ рд╕реЗ рдХреЛрдб рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ C # (рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛) рдореЗрдВ рдХреЛрдб рд╣рдореЗрд╢рд╛ C / C ++ рдХреЗ рдХреЛрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдирд╛ рдХрд┐ "рдЖрдкрдХреЛ C # рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛" рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдлрд┐рд░ рднреА, рдореИрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдХрд┐ "C # рдмреЗрдХрд╛рд░" рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕реА рдореЗрдВ ++ рдХреА рддрд░рд╣ рд╣реА рдЬрдЯрд┐рд▓ рджрд┐рдЦрддреЗ рд╣реИрдВ?
- рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдереАред
- рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк __time64_t, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, C ++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЖрдпрд╛ рд╣реИред
- рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдЪреЗрд╣рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕рд╣реА рд╕реА # рдХреЛрдб рдХреЛ рдбреЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИред
- рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдкреНрд░рднрд╛рд╡ред рдпрджрд┐ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдореЗрдВ "+1" рд╕реЗ рдЖрдк рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рдЪрд╛рд╣реЗ рдЖрдк рдХреЛрдИ рднреА рднрд╛рд╖рд╛ рд▓рд┐рдЦреЗрдВред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рдХрд╛ рдФрдЪрд┐рддреНрдп:
- рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рд▓реЗрдЦ рдореЗрдВ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╣рд╛рдВ, рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ C # рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ C # рдЕрдзрд┐рдХ рдЬрд╛рджреБрдИ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред