
рдЕрдореВрд░реНрдд
рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдкрд░ C # рдореЗрдВ Visual Studio рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдкрд░ рдХрдИ рд▓реЗрдЦ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдПред рдЕрдм рд╣рдордиреЗ рдЗрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рдореЗрдВ рд▓рд┐рдпрд╛ рд╣реИ, рдирдП рдЦрдВрдб рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдореИрдиреБрдЕрд▓ рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
Microsoft Visual Studio рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ (рдпрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕) рдмрдирд╛рдирд╛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, MSDN, рд▓реЗрдЦ, рдЙрджрд╛рд╣рд░рдг рдФрд░ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдкрд░ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд▓реЗрдЦрди рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрдВрдЧреАред рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдХреНрд╕рд░ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдп рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд▓рдЧ-рдЗрди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд┐рд╖рдп рдХрд╛ рдЕрднреА рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдо рдПрдХ
PVS-Studio рд╕реНрдерд┐рд░ рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рдпрджреНрдпрдкрд┐ рдЯреВрд▓ рд╕реНрд╡рдпрдВ C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХрд╛рдлреА рд╣рд┐рд╕реНрд╕рд╛ C # рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рд╣рдордиреЗ рдЕрдкрдирд╛ рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛, рддреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд░реНрд▓реНрдб рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдмрд╕реЗ рдирдпрд╛ рдФрд░ рдЖрдзреБрдирд┐рдХ рдорд╛рдирд╛ рдЧрдпрд╛ред рдФрд░ рдЕрдм рдЬрдмрдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдкрд╣рд▓реЗ рд╣реА рд░рд┐рд▓реАрдЬрд╝ рд╣реЛ рдЪреБрдХрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреА рд╣рдо рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдЖрдкрдХреЗ рдЙрдкрдХрд░рдг рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдгред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЧрд▓рдд!) рдкрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЬреНрдЮрд╛рди рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдЬрдорд╛ рдХреА рд╣реИред рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЛ рдзрд╛рд░рдг рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рддрд╛рдХрдд рдирд╣реАрдВ рд░рд╣ рдЧрдИ рдереАред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдЬрд╛рд░реА рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЖрдЦрд┐рд░рдХрд╛рд░, рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рдЬреЛ рдЕрдм рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВ, рдХреБрдЫ рд╕рд╛рд▓ рдмрд╛рдж рд╣реА рдкрд╛рдП рдЧрдП рдереЗред рдФрд░ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИрдВ, рд╡реЗ рдЕрднреА рднреА рдХреБрдЫ рдкреНрд▓рдЧрдЗрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреАрдбрд╝рд╛ рджреЗ рд╕рдХрддреА рд╣реИрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
- MSVS рдкреНрд▓рдЧрдЗрдиреНрд╕ рдмрдирд╛рдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде Visual Studio рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХреЛрдб рдмреЗрд╕ рдореЗрдВ рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░рднреВрдд рдЬрд╛рдирдХрд╛рд░реА;
- рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдФрд░ MPF (рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди;
- рдХрд╕реНрдЯрдо рдореЗрдиреВ, рдЯреВрд▓рдмрд╛рд░, рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕рдВрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдПрдкреАрдЖрдИ (рдПрдирд╡реАрдбреАрдЯреАрдИ) рдФрд░ рдПрдордкреАрдПрдл (рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛;
- рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдУрд╡рд░рд╡реНрдпреВ, рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрд╢рди рдПрдЯрдо рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб рд╢реЗрд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ
- рдмрд╛рд╣рд░реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ / рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдЧреНрд░рд╣, рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕;
рд▓реЗрдЦ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдФрд░ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг MSDN рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЕрдиреНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдкреНрд▓рдЧ-рдЗрди рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕реАрдорд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗрд╡рд▓ рд╡реАрдПрд╕ 200 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рддрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдмрдВрдз рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рдореЗрдВ рдПрдХ рдирдП рдПрдкреАрдЖрдИ рдореЙрдбрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рд╕реНрддрд╛рд░ рдПрдкреАрдЖрдИ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИред
Microsoft Visual Studio 2005 рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдмрдирд╛рдирд╛, рдбреАрдмрдЧ рдХрд░рдирд╛ рдФрд░ рдЙрд╕рдХреА рддреИрдирд╛рддреА рдХрд░рдирд╛
рдпрд╣ рдЕрдиреБрднрд╛рдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ (рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ) рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг, рдПрдВрдб-рдпреВрдЬрд╝рд░ рдорд╢реАрди рдкрд░ рдЙрдирдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ, рдкрдВрдЬреАрдХрд░рдг рдФрд░ рддреИрдирд╛рддреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб рд╢реЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ VSPackage рдмрдирд╛рдирд╛ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдирд╛
Microsoft Visual Studio рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реНрддрд░ рдкрд░, рдЖрдк рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдпреВрдЖрдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рд╣реЗрд░рдлреЗрд░, рдЖрджрд┐ред рдЖрдк рдкреНрд▓рдЧ-рдЗрди (рдРрдб-рдЗрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
MEF (рдкреНрд░рдмрдВрдзрд┐рдд рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ) рдШрдЯрдХреЛрдВ (MSVS 2010 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдВрднрд╡ рд╣реИред рдмрдбрд╝реЗ рд╕реНрд╡рддрдВрддреНрд░ рдШрдЯрдХреЛрдВ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП,
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдкреНрд░рдХрд╛рд░ (рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ, рдЬрд┐рд╕реЗ рд╡реАрдПрд╕рдкреАрдХреЗрдПрдЬ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред рдЙрд╕реА рд╕рдордп, VSPackage рдЖрдкрдХреЛ MEF (рдкреНрд░рдмрдВрдзрд┐рдд рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдлреНрд░реЗрдорд╡рд░реНрдХ) рдФрд░
рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреНрд▓рд╛рд╕реЗрд╕ (рдЬреИрд╕реЗ рдкреИрдХреЗрдЬ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде
рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ IDE рдШрдЯрдХреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдмрдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрд╡рдпрдВ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХ рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдорд╛рдирдХ рдореЙрдбреНрдпреВрд▓ рдЬреИрд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ C ++ рдпрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ C # рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ 1.XX рдФрд░ 2.XX, рдЬрдм рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рдж рдХреЛ рдЕрднреА рднреА Viva64 рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛), рд╣рдордиреЗ рдПрдб-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ред рд╕рдВрд╕реНрдХрд░рдг рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ 3.00 рд╕реЗ, рд╣рдо рдЗрд╕реЗ рд╡реАрдПрд╕рдкреАрдПрдХреЗрдПрдЬ рдХреЛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрдХреНрд░рдордг рдХрд╛ рдХрд╛рд░рдг - рдпрд╣ рдРрдб-рдЗрди рдореЗрдВ "рддрдВрдЧ" рд╣реЛ рдЧрдпрд╛ рдФрд░ рдЗрд╕реЗ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдХреНрд░реАрди рд╕реЗрд╡рд░ рдкрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЖрдЗрдХрди рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛!
VSPackage рдореЙрдбреНрдпреВрд▓ рдЖрдкрдХреЛ рдСрдЯреЛрдореЗрд╢рди рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд╕реНрдЯрдо рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдРрд╕реА рд╡рд╕реНрддреБрдПрдВ рдЕрдиреНрдп рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдПрдХреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдПрдХреНрд╕реЗрд╕ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдЗрди рдирдП рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╕реАрдзреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, VSPackage рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ Visual Studio рдХреЗ рдкреГрдердХ \ рд╕рдордиреНрд╡рд┐рдд рдЧреЛрд▓реЗ (Visual Studio Isolated \ Integrated Shell) рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреГрдердХ \ рдПрдХреАрдХреГрдд рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢реЗрд▓ рдХрд┐рд╕реА рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдФрд░ / рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддреЗ рд╣реБрдП, рдорд╛рдирдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ (рдХреЛрдб рд╕рдВрдкрд╛рджрдХ, рд╕реНрд╡-рд╕рдорд╛рдкрди рдкреНрд░рдгрд╛рд▓реА, рдЖрджрд┐) рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдРрд╕реА рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ Microsoft рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рднрд╛рд╖рд╛ рдШрдЯрдХ (Visual Basic, Visual C ++, рдЖрджрд┐) рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдФрд░ рдПрдВрдб рдпреВрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ Visual Studio IDE рдХреЗ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ рднреА рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
Visual Studio рдХрд╛ рдкреГрдердХ рд╢реЗрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рднреА рдЕрд▓рдЧ-рдерд▓рдЧ рд░рд╣реЗрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Visual Studio рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рднреА рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдПрдХреАрдХреГрдд рд╢реЗрд▓ рдХреЛ рдкреНрд░реАрдЗрдВрд╕реНрдЯреЙрд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдкреГрдердХ / рдПрдХреАрдХреГрдд рд╢реЗрд▓ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬреЛрдбрд╝рдХрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ VSPackage рдкреНрд▓рдЧрдЗрди рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреАред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб рд╢реЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдореНрдмреЗрдбреЗрдб Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ MSBuild рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ Visual Studio рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдФрд░ gcciler рд╡рд┐рдХрд▓реНрдк рд╣реИред
VSPackage рдкреНрд▓рдЧ-рдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреИрдХреЗрдЬ (VSPackage, рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ) рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреНрд▓рдЧ-рдЗрди (рдРрдб-рдЗрди) рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП Microsoft Visual Studio SDK рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдПрд╕рдбреАрдХреЗ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред Visual Studio рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╕рдордп рдЕрд▓рдЧ-рдерд▓рдЧ рдПрдХреАрдХреГрдд рд╢реЗрд▓, рдЖрдкрдХреЛ Visual Studio рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП SDK рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕ рдкрд░ рдпрд╣ рд╢реЗрд▓ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП 2005, 2008, 2010 рдФрд░ 2012 рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдкреГрдердХ рд╢реЗрд▓ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдЯрдореЗрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ) рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред Visual Studio SDK рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ Visual Studio Package рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдорд╛рдирдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ (рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдХрд╛рд░ -> рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдЖрдЗрдЯрдо) рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдЯреЗрдореНрдкрд▓реЗрдЯ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХреЛрдВ (рдореЗрдиреВ рдЖрдЗрдЯрдо, рд╕рдВрдкрд╛рджрдХ, рдХрд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ) рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ рдФрд░ рд╕реНрдЯрдмреНрд╕ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо VSPackage рдХреЗ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ (csproj) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд▓рд┐рдВрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (dll) рдХрд╛ MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЕрд╕реЗрдВрдмрд▓реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдПрдХреНрд╕рдПрдордПрд▓ рдиреЛрдбреНрд╕, рдЬреИрд╕реЗ рдХрд┐ рд╡реАрд╕реАрдПрд╕рдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдЗрдирдХреНрд▓реВрдЬрд╝рд┐рд╡рд┐рдХреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
Visual Studio рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ
Microsoft.VisualStudio.Shell.Package рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдкреВрд░реНрдг рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ IDE рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рд░реИрдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
public sealed class MyPackage: Package { public MyPackage () {} ... }
рдкреИрдХреЗрдЬ рд╡рд░реНрдЧ рдЖрдзрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрдИрдбреА рдЖрдИрдбреАрдИ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд▓реЗрддреА рд╣реИред
protected override void Initialize() { base.Initialize(); ... }
рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм IDE рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ UI рд╕рдВрджрд░реНрдн (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЦреЛрд▓рдирд╛), рдЖрджрд┐ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреИрд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдкрддрд╛ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдлрд┐рд▓рд╣рд╛рд▓ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдереАрдВ рдЬрдм рдкрд░реНрдпрд╛рд╡рд░рдг "рд╣рдореЗрдВ рд╣рд╛рдереЛрдВ рдкрд░ рд╣рд░рд╛рддрд╛ рд╣реИ" рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдорд╛рдереЗ рдкрд░ рдПрдХ рдкреНрд░рд╢реНрди рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдмреЙрдХреНрд╕ рджрд┐рдЦрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдбрд┐рдмрдЧрд┐рдВрдЧ рдПрдХреНрд╕рдкреИрдВрд╢рди рдкреИрдХреНрд╕ рдФрд░ рдПрдХреНрд╕рдкреЗрд░рд┐рдореЗрдВрдЯрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕
рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдФрд░ рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╕реНрдерд┐рд░ рдирдП рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрдИрдбреАрдИ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╕реНрдерд┐рд░рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЗрд╕рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд░ рдмрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдкрд░рд┐рд╡реЗрд╢ рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдЕрдХреНрд╕рд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реНрд╡рдпрдВ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЪреВрдВрдХрд┐ IDE рдкрд╣рд▓реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП dll рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдбреАрдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА)ред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрдб-рдЗрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ VSPackage рдбрд┐рдмрдЧрд┐рдВрдЧ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдРрдб-рдЗрди рд╕реЗ рд╡реАрдПрд╕рдкреАрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдореЙрдбрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдпрд╣ рдПрдХ рдХрд╛рд░рдг рдерд╛ред
VSPackage рдкреИрдХреЗрдЬ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдФрд░ рдбреАрдмрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг) рдХреЗ рдПрдХ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХреЛрдВ рдХреА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рдХрд░ рдЗрд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\ Common7\IDE\devenv.exe" /RootSuffix Exp
рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА (рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣рд╛рдЗрд╡) рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд╛рдкрд┐рдд рдШрдЯрдХреЛрдВ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИред рдПрдХреНрд╕рдкреЗрд░рд┐рдореЗрдВрдЯрд▓ рд╣рд╛рдЗрд╡ рдмреНрд░рд╛рдВрдЪ рдореЗрдВ рдирдП рдШрдЯрдХреЛрдВ рдХреЗ рдЖрдИрдбреАрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдкрдВрдЬреАрдХрд░рдг рдпрд╛ рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕реАрдзреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдореБрдЦреНрдп рдЖрдзрд╛рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ)ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрд╕рдбреАрдХреЗ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдпрд╛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -
CreateExpInstance ред рдПрдХ рдирдИ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╢рд╛рдЦрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП CreateExpInstance рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
CreateExpInstance.exe /Reset /VSInstance=10.0 /RootSuffix=PVSExp
рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ IDE (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010) рдХреЗ рд╕рдВрд╕реНрдХрд░рдг 10 рдХреЗ рдирд╛рдо рдХреЗ рдкреНрд░рддреНрдпрдп PVSExp рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢рд╛рдЦрд╛ рдмрди рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реАрд╕реЗрдЯ рд╣реЛрдЧрд╛ред рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдирдИ рд╢рд╛рдЦрд╛ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0PVSExp
рдпрджреНрдпрдкрд┐ VSPackage рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреНрд░рддреНрдпрдп рдНрдХреНрд╕реНрдк рдкреНрд░рддреНрдпрдп (рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢рд╛рдЦрд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рднреА рдЖрдкрдХреЛ рдЕрдиреНрдп рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рдЕрдиреНрдп рдирд╛рдо рдкреНрд░рддреНрдпрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИред рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдирдИ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдирд╛рдо рдореЗрдВ PVSExp рд╢рд╛рдорд┐рд▓ рд╣реИ), рдЖрдкрдХреЛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\ Common7\IDE\devenv.exe" /RootSuffix PVSExp
рдПрдХ рд╣реА рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рдХрдИ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрдИ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рдХреЗ рдПрдХ рд╕рд╛рде рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдПред
рдПрд╕рдбреАрдХреЗ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдИрдбреА рдХреЛ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдЖрдИрдбреАрдИ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдЙрд╕рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft Visual Studio 2010 рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ)ред
рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб рд╢реЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП "рдХреНрд╖рддрд┐" рдХреЗ рд╕рд╛рде рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдк рдЬрд┐рддрдиреА рддреЗрдЬрд╝реА рд╕реЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЙрддрдирд╛ рдХрдо рдЖрдкрдХреЛ рдкреНрд▓рдЧрдЗрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛, рдХреНрдпреЛрдВ рдФрд░ рдХреИрд╕реЗ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рддреИрдирд╛рдд рдХрд░реЗрдВ
рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдкреИрдХреЗрдЬ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рднреА рдШрдЯрдХ рдЗрд╕реЗ IDE (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдиреВ рдЖрдЗрдЯрдо, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдВрдбреЛ, рдЖрджрд┐) рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреА рдореБрдЦреНрдп рд╢рд╛рдЦрд╛ рдореЗрдВ рдШрдЯрдХреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ рд╡рд░реНрдЧ (рдкреИрдХреЗрдЬ рдЙрдкрд╡рд░реНрдЧ) рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЧреБрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ VSPackage рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╡рд┐рд╢реЗрд╖ pkgdef рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд░реНрдЬ рдХреА рдЧрдИ рд╣реИред Pkgdef рдлрд╝рд╛рдЗрд▓ рднреА
CreatePkgDef рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреИрдХреЗрдЬ рдЙрдкрд╡рд░реНрдЧ рдХреА рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ .NET рдкреНрд░рддрд┐рдмрд┐рдВрдм рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИред рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
PackageRegademy рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрдВрдЬреАрдХрд░рдг рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдпрд╣ рд╡рд░реНрдЧ рдПрдХ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рд╣реИред рдЗрд╕рдХреА рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдЕрддрд┐рд░рд┐рдХреНрдд рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
[PackageRegistration(UseManagedResourcesOnly = true)]
рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗрдЯ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдЙрдк-рд╢рд╛рдЦрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
[Guid("a0fcf0f3-577e-4c47-9847-5f152c16c02c")]
InstalledProductRegademy рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдкрдХреЛ рдорджрдж -> рдбрд╛рдпрд▓реЙрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рдбреНрдпреВрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕реНрдкреНрд▓реИрд╢ рдмреВрдЯ рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
[InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
ProvAutoLoad рд╡рд┐рд╢реЗрд╖рддрд╛
рдЖрдкрдХреЛ рджрд┐рдП рдЧрдП рдкрд░рд┐рд╡реЗрд╢ рд╕рдВрджрд░реНрдн UI рдХреА рд╕рдХреНрд░рд┐рдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдореЙрдбреНрдпреВрд▓ рдЖрд░рдВрднреАрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЬрдм рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдФрд░ рдкреНрд░рд╛рд░рдВрдн рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбреНрдпреВрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
[ProvideAutoLoad("D2567162-F94F-4091-8798-A096E61B8B50")]
рд╡рд┐рднрд┐рдиреНрди IDE рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ GUID рдХреЛ Microsoft.VisualStudio.VSConstants.UICONTEXT рд╡рд░реНрдЧ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
ProvMenuResource рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрджреЗрд╢реЛрдВ рдХреА рд╕рдВрд╕рд╛рдзрди ID рдФрд░ рдЙрдиреНрд╣реЗрдВ IDE рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдиреВ рд╕реЗрдЯ рдХрд░рддреА рд╣реИред
[ProvideMenuResource("Menus.ctmenu", 1)]
DefaultRegistryRoot рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рд╕реЗрдЯ рдХрд░рддреА рд╣реИред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдХрдВрдЯреЗрдирд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Visual Studio 2008 рдореЗрдВ рдХрд┐рд╕реА рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
[DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\9.0")]
рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛, рдЬреИрд╕реЗ рдЯреВрд▓рдмрд╛рд░ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рдВрдбреЛ, рд╕рдВрдкрд╛рджрдХ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда, рдЖрджрд┐, рдкреИрдХреЗрдЬ рдХреЗ рдХрд╕реНрдЯрдо рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╕реНрд╡рдпрдВ рдШрдЯрдХреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдХрд╕реНрдЯрдо рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдореВрд░реНрдд
рдкрдВрдЬреАрдХрд░рдгрдЕрднрд┐рдпрдВрддрд╛ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдХрд╕реНрдЯрдо рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ
ред [AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)] public class CustomRegistrationAttribute : RegistrationAttribute { }
рдкрдВрдЬреАрдХрд░рдг рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдЕрдкрдВрдЬреАрдХреГрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдгрдЖрд╡рдВрдЯрди рд╡рдВрд╢рдЬ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
RegPkg рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ pkgdef рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ / рд░реВрдЯ рддрд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, RegPkg рдХреЙрд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рд╣реИред рд╕рднреА рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ IDE рдореЗрдВ рд╣реА рдирдП рдШрдЯрдХреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП / рд╕реЗрдЯрдЕрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде Visual Studio рд╡рд╛рддрд╛рд╡рд░рдг (devenv.exe) рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╡рд┐рдХрд╛рд╕ рдорд╢реАрди рдФрд░ рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╢реАрди, рдкреИрдХреЗрдЬ рд▓реЛрдб рдХреБрдВрдЬреА рдкрд░ рдкреНрд▓рдЧрдЗрди рдХреА рддреИрдирд╛рддреА
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдпрдо рдпрд╛рдж рд░рдЦреЗрдВ:
рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдмрдирд╛рддреЗ рд╕рдордп, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрд╕рдбреАрдХреЗ рдХреЗ рдмрд┐рдирд╛ рдорд╢реАрди рдкрд░ рд╣рд░ рдмрд╛рд░ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИредрдЕрдм рдЬрдм рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдкрд╣рд▓реА рд░рд┐рд▓реАрдЬрд╝ рд▓рдВрдмреА рд╣реЛ рдЧрдИ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реЗ рдХрдИ рдЕрд╕рдлрд▓ рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрдП рдереЗред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005/2008 рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрдИрдбреАрдИ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде pkgdef рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП regpkg рд╢реБрд░реВ рдХрд░рдиреЗ рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ pkgdef рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред Pkgdef рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджреЗрд╢ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ):
RegPkg.exe /root:Software\Microsoft\VisualStudio\9.0Exp "/pkgdeffile:obj\Debug\PVS-Studio-vs2008.pkgdef" "C:\MyPackage\MyPackage.dll"
рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ / рд╕реЗрдЯрдЕрдк рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде Visual Studio рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рдПрдХ рдирдП рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реИред
Devenv.exe /setup
рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд▓рд╛рдирд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╣реА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрд▓рдмреНрдз рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд░рдирд┐рдВрдЧ devenv IDE рдХреА GUI рд╡рд┐рдВрдбреЛ рдирд╣реАрдВ рдЦреЛрд▓рддрд╛ рд╣реИред
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ, рд╣рдо RegPkg рдЪрд▓рд╛рдП рдмрд┐рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣ рдЙрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддреГрддреАрдп-рдкрдХреНрд╖ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЕрднреА рднреА RegPkg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреИрдХреЗрдЬ
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ,
рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ
рд╡реАрдПрд╕рдкреАрдПрдХреЗрдЬ рдореЙрдбреНрдпреВрд▓ рдХреА рддреИрдирд╛рддреА рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреИрдХреЗрдЬ рдПрдХ рдорд╛рдирдХ рдУрдкреАрд╕реА (рдУрдкрди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди) рд╕рдВрдЧреНрд░рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдХреА рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдирдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рд╕рд╣рд╛рдпрдХ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдЗрд╕ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ VSIXInstaller.exe рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
VSIXInstaller.exe MyPackage.vsix
рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдореЙрдбреНрдпреВрд▓ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдЕрджреНрд╡рд┐рддреАрдп GUID рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реБрдП / рдЕрдирдЗрдВрд╕реНрдЯреЙрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬ рдХреЛ рднреА рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
VSIXInstaller.exe /uninstall: 009084B1-6271-4621-A893-6D72F2B67A4D
VSIX рдХрдВрдЯреЗрдирд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдПрдХ рд╡рд┐рд╢реЗрд╖ vsixmanifest рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд▓рдЧрдЗрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Vsixmanifest рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рд╕рдВрд╕реНрдХрд░рдг;
- рдореЙрдбреНрдпреВрд▓ рдХрд╛ GUID;
- рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХ (VSPackage, MEF рдШрдЯрдХ, рдЯреВрд▓рдмреЙрдХреНрд╕ рдирд┐рдпрдВрддреНрд░рдг, рдЖрджрд┐);
- рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ (рд╡рд┐рд╡рд░рдг, рд▓рд╛рдЗрд╕реЗрдВрд╕, рд╕рдВрд╕реНрдХрд░рдг, рдЖрджрд┐) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реАред
рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдирд╡реЗрдХрд╡рд┐рдХреНрд╕ рдиреЛрдб рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЖрдк рдЧреБрдг рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ SolutionExplorer рдореЗрдВ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЪрдпрди рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
<Content Include="MyPackage.pdb"> <IncludeInVSIX>true</IncludeInVSIX> </Content>
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рдирд╡реАрдирддрдо рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди (20010 рдФрд░ 2012) рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг-рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ "рдПрдХ-рдХреНрд▓рд┐рдХ" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред IDE рдПрдХреНрд╕рдЯреЗрдВрд╢рди
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЧреИрд▓рд░реА рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ VSIX рдкреИрдХреЗрдЬ рдХрд╛ рдкреНрд░рдХрд╛рд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЯреВрд▓ -> рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореИрдиреЗрдЬрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рдВрд╡рд╛рдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
VSIX рдЖрдкрдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдирд┐рдпрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдФрд░ рдЕрд▓рдЧ-рдерд▓рдЧ рдФрд░ рдПрдХреАрдХреГрдд рдЧреЛрд▓реЗ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ Visual Studio рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрдЬрд╛рдп рдРрд╕реЗ рд▓рдХреНрд╖реНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ 6.1 рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА: "AtmelStudio, 6.1ред" рдпрджрд┐ рдЖрдкрдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ (рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕, рдПрдХ рдЕрдореВрд░реНрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА, рдЖрджрд┐ рдХреЗ рд╕рд╛рде) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреБрдЕрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ) , рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реЗрд▓ рдХреЗ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рднреА рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдмрджрд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрддреНрдкрд╛рджреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
VS2010 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ VSIX- рдЖрдзрд╛рд░рд┐рдд рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдиреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдФрд░ рдбреЗрд╡рд▓рдкрд░) рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛ред рдФрд░ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд▓рдЧ-рдЗрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗрд╡рд▓ рд╡реАрдПрд╕2010 рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдмрд╕ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореИрдиреЗрдЬрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕рдВрднрд╡ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓реЗрдВ рд╣рдореЗрд╢рд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдФрд░ рджреЛрдиреЛрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореИрдиреЗрдЬрд░ рдФрд░ рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЦреЛрдЬрдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рд╕реНрдерд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рд╕реНрдерд╛рдкрд┐рдд рдкреНрд▓рдЧ-рдЗрди рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдкреИрдХреЗрдЬ рд▓реЛрдб рдХреБрдВрдЬреА
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ VSPackage рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп PLK (рдкреИрдХреЗрдЬ рд▓реЛрдб рдХреА) рдХреБрдВрдЬреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред PLK рдХреБрдВрдЬреА IDE рд╕рдВрд╕реНрдХрд░рдгреЛрдВ 2005 рдФрд░ 2008 рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╡рд░реНрдЧ рдХреА ProvLoadKey рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИред
[ProvideLoadKey("Standard", "9.99", "MyPackage", "My Company", 100)]
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд, рдкреАрдПрд▓рдХреЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдкреНрд░реЛрд╡реНрд▓рд╛рдбрдХреЗрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓ рдПрдордПрд╕рд╡реАрдПрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реЛред PLK рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
Visual Studio Industry Partners рдкреЛрд░реНрдЯрд▓ рдкрд░ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛рдиреА PLK рдХреБрдВрдЬреА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдХреЗрд╡рд▓ Microsoft рдкреНрд░рдорд╛рдгрд┐рдд рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рдПрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, Visual Studio SDK рд╕реНрдерд╛рдкрд┐рдд рдорд╢реАрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИред рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреБрдВрдЬреА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдкреАрдПрд▓рдХреЗ рдХреБрдВрдЬреА рдХреА рд╡реИрдзрддрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдЙрдкрдпреБрдХреНрдд рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдФрд░ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдорд╢реАрди рдкрд░ рддреИрдпрд╛рд░ рд╡рд┐рддрд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдпрд╛рдж рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдиреЗ рдЧрд▓рдд PLK рдХреБрдВрдЬреА рд╕реЗрдЯ рдХреА рд╣реИ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдХреА рдорд╢реАрди рдкрд░ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЯреЗрдВрд╢рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, VSPackage рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ devenv / рдирд╡реАрдиреАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ IDE рдХрд╛ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд░рдмрдВрдзрд┐рдд рд░реИрдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА API рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред Visual Studio рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗред
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП), рдЖрдкрдХреЛ DefaultRegistryRoot рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рджрд┐рдП рдЧрдП рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ (рд╕рдВрд╕реНрдХрд░рдг 2005 рдФрд░ 2008 рдХреЗ рд▓рд┐рдП, Visual Studio 2010 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓реЗрдВ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреНрд░рдХрдЯ (2008 рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП)ред
рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рд╕рдорд░реНрдерди рдХреЗрд╡рд▓ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 (рдФрд░ рдирдП рд╕рдВрд╕реНрдХрд░рдг) рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧ-рдЗрди рдмрдирд╛рдиреЗ рдФрд░ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдкрдВрдЬреАрдХрд░рдг рдЪрд░рдгреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреНрд░рдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ред рдЖрдИрдбреАрдИ рдХреЗ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, COM рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рдмрдВрдзрд┐рдд рдкреНрд▓рдЧ-рдЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд░реИрдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВред
рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдЖрдИрдбреАрдИ рдХреЗ рд▓рдХреНрд╖реНрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдкреИрдХреЗрдЬ рд╡рд░реНрдЧ рдХреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИрдВ:
- Visual Studio 2010 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, InstalledProductRegademy рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ (рдмреВрд▓рд┐рдпрди, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕реНрдЯреНрд░рд┐рдВрдЧ, рд╕реНрдЯреНрд░рд┐рдВрдЧ) рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ;
- DefaultRegistryRoot рдФрд░ ProvLoadKey рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ 10 рд╡реАрдВ рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИ (рдпрд╛рдиреА рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рд╕реЗ рд╢реБрд░реВ), рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореВрд▓реНрдп рдЕрдм рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ;
рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓рд┐рдВрдХ
- MSDNред рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдирд┐рд░реНрдорд╛рдгред
- MSDNред рдХреИрд╕реЗ: рдПрдХ VSPackage рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВред
- MSDNред рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рддреИрдирд╛рддреАред
- MSDNред рдХреИрд╕реЗ рдХрд░реЗрдВ: VSPackage рдХреЗ рд▓рд┐рдП PLK рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- MZ-рдЙрдкрдХрд░рдгред Visual Studio .NET рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиред
- MSDNред рдРрдб-рдЗрдиреНрд╕ рдФрд░ рд╡рд┐рдЬрд╛рд░реНрдб рдмрдирд╛рдирд╛ред
- MSDNред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
- MSDNред рд╢реИрд▓ (рдПрдХреАрдХреГрдд рдпрд╛ рдкреГрдердХ)ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓, EnvDTE, рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢реИрд▓ рдЗрдВрдЯрд░реЙрдк рдЗрдВрдЯрд░рдлреЗрд╕
рдпрд╣ рдЦрдВрдб рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореЙрдбрд▓ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдСрдмреНрдЬреЗрдХреНрдЯ DTE / DTE2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореЙрдбрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рднреА рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдореЗрдВ COM рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЗрдВрдЯрд░реИрдХреНрд╢рди рддрдВрддреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд░рд┐рдЪрдп
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд╛ рдорд╛рд╣реМрд▓ рдСрдЯреЛрдореЗрд╢рди рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирдХ рдФрд░ рдХрд╕реНрдЯрдо рджреЛрдиреЛрдВ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрдИ рдкрд░рд╕реНрдкрд░ рдкреВрд░рдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рд╣реИред
рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ IDE рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдФрд░ рдЗрд╕рдХреА рд╡реНрдпрд╛рдкрдХрддрд╛ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╣рд▓реБрдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рд╡реНрдпрд╛рдкрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╕реЗрдЯ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдпрд╣ рдореЙрдбрд▓, рдЕрдиреНрдп рдЖрдИрдбреАрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЯреВрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рдЖрдИрдбреАрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреА рдЪрд┐рдВрддрд╛ рдХрд░рддрд╛ рд╣реИ), рдпрд╣ рд╕рдмрд╕реЗ рд▓рдЪреАрд▓рд╛ рдФрд░ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЯреВрд▓ рд╣реИред
рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдИрдбреАрдИ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреЛ рдмрд╛рд╣рд░реА рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЙрдбрд▓ рдЦреБрдж рд╣реА рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдХрд╕реНрдЯрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдирдП рдХрд╕реНрдЯрдо рдШрдЯрдХ рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВредрд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ рдореЙрдбрд▓ рд╕рдВрд░рдЪрдирд╛
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рднреА рдореБрдЦреНрдп рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╕рдореВрд╣ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡реИрд╢реНрд╡рд┐рдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ DTE (рд╡рд┐рдХрд╛рд╕ рдЙрдкрдХрд░рдг рдкрд░реНрдпрд╛рд╡рд░рдг) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдореВрд╣ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рд╣реИред рдЪрд┐рддреНрд░рд╛ 1 рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рди рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ рдореЙрдбрд▓ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдЪрд┐рддреНрд░ 1 - рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ (рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд┐рддреНрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) рдореЙрдбрд▓ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ (рдирдИ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдирдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди);
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЙрдбрд▓ (рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди);
- рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рд╕реНрддрд░ рдореЙрдбрд▓ (рдирдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдорд░реНрдерди);
- рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдореЙрдбрд▓ред
рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗрд╡рд▓ VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИредрд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ 2 рдмрдбрд╝реЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдореВрд╣ 1 - рдПрдирд╡реАрдбреАрдЯреАрдИ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрдЯрд░реЛрдк рдиреЗрдорд╕реНрдкреЗрд╕ рдЗрдВрдЯрд░рдлреЗрд╕, рдЬреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдмреБрдирд┐рдпрд╛рджреА рдШрдЯрдХреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рдВрдкрд╛рджрдХреЛрдВ, рдЯреВрд▓рдмрд╛рд░, рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛ рд╕рдореВрд╣ - рдпреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЗрд╕ рд╕рдореВрд╣ рдХреЛ рджреЗрд░ рд╕реЗ рдмрдВрдзреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рд╕реЗ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдирдХ (рдпрд╛рдиреА рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рддрд░рдг рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓) рдбрд┐рдЬрд╝рд╛рдЗрди рдореЙрдбрд▓, рдЬреИрд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ C ++ рдпрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рдмреЗрд╕рд┐рдХ, рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рднреА рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреНрд░рджрд╛рди рдХрд░рдирд╛редрдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдкрд╣рд▓реЗ рд╕рдореВрд╣ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛рдлреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИрдВ рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдпрд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ \ рдПрдХреАрдХреГрдд рдЧреЛрд▓реЗ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб \ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рд╢реЗрд▓) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рдЦрдВрдб рдореЗрдВ, рд╣рдо рдЗрд╕ рд╕рдореВрд╣ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдиреНрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗредрдлрд┐рд░ рднреА, рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рд╕рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рдореВрд╣реЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореЙрдбрд▓ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдРрдб-рдЗрди рдпрд╛ VSPackage рдЬреИрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдмрдВрдзреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЪреБрдирддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПредMicrosoft.VisualStudio.Shell.Interop рдирд╛рдо рд╕реНрдерд╛рди рднреА COM рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред MPF (рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрдХреНрд╖рд╛рдПрдВ рдЬреЛ рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддреЗ рдереЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ VSPackage рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдЗрдВрдЯрд░рдлреЗрд╕ рд╡реАрд╡реА рдкреИрдХреЗрдЬ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдПрдирд╡реАрдбреАрдЯреАрдИ рдореЙрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИредDTE / DTE2 рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╕реАрдзреЗ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдирд╡реАрдбреАрдЯреАрдИ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдПрдкреАрдЖрдИ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЖрд╡рд░рдгреЛрдВ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рджреВрд╕рд░реЗ, рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХреЗ рдореБрдЦреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - DTE2 рдЗрдВрдЯрд░рдлрд╝реЗрд╕редрд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рдХреБрдЫ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИред рдореМрдЬреВрджрд╛ рдПрдВрдЬрд╝рдбреЗ рдореЙрдбреНрдпреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреБрд░рд╛рдиреЗ EnvDTE рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдирдП EnvDTE80, EnvDTE90, EnvDTE100, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдиреЗрдорд╕реНрдкреЗрд╕ рдмрдирд╛рдП рдЧрдП рдереЗред рдЗрди рдирдП рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛ рдирд╛рдо рдПрдирд╡реАрдбреАрдЯреАрдИ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдПрдХ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рдзрд╛рди рдФрд░ рд╕рдорд╛рдзрд╛рди 2ред рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╕рдордп рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдореЗрдВ рд╕рдмрд╕реЗ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ DTE2 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓реМрдЯрд╛рддреА рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдкреНрд░рдХрд╛рд░ DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВ, рдЕрд░реНрдерд╛рддред dte2.Solution рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╕рдордп, рд╕рдорд╛рдзрд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, Solution2 рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИредрдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдирдП EnvDTE80, EnvDTE90, EnvDTE100 рдиреЗрдорд╕реНрдкреЗрд╕ рдореЗрдВ рдХреБрдЫ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИ, рдпрд╣ EnvDTE рдореЗрдВ рд╣реИ рдХрд┐ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдереЛрдХ рдЕрднреА рднреА рд╕реНрдерд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдореМрдЬреВрджрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП COM рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдкреНрд░рдмрдВрдзрд┐рдд рд░реИрдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рд╛рде рд╣реА рдбреАрдЯреАрдИ рдФрд░ рдбреАрдЯреАрдИ 2 рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИредрдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЖрдкрдХреЛ рд╢реАрд░реНрд╖ EnvDTE рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдорд┐рд▓рддрд╛ рд╣реИ, рд╡рд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ Visual Studio рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо 3 рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ: рдРрдб-рдЗрди, рд╡реАрдПрд╕рдкреАрдПрд╕реАрдПрдЬ, рдФрд░ рдПрдордПрд╕рд╡реАрдПрд╕ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдПрдХ рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛редрд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
рдРрдб-рдЗрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдСрдирдХреЛрдиреЗрдХреНрд╢рди рд╡рд┐рдзрд┐ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ IDTExtensibility рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП , рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдРрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмреАрдЪ рд╕рдВрдкрд░реНрдХ рдХреА рдШрдЯрдирд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред OnConncetion рд╡рд┐рдзрд┐ рдХреЛ рдЙрд╕ рд╕рдордп рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдореЙрдбреНрдпреВрд▓ рдХреЛ IDE рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдмреВрдЯ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдпрд╛ рдЙрд╕рдХреЗ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _dte2 = (DTE2)application; ... }
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдРрдб-рдЗрди рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдЦреБрдж рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд╕рдордп, рдФрд░ IDE рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рджреЛрдиреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЖрдк OnConnection рд╡рд┐рдзрд┐ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ConnectMode рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред switch(connectMode) { case ext_ConnectMode.ext_cm_UISetup: ... break; case ext_ConnectMode.ext_cm_Startup: ... break; case ext_ConnectMode.ext_cm_AfterStartup: ... break; case ext_ConnectMode.ext_cm_CommandLine: ... break; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдРрдб-рдЗрди рдХреЛ рдЙрд╕реА рд╕рдордп рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЖрдИрдбреАрдИ рдЦреБрдж рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реЛ (рдРрдб-рдЗрди рдореИрдиреЗрдЬрд░ рдореЗрдВ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ), рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдЬрдм рдЗрд╕реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред Ext_ConnectMode.ext_cm_UISetup рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ 1 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреА рдкрд╣рд▓реА рд▓реЛрдбрд┐рдВрдЧ рдкрд░ред рдпрд╣ рд╡рд┐рдХрд▓реНрдк UI рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ рдПрдХреАрдХреГрдд рддрддреНрд╡реЛрдВ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ (рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА)редрдпрджрд┐ рдРрдб-рдЗрди рдХреЛ Visual Studio (ext_ConnectMode.ext_cm_Startup) рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ OnConnect рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХреНрд╖рдг рдореЗрдВ рд╡рд╛рддрд╛рд╡рд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд░рдВрднрд┐рдХ рди рд╣реЛред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдЕрдВрдд рддрдХ рд╕реАрдзреЗ рдбреАрдЯреАрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк IDTExtensibility рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП OnStartupComplete рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред public void OnStartupComplete(ref Array custom) { ... }
Vspackage рдПрдХреНрд╕рдЯреЗрдВрд╢рди
VSPackage рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП, DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреИрдХреЗрдЬ рдХреНрд▓рд╛рд╕ рдХреЗ рдЧреЗрдЯрд╕реНрд╡реЗрд╕реНрдЯ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: DTE dte = MyPackage.GetService(typeof(DTE)) as DTE;
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрд░рдВрднрд┐рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЧреЗрдЯрд╕реНрд╡реЗ рд╡рд┐рдзрд┐ рднреА рдЕрд╢рдХреНрдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдпрд╣ рддрдерд╛рдХрдерд┐рдд "рдЬрд╝реЛрдВрдмреА" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рд╕рд╣реА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдк DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕реНрдердЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛред рдпрджрд┐ рдЖрдкрдХреЛ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рд╕реАрдзреЗ рдбреАрдЯреАрдИ рд▓рд┐рдВрдХ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк IVsShellPropertyEvents рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдЗрд╕рдореЗрдВ рд╕реЗ рд╣рдорд╛рд░реЗ рдЙрдкрд╡рд░реНрдЧ рдкреИрдХреЗрдЬ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд▓рд┐рдВрдХ рдХреЛ OnShellPropertyEhange рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред DTE dte; uint cookie; protected override void Initialize() { base.Initialize(); IVsShell shellService = GetService(typeof(SVsShell)) as IVsShell; if (shellService != null) ErrorHandler.ThrowOnFailure( shellService.AdviseShellPropertyChanges(this,out cookie)); ... } public int OnShellPropertyChange(int propid, object var) {
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, IDE рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣реЛ рд╕рдХрддреА рд╣реИред рддреЛ VS2005 рдФрд░ VS2008 рдореЗрдВ, рдЙрдирдХреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рддреЗрдЬреА рд╕реЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, DTE рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ рд╢реВрдиреНрдп рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛рдПрдЧреАред Visual Studio 2010 рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ () рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА DTE рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдзрд╛рд░рдгрд╛ рднреНрд░рд╛рдордХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ DTE рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ "рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ" рд╣рд╛рд░реНрдб-рдЯреВ-рдХреИрдЪ рдПрд░рд░ рдХрд╛ рдЖрднрд╛рд╕ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рдордп DTE рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, Visual Studio рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рд╡рд░реНрдгрд┐рдд IDE рд▓реЛрдб рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рдзрд┐ рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рди рдХрд░реЗрдВредрд╕реНрд╡рддрдВрддреНрд░ рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛
рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдореЗрдВ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП DTE рдПрдХ рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдХрд╛ рдЕрдореВрд░реНрдд рд╣реИред рдмрд╛рд╣рд░реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЗрд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ ProgID COM рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Visual Studio 2010 рдХреЗ рд▓рд┐рдП VisualStudio.DTE.10.0ред рдпрд╣рд╛рдВ рдПрдХ рдирдП IDE рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ GTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ CreateInstance рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ devenv.exe рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдХреЗ рдПрдХ рдирдИ DTE рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ GUI рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХреНрдЯрд┐рд╡реЗрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ DTE рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛: EnvDTE80.DTE2 dte2; dte2 = (EnvDTE80.DTE2) System.Runtime.InteropServices.Marshal.GetActiveObject( "VisualStudio.DTE.10.0");
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ IDE рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЧрдП рдереЗ, рддреЛ GetActiveObject рдкрджреНрдзрддрд┐ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдкрд╣рд▓реЗ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд▓реМрдЯрд╛рдПрдЧреАред рдЗрд╕рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреАрдЖрдИрдбреА тАЛтАЛрджреНрд╡рд╛рд░рд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдЪрд▓ рд░рд╣реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдбреАрдЯреАрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред using EnvDTE80; using System.Diagnostics; using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; [DllImport("ole32.dll")] private static extern void CreateBindCtx(int reserved, out IBindCtx ppbc); [DllImport("ole32.dll")] private static extern void GetRunningObjectTable(int reserved, out IRunningObjectTable prot); public static DTE2 GetByID(int ID) {
рдпрд╣рд╛рдВ рд╣рдореЗрдВ DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд┐рд▓рд╛, рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ COM рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (ROT, рд░рдирд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдЯреЗрдмрд▓) рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ IDE рдЙрджрд╛рд╣рд░рдг рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ред рдЕрдм рд╣рдо рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЪрд▓ рд░рд╣реЗ рдХрд┐рд╕реА рднреА Visual Studio рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП DTE рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: Process Devenv; ...
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдХрд╕реНрдЯрдо рдореЙрдбрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╣рд┐рдд) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CSharpProjects рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдореМрдЬреВрджрд╛ DTE рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЖрдк GetObject рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: Projects projects = (Projects)dte.GetObject("CSharpProjects");
GetObject рд╡рд┐рдзрд┐ рдорд╛рдирдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓реМрдЯрд╛рдПрдЧреА, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ, рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдгреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдЧрд╛редрд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдбреЙрдХреНрдпреБрдореЗрдВрдЯреНрд╕
рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ TextDocument рдкрд╛рда рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд╛рда рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ ред рд╕реНрд░реЛрдд C / C ++ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдкрд╛рда рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрд▓реА рдЬрд╛рддреА рд╣реИрдВред TextDocument рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ( рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ) рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдВрдкрд╛рджрдХ рдпрд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдЦреЛрд▓реА рдЧрдИ рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ IDE рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдПрдХ рд╕рдХреНрд░рд┐рдп (рдпрд╛рдиреА, рдЦреБрд▓рд╛ рдФрд░ рдлреЛрдХрд╕ рд╣реЛрдиреЗ) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рда рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред EnvDTE.TextDocument objTextDoc = (TextDocument)PVSStudio.DTE.ActiveDocument.Object("TextDocument");
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдкрд╛рджрди
TextSelection рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рдкрд╛рда рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЪрдпрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд░реАрдХреЗ рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдЖрдкрдХреЛ UI рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред EnvDTE.TextDocument Doc = (TextDocument)PVSStudio.DTE.ActiveDocument.Object(string.Empty); Doc.Selection.SelectLine(); TextSelection Sel = Doc.Selection; int CurLine = Sel.TopPoint.Line; String Text = Sel.Text; Sel.Insert("test\r\n");
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдХрд░реНрд╕рд░ рдХреЗ рдиреАрдЪреЗ рдкрд╛рда рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЪрдпрдирд┐рдд рдкрд╛рда рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рдЯреЗрд╕реНрдЯ' рд╕реЗ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВредTextDocument рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднреА рдЖрдкрдХреЛ EditPoint рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкрд╛рда рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ TextSelection рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдЖрдкрдХреЛ рдкрд╛рда рдмрдлрд░ рдбреЗрдЯрд╛ рдХреЛ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рд╕реАрдзреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдкрд╛рда рдХреЗред рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд░ рд╡рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдкреЗрд╕ рдЬреИрд╕реЗ рд╕рдВрдкрд╛рджрдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрди рд╕рдВрдкрд╛рджрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓-рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рд╕реЗ рдкрд╛рда рдХреЗ рдЕрдиреБрднрд╛рдЧ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВредрдпрд╣рд╛рдВ EditPoint рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкрд╛рджрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкрд╛рджрди рдХреА рд╡рд░реНрддрдорд╛рди рдкрдВрдХреНрддрд┐ (рдПрдХ рдХрд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐) рдХреЗ рдЕрдВрдд рдореЗрдВ рдкрд╛рда рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред objEditPt = objTextDoc.StartPoint.CreateEditPoint(); int lineNumber = objTextDoc.Selection.CurrentLine; objEditPt.LineDown(lineNumber - 1); EditPoint objEditPt2 = objTextDoc.StartPoint.CreateEditPoint(); objEditPt2.LineDown(lineNumber - 1); objEditPt2.CharRight(objEditPt2.LineLength); String line = objEditPt.GetText(objEditPt.LineLength); String newLine = line + "test"; objEditPt.ReplaceText(objEditPt2, newLine, (int)vsEPReplaceTextOptions.vsEPReplaceTextKeepMarkers);
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдиреЗрд╡рд┐рдЧреЗрд╢рди
VSPackage рдЬреИрд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрд╡рд╛рдПрдБ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЦреЛрд▓рдиреЗ рдФрд░ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рд╕реЗрд╡рд╛ рдбреЗрдЯрд╛ рдкреИрдХреЗрдЬ рдХреЗ рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред GGGlobalService () рд╡рд┐рдзрд┐ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣рд╛рдБ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ EnvDTE рдореЙрдбрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ Visual Studio рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдпреЗ рд╕реЗрд╡рд╛рдПрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИрдВ рдЬрдм рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдЖрдИрдбреАрдИ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЙрди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред IVsUIShellOpenDocumentрдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рдЦреБрд▓реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЦреЛрд▓рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред String path = "C:\Test\test.cpp"; IVsUIShellOpenDocument openDoc = Package.GetGlobalService(typeof(IVsUIShellOpenDocument)) as IVsUIShellOpenDocument; IVsWindowFrame frame; Microsoft.VisualStudio.OLE.Interop.IServiceProvider sp; IVsUIHierarchy hier; uint itemid; Guid logicalView = VSConstants.LOGVIEWID_Code; if (ErrorHandler.Failed( openDoc.OpenDocumentViaProject(path, ref logicalView, out sp, out hier, out itemid, out frame)) || frame == null) { return; } object docData; frame.GetProperty((int)__VSFPROPID.VSFPROPID_DocData, out docData);
рдлрд╝рд╛рдЗрд▓ рдпрд╛ рддреЛ рдПрдХ рдирдП рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЦреЛрд▓реА рдЬрд╛рдПрдЧреА, рдпрд╛ рдЙрд╕рдХреЗ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдлрд╝реЛрдХрд╕ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡рд╣ рдкрд╣рд▓реЗ рд╣реА рдЦреЛрд▓рд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реЛред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рдУрдкрди рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рд╕реЗ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд░ рдЯрд╛рдЗрдк VsTextBuffer рдорд┐рд▓рддрд╛ рд╣реИ ред
IVsTextManager рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рдЙрди рд╕рднреА рдЯреЗрдХреНрд╕реНрдЯ рдмрдлрд╝рд░реНрд╕ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдмрдлрд╝рд░ рдореЗрдВ NavigateToLineAndColumn рдкрд╛рда рдкреНрд░рдмрдВрдзрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд╛рда рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: IVsTextManager mgr = Package.GetGlobalService(typeof(VsTextManagerClass)) as IVsTextManager; mgr.NavigateToLineAndColumn(buffer, ref logicalView, line, column, line, column);
рд╕рджрд╕реНрдпрддрд╛ рдФрд░ рдШрдЯрдирд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ
рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ рдШрдЯрдирд╛рдУрдВ рдХреЛ DTE.Events рдХреЗ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд▓реЛрдЧреЛрдВ рд╕рд╣рд┐рдд рдорд╛рдирдХ (рд╕рд╛рдорд╛рдиреНрдп) IDE рдИрд╡реЗрдВрдЯ (CommandEvents, SolutionEvents), рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкрд░реНрдпрд╛рд╡рд░рдг рддрддреНрд╡реЛрдВ (рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ, рд╕рдВрдкрд╛рджрдХ, рдЙрдкрдХрд░рдг, рдЖрджрд┐) рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк GetObject рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЬрдм рдбреАрдЯреАрдИ рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрд┐рд╕ рд╕рдордп рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдСрд░реНрдбрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЖрд░рдВрдн рдХреЗ рд╕рдордп DTE.Events рдХреА рд╕рджрд╕реНрдпрддрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрд╕реА рд╕рдордп, DTE рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреНрд╖рдг рдХрд╛ рд╕рд╣реА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИредрд╣рдо VCProjectEngineEvents рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд Visual C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рдорд╛рдзрд╛рди рдкреЗрдбрд╝ рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВрдЧреЗ: VCProjectEngineEvents m_ProjectItemsEvents = PVSStudio.DTE.Events.GetObject("VCProjectEngineEventsObject") as VCProjectEngineEvents; m_ProjectItemsEvents.ItemRemoved += new _dispVCProjectEngineEvents_ItemRemovedEventHandler( m_ProjectItemsEvents_ItemRemoved);
рдПрдордбреАрдЖрдИ рд╡рд┐рдВрдбреЛ рдЗрд╡реЗрдВрдЯреНрд╕
рдЖрдк рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рдВрдбреЛ рдореЗрдВ рдорд╛рдирдХ MDI рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Events.WindowEvents рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╣реИрдВрдбрд▓рд░ (EnvDTE.Window рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛: WindowEvents WE = PVSStudio.DTE.Events.WindowEvents; WE.WindowActivated += new _dispWindowEvents_WindowActivatedEventHandler( Package.WE_WindowActivated);
рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реМрдВрдкрдирд╛ WindowEvents рдкреНрд░реЙрдкрд░реНрдЯреА рдЗрдВрдбреЗрдХреНрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрднрд╡ рд╣реИ: WindowEvents WE = m_dte.Events.WindowEvents[MyPackage.DTE.ActiveWindow]; WE.WindowActivated += new _dispWindowEvents_WindowActivatedEventHandler( MyPackage.WE_WindowActivated);
рдЯреАрдо рдЖрдИрдбреАрдИ рдЗрд╡реЗрдВрдЯреНрд╕
рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рдХрд╛рдо рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЖрджреЗрд╢реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдШрдЯрдирд╛рдУрдВ (рд▓реЗрдХрд┐рди рдЖрджреЗрд╢реЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдирд╣реАрдВ) рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗред рдИрд╡реЗрдВрдЯреНрд╕ рдХреЛ рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдИрд╡реЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред MDE рд╡рд┐рдВрдбреЛ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди CommandEvents рдкреНрд░реЙрдкрд░реНрдЯреА, рдЖрдкрдХреЛ рд╕рднреА IDE рдХрдорд╛рдВрдбреНрд╕ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредрдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рд╣реИрдВрдбрд▓рд░ рд╕реМрдВрдкрдирд╛: CommandEvents CEvents = DTE.Events.CommandEvents; CEvents.AfterExecute += new _dispCommandEvents_AfterExecuteEventHandler(C_AfterExecute);
рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрдорд╛рдВрдб рдХреЛ рд╣реИрдВрдбрд▓рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рдХреЛ GUID: ID рдХреА рдПрдХ рдЬреЛрдбрд╝реА рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП, рдпреЗ рдорд╛рди рд╕реАрдзреЗ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм рдбреЗрд╡рд▓рдкрд░ рдХрдорд╛рдВрдб рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ (рд╡реАрдПрд╕рд╕реАрдЯреА) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдореЛрдб рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдирд┐рдореНрди рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Visual Studio 2010): [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\General] "EnableVSIPLogging"=dword:00000001
рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, CTRL + SHIFT рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЖрдпреЛрдЬрд┐рдд рдорд╛рдЙрд╕ рдмреЙрдХреНрд╕ рдкрд░ (рдХрднреА-рдХрднреА рдпрд╣ рддреБрд░рдВрдд рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рддреЛ рддреБрд░рдВрдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдорд╛рдВрдб рдХреЗ рд╕рднреА рдЖрдВрддрд░рд┐рдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрддреЗ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ, рд╣рдо рдЧрд╛рдЗрдб рдФрд░ CmdID рдХреЗ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред File.NewFile рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: CommandEvents CEvents = DTE.Events.CommandEvents[ "{5EFC7975-14BC-11CF-9B2B-00AA00573819}", 221]; CEvents.AfterExecute += new _dispCommandEvents_AfterExecuteEventHandler(C_AfterExecute);
рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрддрд╛ рд╣реИред void C_AfterExecute(string Guid, int ID, object CustomIn, object CustomOut) { ... }
рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╣реИрдВрдбрд▓рд░ (рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж) рдХреЛ рднреНрд░рдорд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдЬрдм рдпрд╣ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдпрджрд┐ рдХрдорд╛рдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ)ред рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЖрдИрдбреАрдИ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдЗрд╕ рдЙрдкрдзрд╛рд░рд╛ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХреЗрдЬ (VSPackage) рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рдереЗ, рдЬрд┐рд╕рдореЗрдВ рдмрджрд▓реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╣реИрдВрдбрд▓рд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ (рдЬреИрд╕реЗ рдХрдорд╛рдВрдбрд╡рд╛рдЗрд╡, рд╡рд┐рдВрдбреЛрдЗрд╡реЗрдВрдЯреНрд╕ рдФрд░ рдЕрдиреНрдп), рдЦреЗрддреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдереЗред рд╣рдорд╛рд░рд╛ рдореБрдЦреНрдп рдЙрдкрд╡рд░реНрдЧ рдкреИрдХреЗрдЬ рд╣реИред рдЬрдм рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реИрдВрдбрд▓рд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЦреЛ рдЧрдпрд╛ рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ .NET рдЧрд╛рд░рдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдФрд░ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдбреАрдЯреАрдИ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдРрд╕реА рд╡рд╕реНрддреБ рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЬреАрд╡рдирдХрд╛рд▓ рдореЗрдВ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИредрдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ (VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП)
Microsoft.VisualStudio.Shell.Interop рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдЖрдкрдХреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рд╕реАрдзреЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реАрдзреЗ рдПрдирд╡реАрдбреАрдЯреАрдИ рдСрдЯреЛрдореЗрд╢рди рдореЙрдбрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрдиреНрд╣реЗрдВ рд╡реАрдПрд╕ рдкреИрдХреЗрдЬ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдореБрдЦреНрдп рд╡рд░реНрдЧ (рдпрд╛рдиреА, рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдкреИрдХреЗрдЬ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдЧ) рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдбреАрдЯреАрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдореВрд▓ рд╕реЗрдЯ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣, рд╡реИрд╕реЗ, рдПрдордкреАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреВрд░реНрдг рдкреНрд▓рдЧрдЗрди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рдФрд░ рддрд░реНрдХ рд╣реИредрдЗрдВрдЯрд░рдлрд╝реЗрд╕ IVsSolutionEventsрд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкреИрдХреЗрдЬ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдЕрд▓рдЧ-рдЕрд▓рдЧ \ рдПрдХреАрдХреГрдд рдЧреЛрд▓реЗ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЗрд╕реЛрд▓реЗрдЯреЗрдб \ рдЗрдВрдЯреАрдЧреНрд░реЗрдЯреЗрдб рд╢реЗрд▓)ред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ OnAfterCloseSolution, OnBeforeCloseProject, OnQueryCloseSolution, рдЖрджрд┐ рдЬреИрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓реЛрдбрд┐рдВрдЧ, рдЕрдирд▓реЛрдбрд┐рдВрдЧ, рдЦреЛрд▓рдиреЗ рдФрд░ рдмрдВрдж рдХрд░рдиреЗ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
public int OnAfterLoadProject(IVsHierarchy pStubHierarchy, IVsHierarchy pRealHierarchy) {
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреБрд░реВрдк IVsHierarchy рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдкрд░ рдЕрд▓рдЧ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАредрдЗрдВрдЯрд░рдлрд╝реЗрд╕ IVsSolutionLoadEventsрдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдорд╛рди, рдкреИрдХреЗрдЬ рд╕рдмрдХреНрд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдРрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдХреНрд╖рдгреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдмреИрдЪ рдореЛрдб рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рддрд░реАрдХреЗ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░рдирд╛ (рдкреГрд╖реНрдарднреВрдорд┐) рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ (рддрд░реАрдХреЗ OnBeforeLoadProjectBatch рдФрд░ OnBeforeBackgroundSolutionBadins)ред , рд╕рд╛рде рд╣реА рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЛрдбрд┐рдВрдЧ (OnAfterBackgroundSolutionLoadComplete рд╡рд┐рдзрд┐) рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЛ рдкрдХрдбрд╝реЗрдВред рдпреЗ рд╣реИрдВрдбрд▓рд░ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЗ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдЗрд╕рдХреЗ рдЖрд░рдВрдн рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреБрдЫ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рдЗрд╕рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ / рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдХрд╛рд░рдг рдЧрд▓рдд (рдЕрдкреВрд░реНрдг) рдкрд░рд┐рдгрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИрдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреЗрдбрд╝ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреНрд░рдо рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рд▓рд┐рдПредрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧ-рдЗрди рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкрд╣рд▓реВ рдкрд░ рдЖрдПред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдПрдХ рдкреИрдХреЗрдЬ рдореЙрдбреНрдпреВрд▓, рдЗрд╕рдХреА рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдкреВрд░рд╛ рдХрд┐рдП рдмрд┐рдирд╛, рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ), рддреЛ рдЕрдиреНрдп рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг рдЕрд╡рд░реБрджреНрдз рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рд▓реЛрдб рдФрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореБрдЦреНрдп рдкреНрд▓рдЧрдЗрди рд╡рд░реНрдЧ рдХреЛ рдЙрдирд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: class MyPackage: Package, IVsSolutionLoadEvents, IVsSolutionEvents {
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд▓рд░ рд╕реНрдХреАрдо рд╕рдкреЛрд░реНрдЯ
рдпрджрд┐ рдкреНрд▓рдЧ-рдЗрди рдЖрдк рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд╛рджреНрдп рдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдПрдордбреАрдЖрдИ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЛ рдЬреЛрдбрд╝рдХрд░ (рдФрд░ рдпрд╣ рдПрдХреАрдХрд░рдг VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рдХреА рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЛ рджреГрд╢реНрдп рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕рд╛рдорд╛рдиреНрдп рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред рд╕реНрдЯреВрдбрд┐рдпреЛред рдпрд╣ рдХрд╛рд░реНрдп рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдВрдЧ рдпреЛрдЬрдирд╛рдУрдВ (рдбрд╛рд░реНрдХ рдПрдВрдб рд▓рд╛рдЗрдЯ) рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдореЗрдВ рджрд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реЛ рдЧрдпрд╛, рдЬрд┐рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдордХреНрдЦреА рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред"рдкрдХрдбрд╝рдиреЗ" рд░рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд░реНрдпрд╛рд╡рд░рдг рд╡рд┐рдзрд┐ GetVSSysColorEx рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ IVsUIShell2 рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрдЯрд░реЙрдк рдХреАред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗрд╡рд▓ VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред IVsUIShell2 vsshell = this.GetService(typeof(SVsUIShell)) as IVsUIShell2;
GetVSSysColorEx рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд __VSSYSCOLOREX рдФрд░ __VSSYSCOLOREX3 рдЧрдгрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк Visual Studio рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдЗрд╕рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХ рдХрд╛ рд╡рд░реНрддрдорд╛рди рд░рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдкрд╛рд╕ рдврд╛рд▓ рд░рдВрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ: uint Win32Color; vsshell.GetVSSysColorEx((int)__VSSYSCOLOREX3.VSCOLOR_COMMANDBAR_MENU_BACKGROUND_GRADIENTBEGIN, out Win32Color); Color BackgroundGradient1 = ColorTranslator.FromWin32((int)Win32Color);
рдЕрдм рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЛ "рд░рдВрдЧ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рд░рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕ рдХреНрд╖рдг рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рдЖрдкрдХреЗ рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдХреА рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЦрдВрдб рдореЗрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрд╕рд╛рд░, рдЗрд╕реА рд╣реИрдВрдбрд▓рд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдХрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реНрдХреНрд░реАрди (рдЯреВрд▓ -> рд╡рд┐рдХрд▓реНрдк) рдХреЛ рдЦреЛрд▓рдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдб рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдпрджрд┐, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ IVsUIShell2 рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдкреНрд▓рдЧрдЗрди рдЬреЛ рдХрд┐ рдПрдХ VSPackage рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд╣реАрдВ рд╣реИ) рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЕрднреА рднреА рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рд░рдВрдЧ рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдиреБрдХреВрд▓рди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдХреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдХреЗ рд░рдВрдЧ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реАрдзреЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╕реЗред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕ рдкрджреНрдзрддрд┐ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдк рдпрд╣рд╛рдВ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВрд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд░рдВрдЧ рд╕рдВрдкрд╛рджрди рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧрд┐рддрд╛ C # рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдХрд▓рд░ рдереАрдо рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВредрдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ COM рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рдореЗрдВ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ рдирд╣реАрдВ рдерд╛ред рдЙрд╕реА рд╕рдордп, рд╣рдордиреЗ рдЕрдкрдиреЗ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдПрдХ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рднреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдорд╛рд░реЗ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ ComException рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдиреЗ рд╣рдореЗрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ COM рдЗрдВрдЯрд░реЙрдк рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛редрд╣рд╛рд▓рд╛рдБрдХрд┐ Visual Studio рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред Visual Studio рдЕрдиреБрдкреНрд░рдпреЛрдЧ COM (рдШрдЯрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЛрдб) рд╕рд░реНрд╡рд░ рд╣реИред COM рдХреНрд▓рд╛рдЗрдВрдЯ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓) рдХреЛ рд╕реНрдЯреНрд░реАрдо-рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рд░реНрд╡рд░ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, COM рддрдХрдиреАрдХ рдПрд╕рдЯреАрдП (рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ) рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред COM рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдХрдВрдЯреЗрдирд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднреАрддрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБрдПрдВ рдФрд░ рдзрд╛рдЧреЗ рдЖрдо рдХреНрд░реЙрд╕-рдереНрд░реЗрдб рдПрдХреНрд╕реЗрд╕ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдПрд╕рдЯреАрдП рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯред рдПрд╕рдЯреАрдП рдореЗрдВ рдРрд╕реА рдзрд╛рд░рд╛-рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рдЕрдкреАрд▓ рдХреЛ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИредрддрдм рд╕рдВрджреЗрд╢ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдХрддрд╛рд░ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ STA рдореЗрдВ рд╕реНрдерд┐рдд рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдереНрд░реЗрдб рд╕реЗ рдЗрди рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИредрдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рдореЗрдВ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
.NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрд╡рдпрдВ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ COM рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм COM рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ COM рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ CLR (рд╕рд╛рдорд╛рдиреНрдп рднрд╛рд╖рд╛ рд░рдирдЯрд╛рдЗрдо) рдХреЛ рдПрдХ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдирд╛ рдФрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рд╕реНрдЯреНрд░реАрдо рдПрдордЯреАрдП (рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ, рдПрдХ рдХрдВрдЯреЗрдирд░, рдЬреЛ рдПрд╕рдЯреАрдП рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдзрд╛рд░рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ) рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдПрд╕рдЯреАрдП, рдФрд░, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдзрд╛рд░рд╛ рдПрдордЯреАрдП рдореЗрдВ рд▓реЙрдиреНрдЪ рдХреА рдЬрд╛рдПрдЧреАред рд╕реАрдзреЗ рдзрд╛рдЧрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдк рдереНрд░реЗрдб рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Thread t = new Thread(ThreadProc); t.SetApartmentState(ApartmentState.STA); ... t.Start();
рдХреНрдпреЛрдВрдХрд┐
рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣реЗ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ STA рдореЗрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ STAThread рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: [STAThread] static void Main(string[] args) {...}
рдкреНрд░рдмрдВрдзрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ COM рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдЪреВрдВрдХрд┐ STA рдореЗрдВ COM рд╕рд░реНрд╡рд░ рдХреЗ рд╕рднреА рдХреЙрд▓ рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЙрд▓рд┐рдВрдЧ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдпрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╕рд░реНрд╡рд░ рд╡реНрдпрд╕реНрдд рд░рд╣рддрд╛ рд╣реИ, рдЕрдиреНрдп рдХреЙрд▓ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдЕрдиреНрдп рдзрд╛рдЧрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм COM рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ .NET COM Interop рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рджреЗрддрд╛ рд╣реИред System.untime.InteropServices.COMException ("рд╕рдВрджреЗрд╢ рдлрд╝рд┐рд▓реНрдЯрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡реНрдпрд╕реНрдд рд╣реИ")редрд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ (VSPackage, Add-In) рдпрд╛ рдПрдХ рдореИрдХреНрд░реЛ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рдпрдВрддреНрд░рдг рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдЯреНрд░реАрдо рдХреЗ рдореБрдЦреНрдп рдПрд╕рдЯреАрдП рдпреВрдЖрдИ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд╡рд░реЛрдзрди рдХреА рдШрдЯрдирд╛рдУрдВ, рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдЖрджрд┐)ред рдЗрд╕ рдореБрдЦреНрдп рд╕реВрддреНрд░ рд╕реЗ COM рд╕реНрд╡рдЪрд╛рд▓рди рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЕрдиреНрдп рдкреГрд╖реНрдарднреВрдорд┐ рдереНрд░реЗрдб рдмрдирд╛рдиреЗ рдФрд░ рдЙрдирд╕реЗ рдПрдирд╡реАрдбреАрдЯреАрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓рдВрдмреА рдЧрдгрдирд╛ рдЬреЛ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рд▓рдЯрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рддреЛ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИредрдЬреНрдпрд╛рджрд╛рддрд░ рдмрд╛рд░, рд╣рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреНрд╕ рджреНрд╡рд╛рд░рд╛ рдШрд┐рд░реЗ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреЙрдо рдПрдХреНрд╕реЗрдкреНрд╢рди рдЬреИрд╕реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрдмрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЦреБрдж рдЖрдИрдбреАрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреАред рдпрд╣ рдХрд╛рдлреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ рдХрд┐ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдПрд╕рдЯреАрдП рдореЗрдВ рд╕реНрдерд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрд╕реНрд╡реАрдХреГрддрд┐редрдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЪрдпрдирд╛рддреНрдордХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП, COM IMessageFilter рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕рд░реНрд╡рд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдЕрдиреБрд░реЛрдз рд╣реИрдВрдбрд▓ рдЗрдирдХрдорд┐рдВрдЧрдХреЙрд▓ рдкрджреНрдзрддрд┐ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд░рд┐рдЯреНрд░реАрд░реЗрдХреНрд▓рд╛рдЗрдХрдб рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрд╕реНрд╡реАрдХреГрдд рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЕрдиреБрд░реЛрдз рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрд╕ рдкрд░ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рд░реНрд╡рд░ рд╡реНрдпрд╕реНрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛ рдХрд░)ред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдкреНрд░рдмрдВрдзрд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЕрд╕реНрд╡реАрдХреГрдд рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВред [ComImport()] [Guid("00000016-0000-0000-C000-000000000046")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IMessageFilter { [PreserveSig] int HandleInComingCall( int dwCallType, IntPtr hTaskCaller, int dwTickCount, IntPtr lpInterfaceInfo); [PreserveSig] int RetryRejectedCall( IntPtr hTaskCallee, int dwTickCount, int dwRejectType); [PreserveSig] int MessagePending( IntPtr hTaskCallee, int dwTickCount, int dwPendingType); } class MessageFilter : MarshalByRefObject, IDisposable, IMessageFilter { [DllImport("ole32.dll")] [PreserveSig] private static extern int CoRegisterMessageFilter( IMessageFilter lpMessageFilter, out IMessageFilter lplpMessageFilter); private IMessageFilter oldFilter; private const int SERVERCALL_ISHANDLED = 0; private const int PENDINGMSG_WAITNOPROCESS = 2; private const int SERVERCALL_RETRYLATER = 2; public MessageFilter() {
рдЕрдм рд╣рдо рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рд╕реЗ COM рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп MessageFilter рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: using (new MessageFilter()) {
рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓рд┐рдВрдХ
- MSDNред рд╕реНрд╡рдЪрд╛рд▓рди рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдФрд░ DTE2 рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ред
- MSDNред рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реНрд╡рдЪрд╛рд▓рди рд╕рдореВрд╣ред
- Microsoft Development Network. FAQ тАФ Visual Studio .
- MZ-Tools. HOWTO: Use correctly the OnConnection method of a Visual Studio add-in.
- The Code Project. Understanding The COM Single-Threaded Apartment.
- MZ-Tools. HOWTO: Add an event handler from a Visual Studio add-in .
- Dr. eX's Blog. Using EnableVSIPLogging to identify menus and commands with VS 2005 + SP1.
- MSDN. Visual Studio Interop Assemblies.
Visual Studio
рдпрд╣ рдЦрдВрдб рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╕реЗрд╡рд╛ рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ, рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрдиреВ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдИрдбреАрдИ рдХрдорд╛рдВрдб рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИредрдкрд░рд┐рдЪрдп
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдЖрдкрдХреЛ рдХреАрдмреЛрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╡рд╛рдж рдФрд░ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдмрдЯрди рдХреЗ рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдорд╛рдВрдб рд╣реИрдВред рдЯреАрдореЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдпреВрдЖрдИ рдореЗрдВ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рд╕реАрдзреЗ рдЖрдИрдбреАрдИ рдХреЗ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВредрдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдЗрд╕рдХреЗ рдореБрдЦреНрдп рдпреВрдЖрдИ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ (рдПрдХ рдФрд░ рдРрд╕рд╛ рдШрдЯрдХ рдЙрдкрдХрд░рдг рд╡рд┐рдВрдбреЛ рд╣реИ) рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рдХрдИ рдХрд╕реНрдЯрдо рдЙрдкрд╕рдореВрд╣реЛрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕реАрдзреЗ рдЖрд╣реНрд╡рд╛рди рджреНрд╡рд╛рд░рд╛редрдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдХреЛрдИ рднреА IDE рдХрдорд╛рдВрдб, IDE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЗрд╕рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ (рдпрд╛ рдЗрд╕рдХреЗ рдЕрднрд╛рд╡) рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛, рдХрдорд╛рдВрдб рд╡рд┐рдВрдбреЛ рдФрд░ рддрддреНрдХрд╛рд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХрдВрд╕реЛрд▓ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ devenv.exe / рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИредрдХрдорд╛рдВрдб рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдореВрд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдХрдорд╛рдВрдбред рдЖрдк рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдХреЗ рдХреАрдмреЛрд░реНрдб, рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╡рд╛рдж рдореЗрдВ рдЗрд╕рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрдХрд░рдг -> рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ -> рдХрдорд╛рдВрдб рд╕рдВрд╡рд╛рдж рдЖрдкрдХреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрдорд╛рдВрдб рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд╕рдореВрд╣реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЫрд╛рдВрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдореЗрдиреВ, рдЯреВрд▓рдмрд╛рд░) рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдирдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд, рд╣рдЯрд╛ рдпрд╛ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИредрдХрдорд╛рдВрдб рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдкрд╛рд░рд┐рддред рдЖрдЗрдП рд╣рдо рдореЗрдиреВ рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдирдХ рд╕рд┐рд╕реНрдЯрдо рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ -> рдирдпрд╛ -> рдлрд╛рдЗрд▓, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдВрдбреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдХрдорд╛рдВрдб рд╡рд┐рдВрдбреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ: >File.NewFile Mytext /t:"General\Text File" /e:"Source Code (text) Editor"
рдХрдорд╛рдВрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ:- рдЯреАрдо рдХрд╛ рдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рддрд░реНрдХ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ
- рддрд░реНрдХ рдореВрд▓реНрдпреЛрдВ рд╡рд╛рд▓реЗ рд░рд┐рдХреНрддрд┐рдпрд╛рдБ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВред
- рд╕рдореНрдорд┐рд▓рд┐рдд рд╡рд░реНрдг (^) рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрдгреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рддрд░реНрдХ рдирд╛рдореЛрдВ рдХреЗ рдПрдХрд▓-рд╡рд░реНрдг рд╕рдВрдХреНрд╖рд┐рдкреНрддрд╛рдХреНрд╖рд░ рд╕рдВрдпреБрдХреНрдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП / рдХреЗрд╕ (/ c) рдФрд░ / рд╢рдмреНрдж (/ w) рдХреЛ / ww рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХрдорд╛рдВрдб рд▓реЙрдиреНрдЪ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрдкрдиреЗ рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рдирд╛рдо рдХреЛ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: devenv.exe /command "MyGroup.MyCommandName arg1 arg2"
рддреНрд╡рд░рд┐рдд рдХреЙрд▓ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЙрдкрдирд╛рдо рдЕрдиреНрдп рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: >alias MyAlias File.NewFile MyFile
рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдЖрдИрдбреАрдИ рдХреЗ рдореБрдЦреНрдп рдореЗрдиреВ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ / рдХрдорд╛рдВрдб рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд┐рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣рд╛рдБ рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ PVS-Studio.exe рд╕реНрдЯреИрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓реАрдХреЗрд╢рди рд╣реИ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдВрдХрд▓рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ stdout / strerr рдзрд╛рд░рд╛рдУрдВ рдкрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕реАрдзреЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрд╕реА MSBuild, NMake, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ GNU рдореЗрдХ рдкрд░) C / C ++ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд╕рдорд╛рди рд╕реНрддрд░ рдкрд░редрдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рд╕реНрд╡рдпрдВ, рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рднреА рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЯреНрд░реЙрд▓рд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧреА, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЙрд▓ рдХреЛ рдмрджрд▓рдиреЗ (рдпрд╛ рдкреВрд░рдХ рдХрд░рдиреЗ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдСрдкрд░реЗрд╢рди рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ PVS-Studio.exe рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдПрдХ рдХрд░реАрдмреА рдкрд░рд┐рдЪрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛, рдЬреЛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИред редрд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдХрд░реАрдмреА рдкрд░рд┐рдЪрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдРрд╕реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ, рдЬреЛ рджреЛрдиреЛрдВ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВредрд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдлреА рдХрд░реАрдмреА рдкрд░рд┐рдЪрд┐рдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдРрд╕реЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ, рдЬреЛ рджреЛрдиреЛрдВ рдореБрд╢реНрдХрд┐рд▓ рдФрд░ рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВредрдЗрд╕рд▓рд┐рдП, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ / рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрд╡реАрдПрд╕- рд╕рддреНрдпрд╛рдкрди рдХрдорд╛рдВрдб, рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ (рдпрд╛рдиреА, рд╕реАрдзреЗ рдПрдХреАрдХрд░рдг рд╕рд░реНрд╡рд░ рдХреЗ рд╕реНрддрд░ рдкрд░) Studio.CheckSolutionред рдмреЗрд╢рдХ, рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм рджреЗрд╢реА рдбрд┐рдЬрд╛рдЗрди рд╕рдорд╛рдзрд╛рди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ C ++ (vcproj / vcxproj) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПредрдпрджрд┐ рдЖрдк / рдХрдорд╛рдВрдб рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдорд╛рдВрдб рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдпреВрдЖрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХрдВрд╕реЛрд▓ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдорд╛рдирдХ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдпреВрдЖрдИ рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ рдФрд░ рдпрд╣ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрд╕реЗрдВрдмрд▓реА рдСрдЯреЛрдореЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реАрдзреЗ Microsoft MSBuild рдЕрд╕реЗрдВрдмрд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕рднреА рдорд╛рдирдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИредрдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдбреЗрд╕реНрдХрдЯреЙрдк рдореЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╡рд┐рдВрдбреЛрдЬ рд╡рд┐рдВрдбреЛрдЬ рд╕реЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ) рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб / рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддрддреЗ рд╕рдордп рд╕рд╛рд╡рдзрд╛рдиреА рдмрд░рддреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Microsoft рдЯреАрдо рдлрд╛рдЙрдВрдбреЗрд╢рди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ PVS-Studio рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдЖрдП, рдЬреИрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЯреАрдо рдлрд╛рдЙрдВрдбреЗрд╢рди рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрд╡рд╛ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рдпрдВ рдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдбреЗрд╕реНрдХрдЯреЙрдк рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рдерд╛, рдЕрдиреБрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреЗ рдмрдЪреНрдЪреЗ рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдФрд░ рд╕рдВрд╡рд╛рджреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рджреБрд░реНрдШрдЯрдирд╛ рд╣реБрдИред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рдорд┐рд▓реАрдВ, рдпрд╛ рдмрд▓реНрдХрд┐, рд▓рдЧрднрдЧ рдирд╣реАрдВред рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдВрд╡рд╛рдж рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдорд╛рдирдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИредрдЙрд╕рдиреЗ рд▓реЛрдХрд▓ рд╕рд┐рд╕реНрдЯрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рд╕рдВрд╡рд╛рдж рдЬрд╛рд░реА рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЯреАрдо рдлрд╛рдЙрдВрдбреЗрд╢рди рд╕реЗрд╡рд╛ рдереАред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕ рд╕рдВрд╡рд╛рдж рдХреЛ рдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдореЛрдб рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЬрдм рдХреЙрд▓рд┐рдВрдЧ / рдХрдорд╛рдВрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдбреЗрд╕реНрдХрдЯреЙрдк рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд╕рдВрд╡рд╛рдж рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдерд╛ред рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЕрднреА рднреА рд╕реЗрдЯ рд╕реЗ pecec рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрдВрдЯрд░рдирд▓ рд▓реЛрдХрд▓рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪрд▓рд╛рдХрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗрд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╕реЗ psexec рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИрд╕реНрдерд╛рдиреАрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╕реЗ psexec рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИPSTools редVSPackage, Vsct рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
VSPackage рдПрдХреАрдХреГрдд IDE рдХрдорд╛рдВрдб рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ (рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдЯреЗрдмрд▓, рд╡рд┐рдХреНрдЯреАрдо рдлрд╛рдЗрд▓реНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ рдПрдХреНрд╕рдПрдордПрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЯреЗрдХреНрд╕реНрдЯ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рд╡реАрдПрд╕рд╕реАрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдЗрдирд░реА рдХреЙрдЯреЛ рдлрд╛рдЗрд▓реЛрдВ (рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ рдЖрдЙрдЯрдкреБрдЯ) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред CTO рдлрд╛рдЗрд▓реЗрдВ рддрдм IDE рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдВрддрд┐рдо рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВред VCST рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХрдорд╛рдВрдбреНрд╕ рдХреЛ IDE рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо рдпрд╛ рдЯреВрд▓рдмрд╛рд░ рдмрдЯрди рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2005 рдХреЗ рдмрд╛рдж рд╕реЗ рд╡реАрдПрд╕рд╕реАрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЖрдИрдбреАрдИ рд╕реАрдЯреАрд╕реА (рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ рдХрдВрдкрд╛рдЗрд▓рд░) рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛редVsct рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЯреАрдо рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИ - рдХрдорд╛рдВрдб, рдирд╛рдо рдФрд░ рд╕рдореВрд╣, рдПрдХ рд╕рдВрдпреЛрдЬрди рдХреЛ рддреНрд╡рд░рд┐рдд рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдЭрдВрдбреЛрдВ рдХреА рдорджрдж рд╕реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рдореЗрдиреВ рдореЗрдВ рдпрд╛ рдЯреВрд▓рдмрд╛рд░ рдкрд░) рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рдХреЗ рджреГрд╢реНрдпрдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЖрджрд┐редVSCT рдлрд╝рд╛рдЗрд▓ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдХрдорд╛рдВрдбрдЯреЗрдмрд▓ рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ рдХреЗ рдореВрд▓ рддрддреНрд╡ рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдЙрдк-рдиреЛрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб, рд╕рдореВрд╣, рдореЗрдиреВ, рдЯреВрд▓рдмрд╛рд░ рдЗрддреНрдпрд╛рджрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрдорд╛рдВрдб рдиреЛрдб рдореЗрдВ рдПрдХ рдкреИрдХреЗрдЬ рд╡рд┐рд╢реЗрд╖рддрд╛ рднреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдкреИрдХ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдореВрд▓реНрдп рд╣реЛред рдкреНрд░рддреАрдХ рд░реВрдЯ рдиреЛрдб рдЙрдк-рдиреЛрдб рдореЗрдВ рд╡реАрдПрд╕рд╕реАрдЯреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред KeyBindings рд░реВрдЯ рдиреЛрдб рдЙрдк-рдиреЛрдб рдореЗрдВ рддреНрд╡рд░рд┐рдд рдХрдорд╛рдВрдб рдордВрдЧрд▓рд╛рдЪрд░рдг рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдВрдпреЛрдЬрди рд╣реЛрддреЗ рд╣реИрдВред <CommandTable"http://schemas.microsoft.com/VisualStudio/2005-10- 18/CommandTable"> <Extern href="stdidcmd.h"/> <Extern href="vsshlids.h"/> <Commands> <Groups> ... </Groups> <Bitmaps> ... </Bitmaps> </Commands> <Commands package="guidMyPackage"> <Menus> ... </Menus> <Buttons> ... </Buttons> </Commands> <KeyBindings> <KeyBinding guid="guidMyPackage" id="cmdidMyCommand1" editor="guidVSStd97" key1="221" mod1="Alt" /> </KeyBindings> <Symbols> <GuidSymbol name="guidMyPackage" value="{B837A59E-5BF0-4190-B8FC- FDC35BE5C342}" /> <GuidSymbol name="guidMyPackageCmdSet" value="{CC8B1E36-FE6B-48C1- B9A9-2CC0EAB4E71F}"> <IDSymbol name="cmdidMyCommand1" value="0x0101" /> </GuidSymbol> </Symbols> </CommandTable>
рдмрдЯрди рддрддреНрд╡ рдЖрдИрдбреАрдИ рдХрдорд╛рдВрдбреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХрдорд╛рдВрдбреЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИред <Button guid="guidMyPackageCmdSet" id="cmdidMyCommand1" priority="0x0102" type="Button"> <Parent guid="guidMyPackageCmdSet" id="MyTopLevelMenuGroup" /> <Icon guid="guidMyPackageCmdSet" id="bmpMyCommand1" /> <CommandFlag>Pict</CommandFlag> <CommandFlag>TextOnly</CommandFlag> <CommandFlag>IconAndText</CommandFlag> <CommandFlag>DefaultDisabled</CommandFlag> <Strings> <ButtonText>My &Command 1</ButtonText> </Strings> </Button>
рдореЗрдиреВ рддрддреНрд╡ рдореБрдЦреНрдп рдореЗрдиреВ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рддрддреНрд╡реЛрдВ рдХреА рдпреВрдЖрдИ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣ рддрддреНрд╡ рдХреЗ рдХрдорд╛рдВрдб рд╕рдореВрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдореЗрдиреВ рдЖрдЗрдЯрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рдореВрд╣ рдХреЛ рдпрд╣рд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдореЗрдиреВ рдпрд╛ рдЯреВрд▓рдмрд╛рд░ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред <Menu guid=" guidMyPackageCmdSet" id="SubMenu1" priority="0x0000" type="Menu"> <Parent guid="guidMyPackageCmdSet" id="MyTopLevelMenuGroup"/> <Strings> <ButtonText>Sub Menu 1</ButtonText> </Strings> </Menu> <Menu guid="guidMyPackageCmdSet" id="MyToolBar1" priority="0x0010" type="Toolbar"> </Menu>
рд╕рдореВрд╣ рддрддреНрд╡ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рдХреЗ рд╕рдореВрд╣ рдмрдирд╛рддрд╛ рд╣реИред <Group guid="guidMyPackageCmdSet" id="MySubGroup1" priority="0x0020"> <Parent guid="guidMyPackageCmdSet" id="MyGroup1" /> </Group>
MSBuild рдХреЛ рдмрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, VSPackage рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╣рд▓реЗ csproj рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реАрдПрд╕рд╕реАрдЯреА рд╕рдВрдХрд▓рдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдиреЛрдб рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (VSPackage рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдСрдЯреЛ-рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП SDK рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, vsct рдлрд╝рд╛рдЗрд▓ рдкрд╣рд▓реЗ рд╣реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреБрдбрд╝ рдЬрд╛рдПрдЧреА): <ItemGroup> <VSCTCompile Include="TopLevelMenu.vsct"> <ResourceName>Menus.ctmenu</ResourceName> </VSCTCompile> </ItemGroup>
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб рдпрд╛ рдХрдорд╛рдВрдб рдХреЗ рд╕рдореВрд╣ рдХреЛ рдорд╛рдирдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдиреЛрдб рдореЗрдВ рд▓рдХреНрд╖реНрдп рдорд╛рдирдХ рд╕рдореВрд╣ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╡рд┐рдВрдбреЛ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ рдЕрдкрдиреЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рдореВрд╣ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: <Group guid="guidMyCmdSet" id="ProjectNodeContextMenuGroup" priority="0x07A0"> <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" /> </Group>
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рдирдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ IDM_VS_CTXT_PROJNODE рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдХреЗ , рдЖрдк рдорд╛рдирдХ Visual Studio рдХрдорд╛рдВрдб рд╕рдореВрд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВредрдФрд░ рдлрд┐рд░ рдкреИрдХреЗрдЬ рд╡рд░реНрдЧ рдХреЗ рдЕрдкрдиреЗ рд╡рдВрд╢рдЬ рдкрд░ ProvMenuResource рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ: [ProvideMenuResource("Menus.ctmenu", 1)] ... public sealed class MyPackage : Package
рд╡реАрдПрд╕рд╕реАрдЯреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ IMenuCommandService рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ ред рдЖрдк рдкреИрдХреЗрдЬ рд╡рд░реНрдЧ рдХреЗ рдЧреЗрдЯрд╕реНрд╡реЗрд╕реНрдЯ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: OleMenuCommandService MCS = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
рдПрдХ рдореЗрдиреВ рдХрдорд╛рдВрдб рдХреЛ рд╣реИрдВрдбрд▓рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдХрдорд╛рдВрдб рдХреЛ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдмрдирд╛рдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП): EventHandler eh = new EventHandler(CMDHandler); CommandID menuCommandID = new CommandID(guidCommand1CmdSet, id);
рдЗрд╕рдХреЗ рдХреЙрд▓ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рдХрдорд╛рдВрдб рдХреЗ рддрд░реНрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд EventArgs рдХреЗ рдореВрд▓реНрдп рдХреЛ OleMenuCmdEventArgs рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: void CMDHandler(object sender, EventArgs e) { OleMenuCmdEventArgs eventArgs = (OleMenuCmdEventArgs)e; if (eventArgs.InValue != null) param = eventArgs.InValue.ToString(); ... }
EnvDTE.DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреАрдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ EnvDTE.DTE рднреА dte.Commands рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ dte.ExecuteCommand рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд╣реЗрд░рдлреЗрд░ (рдирд┐рд░реНрдорд╛рдг, рд╕рдВрд╢реЛрдзрди, рдирд┐рд╖реНрдкрд╛рджрди) рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИредVSPackage рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз VSCT рддрдВрддреНрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, IDE рдХрдорд╛рдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк Visual Studio рдРрдб-рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредDTE рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдкрдХреЛ DTE.Commands рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рдХрдорд╛рдВрдб рдмрдирд╛рдиреЗ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ред Commands.AddNamedCommand рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ IDE (рдХреЗрд╡рд▓ рдПрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдПрдХ рдХрдорд╛рдВрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ: dte.Commands.AddNamedCommand(add_in, "MyCommand", "My Command", "My Tooltip", true);
рдЙрд╕реА рд╕рдордп, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХрдорд╛рдВрдб рдЖрдИрдбреАрдИ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореЗрдиреВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓реЛрдб рди рд╣реЛред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдХреЗрд╡рд▓ рддрднреА рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рдРрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реА рдмрд╛рд░ рдЬреБрдбрд╝рд╛ рд╣реЛ (рдпрд╣ рдмрд┐рдВрджреБ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдкрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИ)ред рдСрдирдХреЙрдиреНрдХреНрд╢рди рдПрдб-рдЗрди рдореЗрдердбреНрд╕ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЙрдкрд▓рдмреНрдз рд╣реИ (рдмрд╣реБрдд рдкрд╣рд▓реЗ рдЖрд░рдВрднреАрдХрд░рдг рдкрд░), рдЬрд┐рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЬреАрд╡рди рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпреВрдЖрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { switch(connectMode) { case ext_ConnectMode.ext_cm_UISetup: ... break; ... }
}
EnvDTE.Command рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдЕрд▓рдЧ IDE рдХрдорд╛рдВрдб рдХреЛ рд╕рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реА рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ VSPackage рдФрд░ Add-In рдореЙрдбреНрдпреВрд▓ рджреЛрдиреЛрдВ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рдореЗрдВ рдЕрдкрдиреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреАрдо MyCommand1 рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ EnvDTE.Command рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓реЗрдЧрд╛ рдФрд░ рдЗрд╕ рд╢реЙрд░реНрдЯрдХрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ: EnvDTE.Command MyCommand1 = MyPackage.DTE.Commands.Item("MyGroup.MyCommand1", -1); MyCommand1.Bindings = new object[1] { "Global::Alt+1" };
MyGroup.MyCommand1 рдХрдорд╛рдВрдб рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╢реЙрд░реНрдЯрдХрдЯ рд╕рдВрдпреЛрдЬрди рдЕрдм рдХреАрдмреЛрд░реНрдб, рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдВрд╡рд╛рдж рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛редрдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдИрдбреАрдИ рддрддреНрд╡ рдирд╣реАрдВ рд╣реИред Commands.AddCommandBar рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо, рдЯреВрд▓рдмрд╛рд░, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдРрд╕реЗ UI рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИред CommandBar MyToolbar = dte.Commands.AddCommandBar("MyToolbar1", vsCommandBarType.vsCommandBarTypeToolbar) as CommandBar; CommandBar MyMenu = dte.Commands.AddCommandBar("MyMenu1", vsCommandBarType.vsCommandBarTypeMenu) as CommandBar; CommandBarButton MyButton1 = MyCommand1.AddControl(MyToolbar) as CommandBarButton; MyButton1.Caption = "My Command 1";
IDE рд╕реЗ рдХрдорд╛рдВрдб рдпрд╛ рдХрдорд╛рдВрдб рдкреИрдирд▓ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрдорд╛рдВрдб / рдХрдорд╛рдВрдбрдмрд╛рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдбрд┐рд▓реАрдЯ рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: MyCommand1.Delete();
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдПрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХрдорд╛рдВрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ IDE рдХреА рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдзреАрдорд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ OnDisconnect рд╡рд┐рдзрд┐ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрдорд╛рдВрдб рдореЙрдбреНрдпреВрд▓ рдХреА рдЕрдЧрд▓реА рд╢реБрд░реБрдЖрдд рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЖрд╡реЗрджрди рд╕реЗ рдбреАрдЯреАрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реБрдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧ, рдореЙрдбреНрдпреВрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ / рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдПрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреА рд╢реБрд░реВрдЖрдд рдФрд░ рдмрд╛рд╣рд░реА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдПрдХ рдбреАрдЯреАрдИ рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдПрдирд╡реАрдбреАрдЯреАрдИ рдСрдЯреЛрдореЗрд╢рди рдореЙрдбрд▓ рдкрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредрдХрд┐рд╕реА рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рджреЛрдиреЛрдВ) рдХреЛ ExecuteCommand рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб MyCommand1 рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: MyPackage.DTE.ExecuteCommand("MyGroup.MyCommand1", args);
рдЖрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдореБрдЦреНрдп рдРрдб-рдЗрди рд╡рд░реНрдЧ IDTCommandTarget рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ Exec рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled) { handled = false; if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault) { if(commandName == "MyAddin1.Connect.MyCommand1") { ... handled = true; return; } } }
рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓рд┐рдВрдХ
- MSDNред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдФрд░ рд╕реНрд╡рд┐рдЪред
- MSDNред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ (.Vsct) рдлрд╛рдЗрд▓реЗрдВред
- MSDNред XML рдХрдорд╛рдВрдб рдЯреЗрдмрд▓ рдбрд┐рдЬрд╛рдЗрди (.Vsct) рдлрд╝рд╛рдЗрд▓реЗрдВред
- MSDNред рд╡реЙрдХрдереНрд░реВ: IDE рдореЗрдВ рдЯреВрд▓рдмрд╛рд░ рдЬреЛрдбрд╝рдирд╛ред
- MSDNред рдХреИрд╕реЗ VSPackages рдЖрдИрдбреАрдИ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВред
- MZ-рдЙрдкрдХрд░рдгред HOWTO: рдРрдб-рдЗрди рд╕реЗ Visual Studio .NET рдореЗрдВ рдмрдЯрди, рдХрдорд╛рдВрдбрдмрд╛рд░ рдФрд░ рдЯреВрд▓рдмрд╛рд░ рдЬреЛрдбрд╝рдирд╛ред
- MSDNред рдХреИрд╕реЗ рдХрд░реЗрдВ: рдЯреВрд▓ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЯреВрд▓рдмрд╛рд░ рдмрдирд╛рдПрдВред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреВрд▓рдмрд╛рд░
рдпрд╣ рдЕрдиреБрднрд╛рдЧ рдХрд╕реНрдЯрдо рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХреАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред VSPackage рдФрд░ Add-In рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдХрд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдореБрджреНрджреЗ, рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛, рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рд╡рд┐рдВрдбреЛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рд╕реНрдкрд░реНрд╢ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдкрд░рд┐рдЪрдп
рдЯреВрд▓ рд╡рд┐рдВрдбреЛ - рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдПрдордбреАрдЖрдИ (рдорд▓реНрдЯреАрдкрд▓ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕) рдХреА рдЪрд╛рдЗрд▓реНрдб рд╡рд┐рдВрдбреЛред рд╕реЛрд▓реНрдпреВрд╢рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдФрд░ рдПрд░рд░ рд▓рд┐рд╕реНрдЯ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреА рд╕рд╛рдордЧреНрд░реА рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЬреБрдбрд╝реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдВрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╡рд┐рдВрдбреЛ рд╣реЛрддреА рд╣реИрдВ редрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХрдИ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдореБрдЦреНрдп рдПрдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ (рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ) рд╣реИред рдЕрдиреНрдп рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рд╕реЗ рдЦреЛрд▓реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реВрдЪреА рдЦреЛрдЬ рд╡рд┐рдВрдбреЛред рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░рд┐рдгрд╛рдо рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореБрдЦреНрдп рдореЗрдиреВ (рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ -> рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдПрдВ) рд╕реЗ рд╕реБрд▓рдн рд╣реИ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИредрдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, IDE рдкреНрд░рддреНрдпреЗрдХ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ (рд╕рд┐рдВрдЧрд▓ рдЗрдВрд╕реНрдЯреЗрдВрд╕ рд╡рд┐рдВрдбреЛ) рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╕рддреНрд░ рдХреЗ рдЕрдВрдд рддрдХ рдЦреБрд▓рд╛ рд░рд╣рддрд╛ рд╣реИред рдЬрдм рдЖрдк рдХреНрд▓реЛрдЬ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рд╡рд┐рдВрдбреЛ рдЫрд┐рдкреА рд╣реЛрддреА рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрд╕рдХреЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧрддреА рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╕рднреА рдбреЗрдЯрд╛ рд╕реЗрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, IDE рдорд▓реНрдЯреА-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЗрдВ рдХрд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ (рдпрд╛рдиреА, рдХрдИ рдмрд╛рд░ рдЦреЛрд▓реА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ) рдмрдирд╛рдирд╛ рдФрд░ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИред рдПрдХ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ IDE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рддрдерд╛рдХрдерд┐рдд рдбрд╛рдпрдиреЗрдорд┐рдХ рд╡рд┐рдВрдбреЛ) рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реМрдВрдкрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реА рдРрд╕реА рд╡рд┐рдВрдбреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рдИ рдЬрд╛рдПрдЧреАредIDE рдореЗрдВ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдПрдХреАрдХрд░рдг VSPackage рдФрд░ Add-in рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИ (рдФрд░ рдЗрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддреЗ рд╣реИрдВ), рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИредрдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░ рдФрд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ SDK рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд VSPackage рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдкрдХреЛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдкреИрдХреЗрдЬ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреАрдЪреЗ рдЪрд░реНрдЪрд╛ рдХрд┐рдП рдЧрдП рд╕рднреА рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдХрд╕реНрдЯрдо рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЦреБрдж рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕реЗ рдПрдХ рдореЙрдбрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИредVSPackage рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХреЛ рд░рдЬрд┐рд╕реНрдЯрд░, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдФрд░ рдХреЙрд▓ рдХрд░реЗрдВ
рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдВрдбреЛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ pkgdef рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкрдВрдЬреАрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред Pkgdef рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреИрдХреЗрдЬ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд╡рд┐рд╢реЗрд╖ рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХреА рдЧрдИ рд╣реИредрдкреНрд░рддреНрдпрдХреНрд╖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдЙрдкрдХрд░рдг рдЦрд┐рдбрд╝рдХреА VSPackage рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ ProvideToolWindow рд╡рд░реНрдЧ рдкреИрдХреЗрдЬ: [ProvideToolWindow(typeof(MyWindowPane), Orientation = ToolWindowOrientation.Right, Style = VsDockStyle.Tabbed, Window = Microsoft.VisualStudio.Shell.Interop.ToolWindowGuids.Outputwindow, MultiInstances = false, Transient = true, Width = 500, Height = 250, PositionX = 300, PositionY = 300)]
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЯрд╛рдЗрдкрдСрдлрд╝ рд╡рд┐рдВрдбреЛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ (рдЯреВрд▓рд╡рд┐рдВрдбреЛрд╡реЗрди) рдХреЗ рдХрд╕реНрдЯрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдорд▓реНрдЯреА-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдорд▓реНрдЯреА-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдореЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдЦреЛрд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рдеред рдЬрдм рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕реЗ рдЦреЛрд▓рддреЗ рд╣реИрдВ рддреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдУрд░рд┐рдПрдВрдЯрдЯрди, рдЖрдХрд╛рд░ рдФрд░ рд╢реИрд▓реА рдЖрдкрдХреЛ рдЦрд┐рдбрд╝рдХреА рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдкрд╣рд▓реЗ рдЙрджреНрдШрд╛рдЯрди рдХреЗ рдмрд╛рдж, рдЖрдИрдбреАрдИ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЖрдЧреЗ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХреЗ рджреМрд░рд╛рди рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ред рдХреНрд╖рдгрд┐рдХ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреБрд▓реЗрдЧреА рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЖрдИрдбреАрдИ рд╕рддреНрд░ рдореЗрдВ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рд╣реИредрдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ VSPackage рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдг (рдЬреЛ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдкреИрдХреЗрдЬ рдЙрдкрдХреНрд▓рд╛рд╕ рдХреЗ рдЖрд░рдВрдн рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкрдВрдЬреАрдХрд░рдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд▓рдЧрдЗрди рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЗ рдирд┐рдЪрд▓реЗ рдЯреИрдм рдХреЗ рдмреАрдЪ рдЦрд┐рдбрд╝рдХреА рдЦреБрд▓реА (рд▓реЗрдХрд┐рди рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ) рджрд┐рдЦрд╛рдИ рджреА, рднрд▓реЗ рд╣реА Transient = ProvToolWindow рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд╕рдЪред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЖрдИрдбреАрдИ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╡рд┐рдВрдбреЛ рдХреЛ рдкрд╣рд▓реЗ рдХреЙрд▓ рдХрд░рдиреЗ рддрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЯреИрдм рдкрд░ рдЕрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдЖрдЗрдХрди рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рдерд╛редрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ProvToolWindowVisibility рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдбрд╛рдпрдирд╛рдорд┐рдХ рд╕реНрдХреЛрдк рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ : [ProvideToolWindowVisibility(typeof(MyWindowPane), /*UICONTEXT_SolutionExists*/"f1536ef8-92ec-443c-9ed7-fdadf150da82")]
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм "рд╕реЙрд▓реНрдпреВрд╢рди рдПрдХреНрдЬрд╝рд┐рд╕реНрдЯ" рд╕рдВрджрд░реНрдн рдпреВрдЖрдИ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдирд╛редVSPackage рд╕реЗ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреИрдХреЗрдЬ рдХреНрд▓рд╛рд╕ рдХреЗ FindToolWindow рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣ рд╡рд┐рдзрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯреВрд▓рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ (рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рдПрдХрд▓-рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдВрдбреЛ рд▓реЙрдиреНрдЪ рд╣реЛрдиреЗ рдкрд░)ред рдПрдХрд▓-рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдВрдбреЛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: private void ShowMyWindow(object sender, EventArgs e) { ToolWindowPane MyWindow = this.FindToolWindow(typeof(MyToolWindow), 0, true); if ((null == MyWindow) || (null == MyWindow.Frame)) { throw new NotSupportedException(Resources.CanNotCreateWindow); } IVsWindowFrame windowFrame = (IVsWindowFrame) MyWindow.Frame; ErrorHandler.ThrowOnFailure(windowFrame.Show()); }
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЦрд┐рдбрд╝рдХреА рдпрд╛ рддреЛ рдкрд╣рд▓реЗ рдХреЙрд▓ рдкрд░ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреА, рдпрд╛ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдкрд╣рд▓реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рдерд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЯрд╛рдЗрдк рдмреВрд▓ рдХреЗ FindToolWindow рд╡рд┐рдзрд┐ рдХрд╛ рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рдВрдбреЛ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛редрдорд▓реНрдЯреА-рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк CreateToolWindow рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рддрдм рдЯреВрд▓рд╡рд┐рдВрдбреЛ рдХреА рд╡рд┐рдзрд┐ рдХреЙрд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА: private void CreateMyWindow(object sender, EventArgs e) { for (int i = 0; ; i++) {
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдЭреВрдареА рд╡рд┐рдзрд┐ 3 рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ FindToolWindow рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╣рдо рдЦрд┐рдбрд╝рдХреА рдХреЗ рдирдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╢реБрд░реВ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдореБрдлреНрдд рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВредрдкрд╣рд▓реА рдХреЙрд▓ рдХреЗ рдмрд╛рдж рдПрдХрд▓-рдЖрд╡реГрддреНрддрд┐ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдмрд╛рдж рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЖрдпрд╛рдо рдпрд╛рдж рд╣реЛрдВрдЧреЗ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рд░ рдмрд╛рд░ рдмрдЪрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ IVsWindowFrame рд╡рд░реНрдЧ рдХреЗ SetFramePos рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: Guid gd = Guid.Empty; windowFrame.SetFramePos(VSSETFRAMEPOS.SFP_fDockBottom, ref gd, 20, 20, 200, 200);
рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╢реЛ () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдмрд╛рдж SetFramePos () рд╡рд┐рдзрд┐ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПредрдРрдб-рдЗрди рдореЗрдВ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдирд╛ рдФрд░ рдХреЙрд▓ рдХрд░рдирд╛
рдРрдб-рдЗрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдВрдбреЛ 2 рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдПрдВрдбрдбреАрдбреАрдЯреАрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; EnvDTE80.Windows2 window; AddIn add_in; object ctlobj = null; Window myWindow;
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ MyToolWindowControl.MyUserControl рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реИред MyToolWindowControl.MyUserControl рд╡рд░реНрдЧ рдРрдб-рдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдкреВрд░реНрдг COM рджреГрд╢реНрдпрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ COM рдЗрдВрдЯрд░реЙрдк рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред MyUserControl рдХреЗ рд░реВрдк рдореЗрдВ, рдорд╛рдирдХ рд╕рдордЧреНрд░ UserControl рдЙрдкрд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредVSPackage рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ-рдлреНрд░реЗрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реЛрддрд╛ рд╣реИред рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдлреНрд░реЗрдо рдкрд░реНрдпрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ (рдбреЙрдХрд┐рдВрдЧ), рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдбреЙрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ (рдлрд▓рдХ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╡рд┐рдВрдбреЛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╕реНрдЯрдо WinForms рдФрд░ WPF рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдорд╛рдирдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдСрдирд╢реЙ, рдУрдирдореЛрд╡ рдЖрджрд┐ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВредрдПрдХ рдХрд╕реНрдЯрдо рдЯреВрд▓ рд╡рд┐рдВрдбреЛ, рдпрд╛ рдЗрд╕рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░, рдХреЛ рдПрдХ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдорд╛рдирдХ рдЦрд╛рд▓реА IDE рд╡рд┐рдВрдбреЛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ - ToolWindowPane : [Guid("870ab1d8-b434-4e86-a479-e49b3c6797f0")] public class MyToolWindow : ToolWindowPane { public MyToolWindow():base(null) { this.Caption = Resources.ToolWindowTitle; this.BitmapResourceID = 301; this.BitmapIndex = 1; ... }
}
рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдВрдбреЛ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рдЪрд╛рдирддреА рд╣реИред рдпрджрд┐ рдореЙрдбреНрдпреВрд▓ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреА рдХрдИ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдмрдирд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред ToolWindowPane рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдЗрд╕рдореЗрдВ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдХрд╕реНрдЯрдо рдШрдЯрдХ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ
рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдЯреВрд▓рд╡рд┐рдВрдбреЛрдкреЗрди рдПрдХ рдЦрд╛рд▓реА рдкрд░реНрдпрд╛рд╡рд░рдг рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдЗрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╕реНрдЯрдо WinForms рдпрд╛ WPF рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИредVisual Studio 2008 рд╕реЗ рдкрд╣рд▓реЗ, рдЯреВрд▓рдмрд╛рд░ рдиреЗ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЗ WinForms рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдерд╛, рдФрд░ WPF рдЗрдВрдЯрд░рдСрдкрд░реЗрдмрд┐рд▓рд┐рдЯреА рдПрд▓рд┐рдореЗрдВрдЯрд╣реЛрд╕реНрдЯ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ WPF рдШрдЯрдХреЛрдВ рдХреЛ рднреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдЯреВрд▓ рд╡рд┐рдВрдбреЛ WPF рддрдХрдиреАрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реБрдЖ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рд▓реЛрдбрд┐рдВрдЧ рдФрд░ рд╕рдВрдЧрддрддрд╛ рдореЛрдб рдореЗрдВ WinForms рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛редрдПрдХ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо WinForms рдШрдЯрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЯреВрд▓рд╡рд┐рдВрдбреЛ рд▓реЗрди рдХреА рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд┐рдВрдбреЛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: public MyUserControl control; public MyToolWindow():base(null) { this.Caption = Resources.ToolWindowTitle; this.BitmapResourceID = 301; this.BitmapIndex = 1; this.control = new MyUserControl(); } public override IWin32Window Window { get { return (IWin32Window)control; } }
рдЗрд╕реА рд╕рдордп, MyUserControl System.Windows.Forms.UserControl рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рдорд┐рд╢реНрд░рд┐рдд рдШрдЯрдХ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ WPF рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдорд╛рдирдХ рдШрдЯрдХ WPF ElementHost рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдореВрд▓ рд░реВрдк рд╕реЗ WPF рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рдордЧреНрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдкрдиреЗ WPF рдШрдЯрдХ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ: public MyToolWindow():base(null) { this.Caption = Resources.ToolWindowTitle; this.BitmapResourceID = 301; this.BitmapIndex = 1; base.Content = new MyWPFUserControl(); }
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрди рджреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред рдЬрдм рдПрдХ WPF рдШрдЯрдХ рдХреЛ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдВрдЯреЗрдВрдЯ, рдУрд╡рд░рд░рд╛рдЗрдб рдХреА рдЧрдИ рд╡рд┐рдВрдбреЛ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рдХреА рдореБрдЦреНрдп рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЛрд░реНрд╕рдЧреНрд░рд┐рдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдЯреЗрдмрд▓ рд╣реИ, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдирдХ рддрд╛рд▓рд┐рдХрд╛ ADO.NET System.Data.Datatable рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 4.00 рд╕реЗ рдкрд╣рд▓реЗ, рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЖрдИрдбреАрдИ рддреНрд░реБрдЯрд┐ рд╕реВрдЪреА рд╡рд┐рдВрдбреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕реЗ рд╣реА рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реБрдЖ, рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╣реЛ рдЧрдИред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдВрддреНрд░рдг рдЬреИрд╕реЗ рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рддрдВрддреНрд░ рдФрд░ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рдХреЛ рджрдмрд╛рдиреЗ рдХреЗ рд╕рд╛рдзрди, рддреНрд░реБрдЯрд┐ рд╕реВрдЪреА, рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧреНрд░рд┐рдб рддрддреНрд╡ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдЕрдХреНрд╖рдорддрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 1-2 рд╣рдЬрд╛рд░ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЕрдзрд┐рдХ рд╕рдВрджреЗрд╢ рдкреВрд░реЗ рдЖрдИрдбреАрдИ рдХреЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд░рдиреЗ рд▓рдЧреЗредрд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдкреНрд░рдерд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ рдХреНрд░реЛрдорд┐рдпрдо рдпрд╛ рдПрд▓рдПрд▓рд╡реАрдПрдо, рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢реЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ (рдЦрд╛рддреЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЧрд▓рдд рдЕрд▓рд╛рд░реНрдо, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдореНрди-рд╕реНрддрд░ рдФрд░ рдЕрдиреБрдХреВрд▓рди рдбрд╛рдпрдЧреНрдиреЛрд╕реНрдЯрд┐рдХреНрд╕ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП) рдХрдИ рджрд╕рд┐рдпреЛрдВ рд╣рдЬрд╝рд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВредрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдЕрдкрдиреА рдЖрдЙрдЯрдкреБрдЯ рд╡рд┐рдВрдбреЛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рд╡рд░реНрдЪреБрдЕрд▓ рдЧреНрд░рд┐рдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╛рд░реЛрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдирдХреЗ рд▓рдЪреАрд▓реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рднреА рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 1-2 рд╣рдЬрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдиреИрджрд╛рдирд┐рдХ тАЛтАЛрд╕рдВрджреЗрд╢реЛрдВ рдХреА рдРрд╕реА "рдЫреЛрдЯреА" рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рднреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдиреБрдЕрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред рдбрд╛рдЯрд┐рдЯреЗрдмрд▓ рдЯреЗрдмрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╕рдордп, рдРрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╕рд░рд▓ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рдорджрдж рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реБрд▓рдн рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╡рд░реНрдЪреБрдЕрд▓ рдЧреНрд░рд┐рдб рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдореЗрдВ рд▓рдЧрднрдЧ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВредрдЙрдкрдХрд░рдг рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдореЗрдВ рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг
рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ (рдЯреВрд▓рд╡рд┐рдВрдбреЛрд╡реЗрди рдХреНрд▓рд╛рд╕ рд╕реЗ рд╣рдорд╛рд░реЗ рд╡рдВрд╢рдЬ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛) рдЖрдИрдбреАрдИ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк IVsWindowFrameNotify3 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдпрд╣рд╛рдБ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ: public sealed class WindowStatus: IVsWindowFrameNotify3 {
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, WindowStatus рд╡рд░реНрдЧ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд┐рдВрдбреЛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди, рдЖрдХрд╛рд░, рд╕реНрдХреНрд░реАрди рдкрд░ рд╕реНрдерд┐рддрд┐, рджреГрд╢реНрдпрддрд╛ рдЗрддреНрдпрд╛рджрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рд╣рдо рдЗрд╡реЗрдВрдЯ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдЯреВрд▓рд╡рд┐рдВрдбреЛрдкреИрди рд╡рдВрд╢рдЬ рд╡рд░реНрдЧ рдХреЗ рдСрдирдЯреВрд▓рд╡рд┐рдиреНрдбрд╛рдЙрдХреНрдб рдкрджреНрдзрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ: public class MyToolWindow: ToolWindowPane { public override void OnToolWindowCreated() { base.OnToolWindowCreated();
рд╡рд┐рдВрдбреЛ рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА
IVsWindowFrameNotify3 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛ рд╕реНрдерд┐рддрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИредOnShow рд╡рд┐рдзрд┐ рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдХреА рджреГрд╢реНрдпрддрд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдВрдбреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреИрдм рдХреЛ рдПрдХ рд╡рд┐рдВрдбреЛ рд╕реЗ рджреВрд╕рд░реА рд╡рд┐рдВрдбреЛ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдпрддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ __FRAMESHOW рд╕реВрдЪреА рдХреЗ рдЕрдиреБрд░реВрдк fShow рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ редOnClose рдкрджреНрдзрддрд┐ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛ рдлрд╝реНрд░реЗрдо рдмрдВрдж рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк pgrfSaveOptions рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрд╡рд╢реНрдпрдХ IDE рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЦреБрд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрд╡рд╛рдж рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ( __FRAMECLOSE )редOnDockableChange рд╡рд┐рдзрд┐ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдбреЙрдХрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рд╕реНрдерд┐рддрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреА рд╣реИред FDockable рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рд╢реЗрд╖ рдкреИрд░рд╛рдореАрдЯрд░ рдХрдкрд▓рд┐рдВрдЧ рдХреЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╡рд┐рдВрдбреЛ рдХреЗ рдирдП рдЖрдХрд╛рд░ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВредOnMove рдФрд░ OnSize рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ / рдпрд╛ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЗрд╕реЗ рдЦреАрдВрдЪрд╛ рдФрд░ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓рд┐рдВрдХ
- MSDNред рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдкреНрд░рдХрд╛рд░ред
- MSDNред рдЯреВрд▓ рд╡рд┐рдВрдбреЛрдЬред
- MSDNред рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред
- MSDNред рдЯреВрд▓ рд╡рд┐рдВрдбреЛ рд╡реЙрдХрдереНрд░реВред
- MSDNред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдФрд░ рдЙрдкрдпреЛрдЧред
- MZ-рдЙрдкрдХрд░рдгред HOWTO: рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЯреВрд▓рд╡рд┐рдВрдбреЛ рд╕реНрдЯреЗрдЯреНрд╕ рдХреЛ рд╕рдордЭрдирд╛ред
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдПрдХреАрдХрд░рдг
рдпрд╣ рдЦрдВрдб рдХрд╕реНрдЯрдо рд╕рдореВрд╣реЛрдВ рдФрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрдареЛрдВ рдХреЛ рдЕрдкрдиреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдХреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд▓рдЧ-рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдИрдбреАрдИ рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдПрдХреАрдХрд░рдг рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рдорд╛рдирдХ рдФрд░ рдХрд╕реНрдЯрдо рдШрдЯрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдПрдХреНрд╕реЗрд╕ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ, рд╕рд╛рде рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд░рд╛рдЬреНрдп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдкрд░рд┐рдЪрдп
рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛ рдореБрдЦреНрдп рдореЗрдиреВ рдЖрдЗрдЯрдо IDE рдЯреВрд▓реНрд╕ -> рд╡рд┐рдХрд▓реНрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИред Visual Studio рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдореВрд▓ рддрддреНрд╡ рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рд╣реИред рд╡рд┐рдХрд▓реНрдк рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕рдореВрд╣реЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрдареЛрдВ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдЙрд╕рдХреЗ рд╕рдореВрд╣ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд╛рдо рдХреЗ рдирд╛рдо рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬрд╝реБрдЕрд▓ рдмреЗрд╕рд┐рдХ рдХреЛрдб рдПрдбрд┐рдЯрд░ рдХрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ: "рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░, рдмреЗрд╕рд┐рдХ"редрдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЖрдИрдбреАрдИ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдкреГрд╖реНрдареЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдореЙрдбреНрдпреВрд▓ рдЖрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдФрд░ MPF рдХреНрд▓рд╛рд╕реЗрд╕ (рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ, рдХреЗрд╡рд▓ VSPackage рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреЗрдЬ рдмрдирд╛ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдкреЗрдЬ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдпрд╛ рдЕрдХреНрд╖рдо рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рдмрдирд╛рдирд╛ рдФрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛
Visual Studio рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЯреВрд▓ -> рд╡рд┐рдХрд▓реНрдк рдореЗрдиреВ рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрдареЛрдВ рдкрд░ рдореИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рдорд╛рди рдЯреВрд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ UI рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ рдФрд░ рдЖрдИрдбреАрдИ рд╕реЗ рд╕реАрдзреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ, рдЖрдИрдбреАрдИ рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдореЗрдВ рдЗрд╕рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ (рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдпрд╛ рдПрдордкреАрдПрдл) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗредMPF рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХреАрдХрд░рдг
рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдкрдХреЛ рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рдХреНрд▓рд╛рд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЙрдкрдХрд░рдг -> рд╡рд┐рдХрд▓реНрдк рд╕рдВрд╡рд╛рдж рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдХреЛ рдЦреЛрд▓рддреЗ рд╕рдордп рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПредрдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдкреИрдХреЗрдЬ рдЙрдкрд╡рд░реНрдЧ рдХреА ProvOptionPage рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХ (VSPackage) рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред [ProvideOptionPageAttribute(typeof(OptionsPageRegistration), "MyPackage", "MyOptionsPage", 113, 114, true)]
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ IDE рд╕реЗрдЯрд┐рдВрдЧ рд╕рдВрд╡рд╛рдж рдореЗрдВ рд╕рдореВрд╣ рдФрд░ рдкреГрд╖реНрда рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╡рд┐рд╢реЗрд╖рддрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдкреГрд╖реНрда рдХреЛ pkgdef рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╕рд╣реА рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП, рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдХреЛ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<VsVersion>\ ToolsOptionsPages
рдпрд╣рд╛рдБ <VsVersion> рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 10.0ред рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ ProvOptionPage рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреИрдХреЗрдЬ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдореМрдЬреВрдж рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрдареЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2010 рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рд╡реАрдПрд╕рдкреАрдПрд╕реАрдПрдЬ рдореЙрдбреНрдпреВрд▓ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдЙрдирдХреА рддреИрдирд╛рддреА рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡реАрдПрд╕рдЖрдИрдПрдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдпрд╛ рд╣рдЯрд╛рддрд╛ рд╣реИред рдЖрдИрдбреАрдИ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВредрд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдЫрдард╛ рдмреВрд▓ рддрд░реНрдХ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдореЙрдбреНрдпреВрд▓ рд╕реЗ EnvDTE рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕ рдкреГрд╖реНрда рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЬреЛ рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрддреА рд╣реИ) рдирд┐рдореНрди рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<Version\Packages\ <PackageGUID>\Automation HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\<Version>\ AutomationProperties
ProvProfile рд╡рд┐рд╢реЗрд╖рддрд╛ рдЖрдкрдХреЛ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрд╡рддрдВрддреНрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд IDE рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП IProfileManager рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИредрдПрдордкреАрдПрдл рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛
рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдг рд╣реИрдВред рдПрдХ рд╕рдорд╛рди рдЖрдзрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛: namespace MyPackage { class MyOptionsPage : DialogPage { bool myOption = true; public bool MyOption { get { return this. myOption; } set { this. myOption = value; } } } }
рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рдЙрдкрд╡рд░реНрдЧ рдХрд╛ рдпрд╣ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреНрд░реЙрдкрд░реНрдЯреАрдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧ рдХреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рддрдм рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдкреНрд▓рдЧрдЗрди рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдирдХ рдкреНрд░реЙрдкрд░реНрдЯреАрдЧреНрд░рд┐рдб рд╕рдВрдкрд╛рджрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдФрд░ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд░рд▓ рд╣реЛред рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдореВрд▓ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╣реА рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЖрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рднреА рдмрдЪрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╕рд┐рд╕реНрдЯрдо DPIs рдкрд░) рд╕реАрдзреЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдореЗрдВредрд╡рд┐рдВрдбреЛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ DialogPage рдХреНрд▓рд╛рд╕ рдХреА рд╡рд┐рдВрдбреЛ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП : [BrowsableAttribute(false)] protected override IWin32Window Window { get { return MyUserControl; } }
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ IWin32Window рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рд╡рд┐рдВрдбреЛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдРрд╕реА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдХреА рдХреЙрд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВрдХрд┐
рд╡рд┐рдВрдбреЛрдЬ рдлреЙрд░реНрдо рдЬреИрд╕реА рд╡рд╕реНрддреБрдПрдВ, рдЕрдкрдиреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди, рдЕрдкрдиреА рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╣реИрдВрдбрд▓ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦ рд╕рдХрддреА рд╣реИрдВ, рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдЪрд┐рдд рд╣реИредDialogPage рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдХреА рдСрдЯреЛрдореИрдЯрд┐рдХрдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдЙрди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдгреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдорд╛рдирдХ рдШрдЯрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдВрдЧреЗ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирдХ рдЖрдИрдбреАрдИ рд░рд╛рдЬреНрдп-рдмрдЪрдд рддрдВрддреНрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, AutomObject рдПрдХ рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд░рд╛рдЬреНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рдХреА рдЙрдкрд╡рд░реНрдЧ рдкрджреНрдзрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ред SaveSettingsToStorage рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛, LoadSettingsFromStorage рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рдЖрдк рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рддрдВрддреНрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред public override void SaveSettingsToStorage() { ... }
рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдкреГрд╖реНрда, рдЕрдиреНрдп рд╕реНрдЯреЗрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреЗрдЬреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд╕рдорд╛рди, рдЙрдкрдХрд░рдг -> рдЖрдпрд╛рдд / рдирд┐рд░реНрдпрд╛рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SaveSettingsToXml рд╡рд┐рдзрд┐ рдХреЗ рдПрдХ рдорд╛рдирдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдбрд╛рдпрд▓реЙрдЧ рдореЗрдВ рдПрдХреАрдХрд░рдг рдЖрдИрдбреАрдИ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЧрд░ рдорд╛рдирдХ рдкреНрд░реЙрдкрд░реНрдЯреАрдЧреНрд░рд┐рдб рдШрдЯрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╕рдВрд╡рд╛рдж рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдЙрдЪреНрдЪ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рд╢рд╛рдорд┐рд▓ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЖрдИрдбреАрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ), рд╕рд╛рде рд╣реА рд╕реАрдзреЗ рдбрд╛рдпрд▓реЙрдЧ рдкрд░ рдкреВрд░реНрдг рдирд┐рдпрдВрддреНрд░рдг рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди, рдбреАрдкреАрдЖрдИ рдФрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рдорд░реНрдерди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЖрджрд┐ рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИрд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдРрд╕реЗ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рджреБрд░реНрдЧрдо рд╣реЛ рдЬрд╛рддреА рд╣реИредрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдмрд╛рд╣рд░реА xml рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЖрдИрдбреАрдИ рдореЗрдВ рдПрдХреАрдХреГрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЗрди рдЖрдВрддрд░рд┐рдХ рдкреНрд▓рдЧ-рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдПрдХ рднрд╛рдЧ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ / рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рд╕реНрдЯреЗрдЯ-рд╕реЗрд╡рд┐рдВрдЧ рдореИрдХреЗрдирд┐рдЬреНрдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЕрдХреНрд╕рд░ рдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдбреАрд╕рд┐рдиреНрдХреНрд░рдирд╛рдЗрдЬреЗрд╢рди рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддрдВрддреНрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рднреА рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдШрд░реНрд╖реЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рддрдВрддреНрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рдЦрд╛рд▓реА рддрд░реАрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░рдирд╛) рдХреЗ рдкреБрди: рдирд┐рд░реНрдзрд╛рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИредрдПрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рдХреЗ xml рд╡рд┐рд╡рд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреАрдХрд░рдг
рдПрдХ рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рдХреЛ IDE рдореЗрдВ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ AddIn XML рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдПрдХреАрдХреГрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреГрд╖реНрда рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, System.Windows.Forms.UserControlред рдпрд╣ рдШрдЯрдХ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдРрдб-рдЗрди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рд╕реАрдзреЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╣реА рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрд╡рддрдВрддреНрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдРрдбрд┐рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдХреЗрд╡рд▓ рдРрд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рд╡рд╛рд▓реЗ рдРрдб-рдЗрди рд╡рд┐рд╡рд░рдг рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг xml рдлрд╝рд╛рдЗрд▓ рд╣реИред <?xml version="1.0" encoding="UTF-16" standalone="no"?> <Extensibility xmlns="http://schemas.microsoft.com/AutomationExtensibility"> <HostApplication> <Name>Microsoft Visual Studio Macros</Name> <Version>10.0</Version> </HostApplication> <HostApplication> <Name>Microsoft Visual Studio</Name> <Version>10.0</Version> </HostApplication> <Addin> <FriendlyName>My Add in</FriendlyName> <Description>My Addin 1</Description> <Assembly>c:\MyAddIn1\MyAddin1.dll</Assembly> <FullClassName>MyAddin1.Connect</FullClassName> <LoadBehavior>0</LoadBehavior> <CommandPreload>1</CommandPreload> <CommandLineSafe>0</CommandLineSafe> </Addin> <ToolsOptionsPage> <Category Name="MyAddIn1"> <SubCategory Name="My Tools Options Page"> <Assembly> c:\MyAddIn1\MyAddin1.dll</Assembly> <FullClassName>MyAddin1.UserControl1</FullClassName> </SubCategory> </Category> </ToolsOptionsPage> </Extensibility>
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдХрд╛ рд╡рд┐рд╡рд░рдг <ToolsOptionsPage> рдиреЛрдб рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдпрд╣рд╛рдВ, <рд╡рд┐рдзрд╛рдирд╕рднрд╛> рдиреЛрдб рдХрд╕реНрдЯрдо рдШрдЯрдХ рд╡рд╛рд▓реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред <FullClassName> рдиреЛрдб Namespace.ClassName рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреЛрдЧреНрдп рдирд╛рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдиреЛрдбреНрд╕ <рд╢реНрд░реЗрдгреА> рдФрд░ <рдЙрдкрд╢реНрд░реЗрдгреА> рдЙрдкрдХрд░рдг рдХреЗ рд╕реЗрдЯрд┐рдВрдЧ рд╕рдВрд╡рд╛рдж рдХреЗ рдЯреНрд░реА рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ рдпреВрдЬрд░ рдкреЗрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ -> рд╡рд┐рдХрд▓реНрдк рдбрд╛рдпрд▓реЙрдЧ, рдкреЗрдЬ рдХреЗ рд╕рдореВрд╣ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред <рд╢реНрд░реЗрдгреА> рдХреЛ рдореМрдЬреВрджрд╛ рдпрд╛ рдирдП рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрд╕реНрдЯрдо рдШрдЯрдХ MyAddin1.UserControl1 рдПрдХ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИредрджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рд╡рд┐рдХрд▓реНрдк рд╕рдВрд╡рд╛рдж рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рд▓реА рдкрд╣реБрдБрдЪ рдХреЗ рдмрд╛рдж рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдмрдВрдзрд┐рдд рдкреИрдХреЗрдЬ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреГрд╖реНрда рд╡рд┐рд╡рд░рдг рдХреЗрд╡рд▓ рдПрдбрд┐рди xml рд╡рд┐рд╡рд░рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИ, рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдРрд╕реА рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рддреЛ рдкреГрд╖реНрда рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЗрд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдПрдбрд┐рди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИред Addin рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -> рдРрдб-рдЗрди / рдореИрдХреНрд░реЛ рд╕реБрд░рдХреНрд╖рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрдаред MPF рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЗрд╕ рддрд░рд╣ рдХреА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдХреАрдХрд░рдг рд╡рд┐рдзрд┐ рдкреГрд╖реНрда рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рди рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░,рдпрд╣ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдкреЗрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЖрдИрдбреАрдИ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИредрдПрдХ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╡рд┐рдВрдбреЛ рддрдХ рдкрд╣реБрдВрдЪреЗрдВ
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдбрд╛рдпрдиреЗрдорд┐рдХ рд╣реЗрд▓реНрдк рдФрд░ рдлреЛрдВрдЯ рдФрд░ рдХрд▓рд░реНрд╕ рдкреЗрдЬ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЯреВрд▓реНрд╕ -> рдСрдкреНрд╢рдВрд╕ рдбрд╛рдпрд▓реЙрдЧ рдорд╛рд╣реМрд▓ рдХреА рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (рдЗрдирдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ рдПрдкреАрдЖрдИ рд╣реИрдВ)ред рдХрд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реЛрдВрдЧреЗ рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИредрд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк EnvDTE.DTE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА get_Properties рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: Properties propertiesList = PVSStudio.DTE.get_Properties("MyPackage", "MyOptionsPage");
рдпрд╣рд╛рдБ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреГрд╖реНрда рдХреЛ рдЙрд╕рдХреЗ рдирд╛рдо рдФрд░ рдЙрд╕рдХреЗ рд╕рдореВрд╣ рдХреЗ рдирд╛рдо рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: Property MyProp1 = propertiesList.Item("MyOption1");
рдЕрдм рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп MyProp1.Value рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╡рд┐рдХрд▓реНрдк рд╕рдВрд╡рд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧ рдкреГрд╖реНрда рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкреИрдХреЗрдЬ рд╡рд░реНрдЧ рдХреА ShowOptionPage MPF рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: MyPackage.ShowOptionPage(typeof(MyOptionsPage));
рдбреЗрдЯрд╛ рд╡рд┐рдзрд┐ рдбрд╛рдпрд▓реЙрдЧрдкреЗрдЬ рд╕реЗ рд╡рдВрд╢рдЬ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░ (рдЯрд╛рдЗрдкреЛрдл рдкрд░рд┐рдгрд╛рдо) рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рдХрд╕рд┐рдд VSPackage рдХреЗ рдмрд╛рд╣рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдкреГрд╖реНрда рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╛рдирдХ IDE рдкреГрд╖реНрда рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреГрд╖реНрда), рддреЛ рдЖрдк рдЗрд╕реЗ GUID рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рдореНрди рд░рдЬрд┐рд╕реНрдЯреНрд░реА рд╢рд╛рдЦрд╛ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\ ToolsOptionsPages\<OptionsPageNme>\
рдЬрд╣рд╛рдБ Tools рдореЗрдВ <OptionsPageName> рдкреГрд╖реНрда рдХрд╛ рдирд╛рдо рд╣реИ -> рд╡рд┐рдХрд▓реНрдк рд╕рдВрд╡рд╛рджред рдпрд╣рд╛рдБ рдорд╛рдирдХ IDE TextEditor рдЦреЛрд▓рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ -> рд╡реИрд╢реНрд╡рд┐рдХ IMenuCommandService рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд╛рдорд╛рдиреНрдп рдкреГрд╖реНрда: string targetGUID = "734A5DE2-DEBA-11d0-A6D0-00C04FB67F6A"; var command = new CommandID(VSConstants.GUID_VSStandardCommandSet97, VSConstants.cmdidToolsOptions); var mcs = GetService(typeof(IMenuCommandService)) as MenuCommandService; mcs.GlobalInvoke(command, targetGUID);
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Tools.Options рдкрд░реНрдпрд╛рд╡рд░рдг рдХрдорд╛рдВрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕реЗ EnvDTE.DTE рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА ExecuteCommand рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: dte.ExecuteCommand("Tools.Options", "734A5DE2-DEBA-11d0-A6D0-00C04FB67F6A").
рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓рд┐рдВрдХ
- MSDNред рд╡рд┐рдХрд▓реНрдк рдкреГрд╖реНрдаред
- MSDNред рд░рд╛рдЬреНрдп рдХреА рджреГрдврд╝рддрд╛ рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдИрдбреАрдИред
- MSDNред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд╡рд┐рдХрд▓реНрдкред
- MSDNред рдХрд╕реНрдЯрдо рд╡рд┐рдХрд▓реНрдк рдкреГрд╖реНрда рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ ред
- MSDNред VSPackages рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ред
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЙрдбрд▓
рдпрд╣ рдЦрдВрдб рджреГрд╢реНрдп рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЬреБрдЕрд▓ C ++ (VCProject) рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ред рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдФрд░ рдЙрдирдХреЗ рд╕рдВрдХрд▓рди рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЙрдбрд▓ рдХрд╛ рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдкреГрдердХ рд╢реЗрд▓ (рдПрдЯрдо рд╕реНрдЯреВрдбрд┐рдпреЛ) рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛редрдкрд░рд┐рдЪрдп
рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░, рд▓рд┐рдВрдХрд░ рдФрд░ рдЕрдиреНрдп рдЕрд╕реЗрдВрдмрд▓реА рдЯреВрд▓ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде MSVS- рд╕рдВрдЧрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдСрдЯреЛрдореЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ редVCProjects рдХреА рджреЗрд░ рд╕реЗ рдмрдВрдзреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗред Visual C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓, Visual C ++ (vcrpoj / vcxproj) рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реБрдП, рдорд╛рдирдХ Visual Studio рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИред рд╡рд┐рдЬреБрдЕрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдПрдХ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди COM рдШрдЯрдХ рд╣реИ, рдЬреЛ VCProjectEngine.dll рдлрд╝рд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдмрд╛рд╣рд░ рднреА рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдирдП рд╕рдВрдХрд▓рдХ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВредрдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рд╕рдВрд░рдЪрдирд╛
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдХ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ-рдЗрдВрдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рдзрд╛рди, рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдХреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯ, рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдЖрджрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ MSVS рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕рдХреЗ рдСрдЯреЛрдореЗрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЬреБрдбрд╝реА рд╣реИрдВ, рд╡рд╣ рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдорд╛рдирдХ рджреГрд╢реНрдп C ++ рдореЙрдбрд▓ рднреА рдЗрд╕ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдЬрд╛рдЗрди рд╕реНрд╡рдЪрд╛рд▓рди рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИ: Projects |- Project -- Object(unique for the project type) |- ProjectItems (a collection of ProjectItem) |- ProjectItem (single object) -- ProjectItems (another collection) |- Object(unique for the project type)
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЯрд╛рдЗрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╕рд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдЕрдореВрд░реНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдорд╛рдирдХ рдпреЛрдЬрдирд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдореЙрдбрд▓ рдХреЗ рд╕рднреА рдЕрджреНрд╡рд┐рддреАрдп рдЧреБрдгреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд▓рд┐рдВрдХ Project.Object рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рджреГрд╢реНрдп C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЕрдиреЛрдЦреА рд╡рд╕реНрддреБ VCProject рдкреНрд░рдХрд╛рд░ рдХреА рд╣реЛрдЧреА, рдФрд░ рдПрдХ Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AvrGCCNode: Project proj; ... VCProject vcproj = proj.Object as VCProject; AvrGCCNode AvrGccProject = proj.Object as AvrGCCNode;
рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рд╕реЗрдЯ dte.Solution.Projects рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ DTE.GetObject рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА IDE рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рд╕рднреА рд╕рдорд╛рдзрд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП: Projects vcprojs = m_dte.GetObject("VCProjects") as Projects;
рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: Projects AllProjs = PVSStudio.DTE.Solution.Projects;
ProjectItems рдЗрдВрдЯрд░рдлрд╝реЗрд╕, ProjectItem рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЯреНрд░реА рдХреЗ рд╕рд╛рд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдиреБрд░реВрдк, ProjectItem рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рддрддреНрд╡ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ ProjectItems (ProjectItem.ProjectItems рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХреЗ рд╕рдорд╛рди рдиреЗрд╕реНрдЯреЗрдб рд╕рдВрдЧреНрд░рд╣ рд╢рд╛рдорд┐рд▓ рд╣реИ рдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╡рд╕реНрддреБ рдХреЛ ProjectItem.Object рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Visual C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдореЗрдВ, рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓ VCFile рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдИ рдЧрдИ рд╣реИ, рдЬрдмрдХрд┐ Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ AvrGccFileNode рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ: ProjectItem projectItem; ... VCFile file = projectItem.Object as VCFile; AvrGccFileNode file = projectItem.Object as AvrGccFileNode;
рдиреЗрд╕реНрдЯреЗрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ рдЬрдм рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рдпрд╣ рддрддреНрд╡ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ: Project proj = projectItem.Object as Project;
рд╕рдорд╛рдзрд╛рди рдкреЗрдбрд╝ рдХреА рд╢рд╛рдЦрд╛ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЯреНрд░рд╛рд╡реЗрд▓
рд╕рдорд╛рдзрд╛рди рдЯреНрд░реА рд╢рд╛рдЦрд╛ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк IVsHierarchy рдкрджрд╛рдиреБрдХреНрд░рдо рдкреНрд░рдмрдВрдзрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдореВрд░реНрдд рдЯреНрд░реА рдиреЛрдбреНрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╢реАрдЯ, рддрддреНрд╡реЛрдВ рдХрд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЯреНрд░реА рдиреЛрдб рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ DWORD рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ VSITEMID рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдПрдХ рд╣реА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рднреАрддрд░ рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реАрдорд┐рдд рдЬреАрд╡рдирдХрд╛рд▓ рд╣реИредрдкрджрд╛рдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ VsShellUtilities.GetHierthyy рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: public static IVsHierarchy ToHierarchy(EnvDTE.Project project) { System.IServiceProvider serviceProvider = new ServiceProvider(project.DTE as Microsoft.VisualStudio.OLE.Interop.IServiceProvider); Guid guid = GetProjectGuid(serviceProvider, project); if (guid == Guid.Empty) return null; return VsShellUtilities.GetHierarchy(serviceProvider, guid); }
рдпрд╣рд╛рдБ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ GUID рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ GetProjectGuid рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: private static Guid GetProjectGuid(System.IServiceProvider serviceProvider, Project project) { if (ProjectUnloaded(project)) return Guid.Empty; IVsSolution solution = (IVsSolution)serviceProvider.GetService(typeof(SVsSolution)) as IVsSolution; IVsHierarchy hierarchy; solution.GetProjectOfUniqueName(project.FullName, out hierarchy); if (hierarchy != null) { Guid projectGuid; ErrorHandler.ThrowOnFailure( hierarchy.GetGuidProperty( VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ProjectIDGuid, out projectGuid)); if (projectGuid != null) { return projectGuid; } } return Guid.Empty; }
IEnumHierarchies рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рд╕рдорд╛рдзрд╛рди рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддреБрд░рдВрдд рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред GetProjectEnum ред рд╕рдорд╛рдзрд╛рди рдЯреНрд░реА рдХреЗ рд╕рднреА рд╡рд┐рдЬрд╝реБрдЕрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкрджрд╛рдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг: IVsSolution solution = PVSStudio._IVsSolution; if (null != solution) { IEnumHierarchies penum; Guid nullGuid = Guid.Empty; Guid vsppProjectGuid = new Guid("8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942");
рдпрд╣рд╛рдБ GetProjectEnum рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ GUID рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдорд╛рдирдХ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ / MSBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП GUIDs рдХреЛ рдЗрд╕ рд▓рд┐рдВрдХ рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред Penum.Next () рд╡рд┐рдзрд┐ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрджрд╛рдиреБрдХреНрд░рдореЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ (rgelt array)ред рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдЕрдкрдирд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рдЗрди рдореЙрдбрд▓реЛрдВ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛ рдХреА XML рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдкреАрд╡реАрдПрд╕-рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдЖрдИрдбреАрдИ рдкреНрд▓рдЧ-рдЗрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрднреНрдпрд╛рд╕, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдкрд░реАрдд рд╕реНрдерд┐рддрд┐ рднреА рд╕рдВрднрд╡ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рдПрдХ рдХрд╕реНрдЯрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдорд╛рдирдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ GUID рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рд╡рд╣ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо VCProject рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИред рдирддреАрдЬрддрди, рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рдЗрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдкрддрди рд╣реБрдЖ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ VCProject рдореЗрдВ рдореМрдЬреВрдж рдХреБрдЫ рдХреНрд╖реЗрддреНрд░реЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрдкрдирдПрдордкреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди) рдХреЛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╕рдордп,рдЕрдиреНрдп (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд) рдЖрдИрдбреАрдИ рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рд▓рд╛рдпрдХ рд╣реИредрдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ IVsHierarchy рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рд╕реЗ, рд╣рдо рдкрджрд╛рдиреБрдХреНрд░рдо рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдзрд╛рди рдЯреНрд░реА рдХреА рдЗрд╕ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред GetProperty , рдЬреЛ рдЖрдкрдХреЛ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: EnumHierarchyItemsFlat(VSConstants.VSITEMID_ROOT, MyProjectHierarchy, 0, true); ... public void EnumHierarchyItemsFlat(uint itemid, IVsHierarchy hierarchy, int recursionLevel, bool visibleNodesOnly) { if (hierarchy == null) return; int hr; object pVar; hr = hierarchy.GetProperty(itemid, (int)__VSHPROPID.VSHPROPID_ExtObject, out pVar); ProjectItem projectItem = pVar as ProjectItem; if (projectItem != null) { ... } recursionLevel++;
рд╡реГрдХреНрд╖ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рдХрд╛рд░ ProjectItem рдХреА рд╡рд╕реНрддреБ рд╣рдореЗрдВ рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Visual C ++ (рд╕рд╛рде рд╣реА рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбрд▓) рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛редрд╕рднреА рд╕реЙрд▓реНрдпреВрд╢рди рдЯреНрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЯреНрд░реЗрд╡рд░реНрд╕рд┐рдВрдЧ
рд╕рднреА рдЯреНрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк DTE.Solution.Projects рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: if (m_DTE.Solution.Projects != null) { try { foreach (object prj in m_DTE.Solution.Projects) { EnvDTE.Project proj = prj as EnvDTE.Project; if (proj != null) WalkSolutionFolders(proj); } } }
рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рд╕реЙрд▓реНрдпреВрд╢рди рдЯреНрд░реА рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░ рдиреЛрдбреНрд╕ (рд╕реЙрд▓реНрдпреВрд╢рди рдлреЛрд▓реНрдбрд░реНрд╕) рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рддрддреНрд╡ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╕рдордп рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: public void WalkSolutionFolders(Project prj) { VCProject vcprj = prj.Object as VCProject; if (vcprj != null && prj.Kind.Equals(VCCProjectTypeGUID)) { if (!ProjectExcludedFromBuild(prj)) { IVsHierarchy projectHierarchy = ToHierarchy(prj); EnumHierarchyItemsFlat(VSConstants.VSITEMID_ROOT, projectHierarchy, 0, false); } } else if (prj.ProjectItems != null) { foreach (ProjectItem item in prj.ProjectItems) { Project nextlevelprj = item.Object as Project; if (nextlevelprj != null && !ProjectUnloaded(nextlevelprj)) WalkSolutionFolders(nextlevelprj); } } }
рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреА рдЧрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЪреЗрдХ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡реЗ рдЙрддрд╛рд░реЗ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ: public bool ProjectExcludedFromBuild(Project project) { if (project.UniqueName.Equals("<MiscFiles>", StringComparison.InvariantCultureIgnoreCase)) return true; Solution2 solution = m_DTE.Solution as Solution2; SolutionBuild2 solutionBuild = (SolutionBuild2)solution.SolutionBuild; SolutionContexts projectContexts = solutionBuild.ActiveConfiguration.SolutionContexts;
рдмрд╛рдИрдкрд╛рд╕ рдЪрдпрдирд┐рдд рдЖрдЗрдЯрдо
рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рд╡рд┐рдВрдбреЛ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рддрддреНрд╡реЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк DTE.SelectedItems рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред foreach (SelectedItem item in items) { VCProject vcproj = null; if (item.Project != null) { vcproj = item.Project.Object as VCProject; if (vcproj != null && item.Project.Kind.Equals("{" + VSProjectTypes.VCpp + "}")) { IVsHierarchy projectHierarchy = ToHierarchy(item.Project); PatternsForActiveConfigurations.Clear(); EnumHierarchyItemsFlat(VSConstants.VSITEMID_ROOT, projectHierarchy, 0, false, files, showProgressDialog); } else if (item.Project.ProjectItems != null) {
рджреГрд╢реНрдп C ++ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЙрдбрд▓ред рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдЧреБрдг
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд, рдмрд╛рд╣рд░реА рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рдирдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдПрдирд╡реАрдбреАрдЯреАрдИ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕реБрд▓рдн рд╣реИрдВред рдЖрдЗрдП рд╣рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдореВрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ - Microsoft Visual C ++, рдЬрд┐рд╕реЗ Microsoft.VisualStudio.VCProjectEngine рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредVisual C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдорд╛рдирдХ Visual Studio рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдореЙрдбрд▓ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Visual C ++ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ Microsoft.VisualStudio.VCProjectEngine.dll рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╡рд┐рд╕реНрддрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПредVisual C ++ рдореЙрдбрд▓ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдкреИрд░рд╛рдореАрдЯрд░ (рд╕рдВрдХрд▓рди, рд▓рд┐рдВрдХрд┐рдВрдЧ, рдкреНрд░реА рдФрд░ рдкреЛрд╕реНрдЯ-рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдЯреЗрдкреНрд╕, рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдЖрджрд┐) рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИред C / C ++ рд╕реЛрд░реНрд╕ рдХреЛрдб рдлрд╛рдЗрд▓ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ xml рдлрд╛рдЗрд▓ (vcproj / vcproproj) рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рдпреЗ рд╡рд┐рдХрд▓реНрдк рдкреНрд░реЙрдкрд░реНрдЯреА рдкреЗрдЬ рд╕рдВрд╡рд╛рдж рдмреЙрдХреНрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВредрдкреНрд░реЙрдкрд░реНрдЯреА рд╕реЗрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧ рдФрд░ рд░рд┐рд▓реАрдЬрд╝) рдФрд░ рдмрд┐рд▓реНрдб рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (Win32, x64, IA64, рдЖрджрд┐) рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдРрд╕реЗ рд╕реЗрдЯ рдкреВрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЧреБрдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдлрд╝рд╛рдЗрд▓ рдЧреБрдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ)ред рдХрд┐рд╕ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдмрд╣рд┐рд╖реНрдХреГрдд рдлрд╝рд░реНрдордмреЙрдбреА рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдПрдХ рд╕реАрдкреАрдкреА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рд╕рдВрдХрд▓рди рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рджреГрд╢реНрдп C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдореЗрдВ, рдЧреБрдг рдкреГрд╖реНрда VCConfiguration (рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП) рдФрд░ VCFileConfiguration (рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП) рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо ProjectItem рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рдорд╛рдзрд╛рди рдкреЗрдбрд╝ рдХрд╛ рдПрдХ рд╕рд╛рд░ рддрддреНрд╡ рд╣реИред ProjectItem item; VCFile vcfile = item.Object as VCFile; Project project = item.ContainingProject; String pattern = "Release|x64"; if (String.IsNullOrEmpty(pattern)) return null; VCFileConfiguration fileconfig = null; IVCCollection fileCfgs = (IVCCollection)vcfile.FileConfigurations; fileconfig = fileCfgs.Item(pattern) as VCFileConfiguration; if (fileconfig == null) if (fileCfgs.Count == 1) fileconfig = (VCFileConfiguration)fileCfgs.Item(0);
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ VCFile рдСрдмреНрдЬреЗрдХреНрдЯ (C / C ++ рд╣реИрдбрд░ рдпрд╛ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓) рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдорд┐рд▓рд╛ рдЖрдЗрдЯрдо () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЗрд╕реЗ рдЙрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдкреИрдЯрд░реНрди (рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд╛рдо рдФрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдирд╛рдо) рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдкреИрдЯрд░реНрди рдЕрд╕реЗрдВрдмрд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рд╕рдХреНрд░рд┐рдп (IDE рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЪрдпрдирд┐рдд) рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред ConfigurationManager cm = project.ConfigurationManager; Configuration conf = cm.ActiveConfiguration; String platformName = conf.PlatformName; String configName = conf.ConfigurationName; String pattern = configName + "|" + platformName; return pattern;
ActiveConfiguration рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдмрд╛рд░, рд╣рдореЗрдВ рдЕрдХреНрд╕рд░ PVS-Studio рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЗ IDE рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдкрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдлрд╝реАрд▓реНрдб рдЙрди рдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреБрд░реНрдЧрдо рд╣реИ рдЬрдм рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо рдЙрдард╛рддрд╛ рд╣реИ рдпрд╛ рдмрд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдВрджрд╛рдЬрд╛ рд▓рдЧрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд┐рддрд┐ COM рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЙрдк-рдкреНрд░рдЬрд╛рддрд┐ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЪрд░реНрдЪрд╛ EnvDTE рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдЦрдВрдб рдореЗрдВ рдХреА рдЧрдИ рдереА, рдФрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдореЗрдВ рдЦрд╛рдорд┐рдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╣реИредрдЕрдм рд╣рдореЗрдВ рдЗрд╕ рдлрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдорд┐рд▓рддрд╛ рд╣реИ: VCConfiguration cfg=(VCConfiguration)fileconfig.ProjectConfiguration;
рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЯреИрдм рдХреЗ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдЯреВрд▓ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдВрдХ VCConfiguration.Tools рдпрд╛ VCFileConfiguration.Tit рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рдПрдХ рдЕрд╕реЗрдВрдмрд▓реА рдЯреВрд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ)редрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, VCCLCompilerTool рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ C ++ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ : ct = ((IVCCollection)cfg.Tools).Item("VCCLCompilerTool") as VCCLCompilerTool; ctf = fileconfig.Tool as VCCLCompilerTool;
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕реНрдереВрд▓ рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдпрд╛рдВрдХрди рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрдВрдкрд╛рдЗрд▓рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдорд┐рд▓рддреА рд╣реИред String ct_add = fileconfig.Evaluate(ct.AdditionalOptions); String ctf_add = fileconfig.Evaluate(ctf.AdditionalOptions);
рд╕рдВрдкрддреНрддрд┐ рдХреА рдЪрд╛рджрд░реЗрдВ
рдкреНрд░реЙрдкрд░реНрдЯреА рд╢реАрдЯ (рд╕рдВрдкрддреНрддрд┐ рдХреА рдЪрд╛рджрд░реЗрдВ) рдкреНрд░реЙрдкреНрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдПрдордПрд▓ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ (рдпрд╛рдиреА рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдпрд╛ рд▓рд┐рдВрдХрд░ рдЬреИрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓реЙрдиреНрдЪ рдкреИрд░рд╛рдореАрдЯрд░)ред рд╕рдВрдкрддреНрддрд┐ рдкрддреНрд░рдХ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ (vcproj / vcxproj) рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рд╕рдорд░реНрдердХ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИредрд╕рдВрдкрддреНрддрд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬреБрдЕрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ VCPropertySheet рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рдЖрдк VCConfiguration рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ VCPropertySheet рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕реЗрдЯ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВред PropertySheets: IVCCollection PSheets_all = fileconfig.PropertySheets;
рдЗрд╕реА рддрд░рд╣, VCPropertySheet рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░реЙрдкрд░реНрдЯреАрд╢реАрдЯ рдХреНрд╖реЗрддреНрд░ рдЖрдкрдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЪрд╛рдЗрд▓реНрдб рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: private void ProcessAllPropertySheets(VCConfiguration cfg, IVCCollection PSheets) { foreach (VCPropertySheet propertySheet in PSheets) { VCCLCompilerTool ctPS = (VCCLCompilerTool)((IVCCollection)propertySheet.Tools).Item( "VCCLCompilerTool"); if (ctPS != null) { ... IVCCollection InherPSS = propertySheet.PropertySheets; if (InherPSS != null) if (InherPSS.Count != 0) ProcessAllPropertySheets(cfg, InherPSS); } } }
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреА рдкреНрд░реЙрдкрд░реНрдЯреАрд╢реАрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ VCCLCompilerTool (рд╕рдВрдХрд▓рдХ рдЧреБрдг) рдХреА рдПрдХ рд╡рд╕реНрддреБ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдиреЗрд╕реНрдЯреЗрдб рд╕рд╣рд┐рдд рд╕рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕рднреА рд╕рдВрдХрд▓рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗредVCPropertySheet рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдЗрд╕рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рдорд╛рди рдореВрд▓реНрдпрд╛рдВрдХрди рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЕрднреНрдпрд╛рд╕, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЧрд▓рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдореИрдХреНрд░реЛ рдХрд╛ рдореВрд▓реНрдп рд╕реАрдзреЗ рдкреНрд░реЙрдкрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рд╕рдВрд╕реНрдХрд░рдг 4 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ MSBuild рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ Visual Studio 2010 рд╕реЗ рдирдИ vcxproj рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдЕрдВрджрд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред MSBuildThisFileDirectory рдореИрдХреНрд░реЛ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд░реНрддрдорд╛рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕реЗ cfg.Evaluate рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдгрдирд╛ рдХрд░рдХреЗ рдЗрд╕реЗ рдкрде рдХреЗ рд▓рд┐рдП рдЦреЛрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред vcxproj рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЙрд╕ рдкреНрд░реЙрдкрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд╣реАрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИредVisual C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рдЧреБрдг рдкреГрд╖реНрда рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдмрдирд╛рдИ рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЦрд╛рд▓реА MSVC рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЕрдХреНрд╕рд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрдИ рд╕рд╣рд╛рд░рд╛ рдкреГрд╖реНрда рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдкреНрд╕ рдлрд╛рдЗрд▓реЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реЗрдЯрд┐рдВрдЧ рдкреЗрдЬ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдИ рд╕рдВрдХрд▓рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдирд┐рдХреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреИрд░реЗрдХреНрдЯрд░рд╕реЗрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЗрд╕ рдкреНрд░реЙрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░реЙрдкрд░реНрдЯреА рд╢реАрдЯреНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдкрд░ рдлрд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдЬреЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ (рдпреВрдирд┐рдХреЛрдб, _ рдпреВрдирд┐рдХреЛрдб) рдХреЗ рдХрдИ рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬрдм рдкреНрд░реЙрдкреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧреБрдг рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПрд╕рд┐рд╕реНрдЯрдо рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдХрд▓рди рдкреНрд░рддреАрдХреЛрдВ рдХреЛ рднреА рд╕реНрд╡рдЪрд╛рд▓рди рдореЙрдбрд▓ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЗрд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрди рджреЛрдиреЛрдВ рддрдВрддреНрд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реНрдХреЛрдВ рдХрд╛ рджреЛрд╣рд░рд╛рд╡ рд╣реЛрдЧрд╛редAtmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдЕрд╕реЗрдВрдмрд▓реА рдЯреВрд▓реНрд╕ рдореЗрдВ рд╕рдВрдХрд▓рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ Microsoft Visual C ++ рд╕реЗ C / C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Visual Studio рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬреЛ Visual Studio рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдСрдЯреЛрдореЗрд╢рди рдореЙрдбрд▓ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдРрд╕реЗ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рдореЙрдбрд▓ рдХреЛ VSPackage рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХрд┐рд╕реА рддреГрддреАрдп-рдкрдХреНрд╖ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХреЗ рд╕рд╛рде рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣рдордиреЗ рдорд╛рдирдХ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреА рдереА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреГрд╢реНрдп C ++ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИредрдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдПрдореНрдмреЗрдбреЗрдб рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрдм рд╣рдо рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд▓реЗрдирд╛ рджреЗрдирд╛ рд╣реИ? рд╣рд╛рд▓рд╛рдБрдХрд┐, Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ Visual Studio (рдкреГрдердХ рд╢реЗрд▓) рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╢реЗрд▓ рд╣реИред рдЕрдм рд╣рдо рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреЛрд▓реЗ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВ, рд╣рдо рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд▓рдЧ-рдЗрди рдФрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЗрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдирд┐рдпрдорд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВред рдЖрдк рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧреЛрдВ рдореЗрдВ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢реИрд▓ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕рд╣рд┐рдд рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВредAtmel рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдорд╛рдирдХ Visual Studio рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдХрд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рд╡рд┐рдЬреБрдЕрд▓ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде, Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХреЙрдорди рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлреЗрд╕ AvrGCC.dll, AvrProjectManagement.dll рдФрд░ Atmel.Studio.Toolchain.Interfaces.dll рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд╢реЗрд╖ Atmel Studio рдбреЗрд╡рд▓рдкрд░ рдбреЗрд╡рд▓рдкрд░ рдХрд┐рдЯ (XDK) рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ, Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ cproj рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ MSBuild рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, Visual Studio рдореЗрдВ рд╕рднреА рдорд╛рдирдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ)ред Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ C / C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП GCC рд╕рдВрдХрд▓рдХ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВредрдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░
Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ 2 рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: C рдФрд░ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ GUID рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреЗрдбрд╝ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПредAtmel рдбрд┐рдЬрд╛рдЗрди рдореЙрдбрд▓ рдЕрд╕реЗрдВрдмрд▓реА рдЯреВрд▓реНрд╕ рдХреЗ 2 рд╕реЗрдЯ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - GNU C рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ GNU C ++ рдХрдВрдкрд╛рдЗрд▓рд░, рдкреНрд░рддреНрдпреЗрдХ рдЕрдкрдиреА рдЕрд▓рдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рдеред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЬрдмрдХрд┐ C рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ C рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдЯреВрд▓рдХрд┐рдЯ рдореЗрдВ C рдФрд░ C ++ рджреЛрдиреЛрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛрддреА рд╣реИрдВред рдФрд░ рд╕рдВрдХрд▓рди рдХреЗ рджреМрд░рд╛рди, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╕реЗрдЯ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдПрдХрддреНрд░ рд╣реЛрдиреЗ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред "рдорд┐рд╢реНрд░рд┐рдд" рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ 2 рд╕реЗрдЯреЛрдВ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛!рдЖрдк ProjectToolchainOptions рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдкреНрд░реАрд╕реЗрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред ProjectItem item; ... AvrGccFileNode file = item.Object as AvrGccFileNode; AvrGCCNode project = file.ProjectMgr as AvrGCCNode; AvrProjectConfigProperties ActiveProps = project.ConfigurationManager.GetActiveConfigProperties(); ProjectToolchainOptions ToolChainOptions = ActiveProps.ToolchainOptions; if (ToolChainOptions.CppCompiler != null)
рд╕рдВрдХрд▓рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╕рдВрдХрд▓рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрд╡рдпрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░реЗрд╢рдВрд╕ рдкреНрд░рдХрд╛рд░ (CppCompilerOptions рдФрд░ CCompilerOptions рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░) рд╣реИред рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрде рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ: CompilerOptions options; ... List<String> Includes = options. IncludePaths;
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕рднреА рд╕реЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдо рд╣реИ (рдпрд╛рдиреА, рд╕реА рдФрд░ рд╕реА ++ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ рдкрде рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ: List<String> SystemIncludes = options. DefaultIncludePaths;
рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдбрд┐рдХреНрд╢рдирд░реА <рд╕реНрдЯреНрд░рд┐рдВрдЧ, IList <рд╕реНрдЯреНрд░рд┐рдВрдЧ >> рдЕрдиреНрдп рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ (рдХреБрдВрдЬреА) рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛ рд╕рдХрддреА рд╣реИредрдпрджрд┐ рдЖрдкрдХреЛ MSBuild (рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП) рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдкрд╛рд░рд┐рдд рдПрдХ рдкреВрд░реА рд▓рд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХрдорд╛рдВрдбрд▓рд╛рдЗрди рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреБрд░рдВрдд рдРрд╕реА рд▓рд╛рдЗрди рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ (VCProjectEngine рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди!): String RawCommandLine = this.compilerOptions.CommandLine;
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рдЕрднреА рднреА рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдЬреИрд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдкрде рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВредрд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдФрд░ рдкреВрд░реНрдг рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ рджреЛрдиреЛрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЕрдЬреНрдЮрд╛рдд MSBuild рдореИрдХреНрд░реЛрдЬрд╝ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо AvrGCCNode рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ GetAllProjectProperties рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ: AvrGCCNode project; ... Dictionary<string, string> MSBuildProps = new Dictionary<string, string>(); project.GetAllProjectProperties().ForEach(x =>MSBuildProps.Add(x.Key, x.Value));
рдЕрдм рд╣рдо рдкреНрд░рд╛рдкреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд╛рдП рдЧрдП рд╕рднреА рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ MSBuildProps рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВредрдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╕реЗрдВрдмрд▓реА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдмрд▓реНрдХрд┐, рдЕрддрд┐рд░рд┐рдХреНрдд рдЭрдВрдбреЗ рдЬреЛ рдХреЗрд╡рд▓ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред AvrFileNodeProperties рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрди рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ: AvrGccFileNode file; ... AvrFileNodeProperties FileProps = file.NodeProperties as AvrFileNodeProperties; String AdditionalFlags = FileProps.CustomCompilationSetting;
рдЕрдиреБрд╢рдВрд╕рд┐рдд рд▓рд┐рдВрдХ
- MSDN. Visual C++ Project Model.
- MSDN. Project Modeling.
- MSDN. Automation Model Overview.