рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдпрд╛ C # рд╣рдореЗрдВ рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧрд╛?

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

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



рдпрд╣ рдкреЛрд╕реНрдЯ " рдордореНрдо ... рд╕реБрдкрд░ рднрд╛рд╖рд╛ ... рдореБрдЭреЗ рд╕реА ++ рдХреГрдкрдпрд╛! " рдкреЛрд╕реНрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧреА рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИред рдЙрд╕ рд▓реЗрдЦ рдХреЛ рдЬрдирддрд╛ рдХреЗ рдмреАрдЪ рд╕рдордЭ рдирд╣реАрдВ рдорд┐рд▓реАред рдЕрдм рдореИрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред



рдХрдЯреМрддреА рдХреЗ рддрд╣рдд C # рдореЗрдВ рдХрдИ рдЕрдВрд╢ рд╣реИрдВ, рдЬреЛ рд▓реЛрдХрдкреНрд░рд┐рдп Microsoft Visual Studio рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ PVS-Studio рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрди рдЕрдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде, рдореИрдВ рдЙрд╕ рд▓реЗрдЦрди рдХреЛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, C # рдореЗрдВ C ++ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдмрд╣рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - "рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рд╡реЗрд▓рдХрдоред" рдХреМрди рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ - рдпрд╣ рднреА рд▓рд┐рдЦреЗрдВ, рд╣рдо рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред



рд╕рд╛рдзрд╛рд░рдг рдХреЙрдореНрдмреЛрдХреНрд╕



рддреЛ, рдкрд╣рд▓рд╛ рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдЫрд╡рд┐ рд╕реЗ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рдиреЛрд░реНрдорд▓ рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рдореЗрдВ рддреАрди рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЪрдпрди рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЪрд┐рддреНрд░рд╛ 1 - рдПрдХ рд╕рд░рд▓ рддреАрди-рд▓рд╛рдЗрди рдХреЙрдореНрдмреЛрдХреНрд╕

рдЪрд┐рддреНрд░рд╛ 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 # рдмреЗрдХрд╛рд░" рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдЬрдЧрд╣реЛрдВ рдкрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреАрд╡рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИред



рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрддрд╛рдП рдЧрдП рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕реА рдореЗрдВ ++ рдХреА рддрд░рд╣ рд╣реА рдЬрдЯрд┐рд▓ рджрд┐рдЦрддреЗ рд╣реИрдВ?

  1. рд╡рд┐рднрд┐рдиреНрди рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдереАред
  2. рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк __time64_t, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, C ++ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЖрдпрд╛ рд╣реИред
  3. рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдЪреЗрд╣рд░реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реБрдВрджрд░ рдФрд░ рд╕рд╣реА рд╕реА # рдХреЛрдб рдХреЛ рдбреЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рд╣реИред
  4. рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдкреНрд░рднрд╛рд╡ред рдпрджрд┐ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдореЗрдВ "+1" рд╕реЗ рдЖрдк рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ, рдЪрд╛рд╣реЗ рдЖрдк рдХреЛрдИ рднреА рднрд╛рд╖рд╛ рд▓рд┐рдЦреЗрдВред


рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреЛрдб рдХрд╛ рдФрдЪрд┐рддреНрдп:

  1. рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рд▓реЗрдЦ рдореЗрдВ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рддрдХ рдШрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  2. рд╣рд╛рдВ, рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ C # рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ C # рдЕрдзрд┐рдХ рдЬрд╛рджреБрдИ рдирд╣реАрдВ рдмрдирддрд╛ рд╣реИред





All Articles