
рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдПрдХ рдЬрд┐рд╕реНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдФрд░ рдореИрдВ рдиреЛрдЯрдкреИрдб ++ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдиреЛрдЯрдкреИрдб ++ рдореЗрдВ рдЬреАрдЖрдИрдЯреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рдирд╣реАрдВ рдорд┐рд▓рдиреЗ рдХреЗ рдмрд╛рдж (рд╡рд╣рд╛рдБ рдХреЗрд╡рд▓ рдЙрджрд╛рддреНрдд рдХреЗ рддрд╣рдд рд╣реИ), рдореИрдВрдиреЗ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЦреИрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдирд╛ рдФрд░ рдЬреАрдереВрдм рдПрдкреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрднрд╡ рдерд╛ред
рд╕реНрд░реЛрдд рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рддреБрд░рдВрдд рдлреИрд▓рд╛рдПрдВ:
NppGist рд╕реНрд░реЛрдд рдФрд░ рд╕реНрд╡рдпрдВ рдкреНрд▓рдЧрдЗрди:
NppGist (рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдиреЛрдЯрдкреИрдб ++ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ)ред
рдиреЛрдЯрдкреИрдб ++ рдХреЗ рддрд╣рдд, рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: C ++, Ada, Delphi, .NET, рд▓реЗрдХрд┐рди рдореИрдВ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдкрд░ рдмрд╕ рдЧрдпрд╛ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдЬрд╛рдирддрд╛ рд╣реВрдВред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- NppPlugin.NET - .NET рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдиреЛрдЯрдкреИрдб ++ рдкреНрд▓рдЧрдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯред
- ServiceStack.Text - JSON ( рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдЫреЛрдЯреЗ рдЖрдХрд╛рд░) рдХреЗ рдХреНрд░рдорд╛рдВрдХрди рдФрд░ рдбреАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рдиред
- рдмрд╛рдзрд╛ , GET, POST, DELETE рдФрд░ рдЕрдиреНрдп рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рдВрдХрд▓рди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдСрдирд▓рд╛рдЗрди рдЙрдкрдХрд░рдг рд╣реИред
- NUnit - рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгред
рдЬреЛ рд▓реЛрдЧ рдиреЛрдЯрдкреИрдб ++ рдХреЗ рддрд╣рдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓рд┐рдЦрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рдкреНрд▓рдЧрд┐рди рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди
рдиреЛрдЯрдкреИрдб ++ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ Win32 рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рд╕рднреА рд╕рдВрджреЗрд╢реЛрдВ, рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдкреНрд▓рдЧ-рдЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ (
NppPlugin.NET.v0.5 ) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА .NET рдХреЗ рддрд╣рдд рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдо рдЯреИрдЧ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ
рдХрд┐рд╕реА рднреА рд╕реАрдкреАрдпреВ рдХреЗ рдмрдЬрд╛рдп
x86 рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ .NET 4.0 рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдкреНрд▓рдЧрдЗрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдкреНрд▓рдЧрдЗрди
CommandMenuInit рдФрд░
SetToolBarIcon рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ рдЖрд░рдВрднрд┐рдХ рд╣реИ ред рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рдкреНрд▓рдЧрдЗрди рдореЗрдиреВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
PluginBase.SetCommand(OpenCommandId, "Open Gist", OpenGistCommand, new ShortcutKey(false, false, false, Keys.None));
рд╡рд╣рд╛рдВ рдЖрдк рдХреБрдЫ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рднреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реЗ рд╡рд┐рдХрд╕рд┐рдд рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
OpenGistCommand рд╡рд┐рдзрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ, рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП - рдПрдХ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдирд╛ред
SetToolBarIcon рд╡рд┐рдзрд┐ рдореЗрдВ,
рдЖрдк рдиреЛрдЯрдкреИрдб ++ рдЯреВрд▓рдмрд╛рд░ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрдЗрдХрди рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
toolbarIcons tbIcons = new toolbarIcons(); tbIcons.hToolbarBmp = tbLoad.GetHbitmap(); IntPtr pTbIcons = Marshal.AllocHGlobal(Marshal.SizeOf(tbIcons)); Marshal.StructureToPtr(tbIcons, pTbIcons, false); Win32.SendMessage(PluginBase.nppData._nppHandle, NppMsg.NPPM_ADDTOOLBARICON, PluginBase._funcItems.Items[OpenCommandId]._cmdID, pTbIcons); Marshal.FreeHGlobal(pTbIcons);
рд╕реЗрдЯрд┐рдВрдЧ рд╕рд╣реЗрдЬрдирд╛ рдФрд░ рд▓реЛрдб рдХрд░рдирд╛
рдкреНрд▓рдЧ-рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рднреА рдмрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
saveLocally = Convert.ToBoolean(Win32.GetPrivateProfileInt("Settings", "saveLocally", 1, IniFileName)); ... Win32.WritePrivateProfileString("Settings", "SaveLocally", (Convert.ToInt32(saveLocally)).ToString(), Main.IniFileName);
рдиреЛрдЯрдкреИрдб ++ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдХрдорд╛рдВрдб
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдиреЛрдЯрдкреИрдб ++ рд╕рд┐рдВрдЯрд┐рд▓рд╛ рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдкрд╛рда рд╕рдВрдкрд╛рджрдХреЛрдВ рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢ рдиреЛрдЯрдкреИрдб ++ рдФрд░ рд╕рд┐рдВрдЯрд┐рд▓рд╛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХреЛрдб
NppPluginNETHelper.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВред рдиреЛрдЯрдкреИрдб ++ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ
рдПрдирдкреАрдкреАрдПрдо рдЙрдкрд╕рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ, рдореЗрдиреВ, рдЯреИрдм, рднрд╛рд╖рд╛рдУрдВ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрджрд▓реЗ рдореЗрдВ, рд╕рд┐рдВрдЯрд┐рд▓рд╛ рд╕рдВрджреЗрд╢ рд╕реАрдзреЗ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ (рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ, рд╣рдЯрд╛рдПрдВ, рд╣рд╛рдЗрд▓рд╛рдЗрдЯ, рджреГрд╢реНрдп рд╢реИрд▓рд┐рдпреЛрдВ, рддрд╣, рд╕реНрдХреНрд░реЙрд▓рд┐рдВрдЧ, рдЖрджрд┐) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
рдиреЛрдЯрдкреИрдб ++ рдШрдЯрдирд╛ рд╣реБрдХ
рдиреЛрдЯрдкреИрдб ++ рдореЗрдВ рдИрд╡реЗрдВрдЯ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЗрдВрдЯрд░рд╕реЗрдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
UnmanagedExports.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
рдиреЛрдЯрд┐рдлрд╛рдЗрдб рд╡рд┐рдзрд┐ рдХрд╛
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпреЗ рд╕рдВрджреЗрд╢ рдиреЛрдЯрдкреИрдб ++ рдЗрд╡реЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП
рдПрдирдкреАрдкреАрдПрди рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмрдВрдж рдХрд░рдирд╛, рдЯреИрдм рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛) рдФрд░
рдПрд╕рд╕реАрдПрди рдХреЛ рд╕рд┐рдВрдЯрд┐рд▓рд╛ рдЗрд╡реЗрдВрдЯреНрд╕ (рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдмрджрд▓рдирд╛) рдХреЗ рд▓рд┐рдПред рд╕рдЪ рд╣реИ, рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдиреЛрдЯрдкреИрдб ++ рдХрдорд╛рдВрдб рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдФрд░ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдВ рд╣реИ:
рд╕рдВрджреЗрд╢ рдФрд░ рд╕реВрдЪрдирд╛рдПрдВ ред рдФрд░ рдпрд╣рд╛рдВ рд╕рд┐рдВрдЯрд┐рд▓рд╛ рдХреЗ рд▓рд┐рдП:
рд╕рд┐рдВрдЯрд┐рд▓рд╛рдбреЛрдХ ред
рдиреЛрдЯрдкреИрдб ++ рд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ UTF8 рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, .NET рдкреНрд▓рдЧрдЗрди рд╢реЗрд▓ рдореЗрдВ UTF8 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд╛рда рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕рдмрд╕реЗ рдЖрдо рд╣реИред рдЗрд╕рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ рд░реВрд╕реА рдкрд╛рда рд╕рд╣рд┐рдд рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд┐рд╕реНрдЯ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
public string lpstrTextUtf8 { get { _readNativeStruct(); int len = 0; while (Marshal.ReadByte(_sciTextRange.lpstrText, len) != 0) ++len; if (len == 0) return string.Empty; byte[] buffer = new byte[len]; Marshal.Copy(_sciTextRange.lpstrText, buffer, 0, buffer.Length); return Encoding.UTF8.GetString(buffer); } }
рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рдиреЛрдЯрдкреИрдб ++ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╕рднреА .dll рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ dll рд╕реЗ рдкреНрд▓рдЧрдЗрди рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрд╛, рддреЛ рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдкреНрд▓рдЧрдЗрди Notepad ++ рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ JSON) рдХреЛ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдмрд╣реБрдд рд╕рд╣реА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдмреЗрд╢рдХ, рдЖрдк рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЕрд░реНрдерд╛рддреН, рдкреНрд▓рдЧ-рдЗрди рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд╕рд╛рде рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдорд┐рд▓рд╛рдХрд░ред рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдФрд░ рдХреЙрдкреА рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рддреЛ, рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХреЗрд╡рд▓ рдПрдХ dll рд▓реЗрддрд╛ рд╣реИ, рддреГрддреАрдп-рдкрдХреНрд╖ рдЕрд╕реЗрдВрдмрд▓рд┐рдпреЛрдВ рдХреЛ
рдПрдВрдмреЗрдбреЗрдб рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:
static Main() { AppDomain.CurrentDomain.AssemblyResolve += ResolveEventHandler; } private static Assembly ResolveEventHandler(object sender, ResolveEventArgs args) { string resource = string.Format("{0}.{1}.dll", PluginName, args.Name.Remove(args.Name.IndexOf(','))); Assembly currentAssembly = Assembly.GetExecutingAssembly(); using (Stream stream = currentAssembly.GetManifestResourceStream(resource)) { var bytes = new byte[(int)stream.Length]; stream.Read(bytes, 0, (int)stream.Length); return Assembly.Load(bytes); } }
рдХреЛрдбрдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЗрдЦ рдореЗрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ:
рдПрдВрдмреЗрдбреЗрдб рд╕рдВрд╕рд╛рдзрди рд╕реЗ DLL рд▓реЛрдб рдХрд░реЗрдВ ред
рдмреЗрд╢рдХ , рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ рдПрдХ рдореЗрдВ
рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреГрддреАрдп-рдкрдХреНрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐, рдЪреВрдВрдХрд┐ ServiceStack.Text рдПрдХ NuGet рдЕрд╕реЗрдВрдмрд▓реА рд╣реИ рдФрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реА рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдордиреЗ рдЗрд╕реЗ NppGist рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Prebuild рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдЬреАрдареВрдм рдЖрдкреА
GitHub Api рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ AccessToken рдХреЛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ
рд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рддрдм
access_oken рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ
рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рдХрд╕рд┐рдд рдкреНрд▓рдЧрдЗрди рдореЗрдВ рдЕрдирд╛рдо рдЗрддрд┐рд╣рд╛рд╕ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдПрдХ рдкреВрд░реА рд╕реВрдЪреА рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ:
рдЬреАрдердм рдЬрд┐рд╕реНрдЯ рдЖрдкреА ред
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рд╕реЗрд╡ рд╡рд┐рдВрдбреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ (рдЙрджреНрдШрд╛рдЯрди рд╡рд┐рдВрдбреЛ рд╕рдорд╛рди рд╣реИ):

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