рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдЯреАрдорд╕рд┐рдЯреА рд╕реЗрдЯрдЕрдк

рдпрд╣ рдЖрд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН: ASP.NET, C #, NUnit, Selenium 2, git, MSBuildред рдЧрд┐рдЯ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг, рд╕реА # рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдЕрд╕реЗрдВрдмрд▓реА, NUnit рдкрд░реАрдХреНрд╖рдг (рдпреВрдирд┐рдЯ рдФрд░ UI рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг), рд╕рд╛рде рд╣реА рд╕рд░реНрд╡рд░ рдкрд░ рддреИрдирд╛рддреА рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреБрддреНрддреЗ рдХреЛ рдЦрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рд╣реЛрдВрдЧреАред рд▓реЗрдХрд┐рди рдлрд┐рд░, рд╡реЗ рд▓реЗрдЦ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпрд╛ рдХреБрдЫ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЪрд░рдг рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХреИрд╕реЗ рдХрд░реЗрдВред

"рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг" рдХреНрдпрд╛ рд╣реИ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рд╣реИ , рд╕реМрд╡реАрдВ рдмрд╛рд░ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рд╢рд╛рдпрдж рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЦреИрд░, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП - рдЯреАрдорд╕рд┐рдЯреА рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреА рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж рдмрд╕ рдЯреАрд╕реА)? рдпрд╛ рд╢рд╛рдпрдж рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдЬрдм рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╢рд╛рдЦрд╛ (рдпрд╛ рдЕрдиреНрдп рдШрдЯрдирд╛) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛, рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛, рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛, рдЖрджрд┐ред

рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ "рдПрдХреАрдХрд░рдг рд╕рд░реНрд╡рд░" рдФрд░ "рдорд╢реАрди рдЬрд┐рд╕ рдкрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдЧреА" рдЖрдо рддреМрд░ рдкрд░ (рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ) рд╡рд┐рднрд┐рдиреНрди рд╕рд░реНрд╡рд░ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрдИ рдорд╢реАрдиреЗрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рди рдкрд░ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╕рднреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдУрдПрд╕ рдкрд░ - рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрд╣рд╛рдВ рдкрд░ рддреИрдирд╛рдд рдХрд░рдирд╛ рд╣реИред

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

рдЕрдм рдЖрдкрдХреЛ рдХрд╛рд░реНрдп рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдХрд╛рдо рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢рд╛рдЦрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
  1. рд░рд┐рд▓реАрдЬрд╝ - рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХреЛрдб, рдХрд╛рд░реНрдпрд╢реАрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рдпреБрджреНрдз рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реИ;
  2. рджреЗрд╡ - рд╕рднреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЗрд╕рдореЗрдВ рдЬрд╛рддреА рд╣реИрдВ, рдмрд╛рдж рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ;
  3. рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдЬреЛ рджреЗрд╡ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрд╕ рдкрд░ рд▓реМрдЯ рдЖрддреА рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдЧрднрдЧ рдорд╛рдирдХ рдЧрд┐рдЯ-рдкреНрд░рд╡рд╛рд╣, рдЬрд┐рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ ред

рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:

  1. рджреЗрд╡ рд╢рд╛рдЦрд╛ рдХреЗ рднрдВрдбрд╛рд░ рд╕реЗ рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдЙрдард╛рдПрдВ;
  2. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ;
  3. рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛ рд╣реИ - рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ;
  4. рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛ рд╣реИ - рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ;
  5. рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

рд░рд┐рд▓реАрдЬ рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдирдП рдбреЗрдЯрд╛ рдХреЛ рднрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдЯрдм рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред

рдЕрдм, рдЖрдЧреЗ рдмрдврд╝реЗрдВ - рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ!


рднрдВрдбрд╛рд░ рд╕реЗ рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрди рдЦреАрдВрдЪреЛ


рдпрд╣ рд╕рдм рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд░рд▓ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред



" рдмрд┐рд▓реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди " рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рджред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред



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



рддреЛ, рдкреНрд░рдореБрдЦ рд╕реЗрдЯрд┐рдВрдЧреНрд╕:




рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╡рд┐рд╡рд┐рдзрддрд╛ рдЖрдкрдХреЗ рд╕реНрд╡рд╛рдж рдФрд░ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣реИред

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




рд╕рдВрдХрд▓рд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛


рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Visual Studio рд╕реЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ ASP.NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣рд╛рдВ рднреА рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдерд╛ред

рд╣рдо рдмрд┐рд▓реНрдб рд╕реНрдЯреЗрдкреНрд╕ рдореЗрдиреВ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рд░рдирд░ рдЯрд╛рдЗрдк рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ) рдФрд░ MSBuild рдкрд░ рд░реБрдХреЗрдВ ред рдХреНрдпреЛрдВ рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕ рдкрд░? рдпрд╣ рдЕрд╕реЗрдВрдмрд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд░рд▓ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг XML рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдпрд╛ рд╣рдЯрд╛рдХрд░ рднреА рдкрд░реНрдпрд╛рдкреНрдд рдЬрдЯрд┐рд▓ рд╣реИред





рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдердорд┐рдХ рд╣реИред



рдлрд╝рд╛рдЗрд▓ рдкрде - sln рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рдмрдирд╛рдПрдБред
рд╣рдо рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП MSBuild рд╕рдВрд╕реНрдХрд░рдг , MSBuild ToolsVersion рдФрд░ Run рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЪреБрдиреЗрдВ ред

рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдИ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдХреБрдВрдЬреА рдХреА рддрд░рд╣ рдХреБрдЫ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

/p:Configuration=Production 

рдЬрд╣рд╛рдБ рдЙрддреНрдкрд╛рджрди рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдбрд╛рдЙрдирд▓реЛрдб рдиреВрдЧреЗрдЯ рд╕рдВрдХреБрд▓ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ


рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрджрд┐ рдЖрдк NuGet рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ; рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдк рд╕реАрдзреЗ рдЕрдЧрд▓реЗ рдЖрдЗрдЯрдо рдкрд░ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЪреВрдВрдХрд┐ NuGet рдкреИрдХреЗрдЬ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╛рдпрдиреЗрд░реАрдЬрд╝ рдХреЛ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдк рдЕрджреНрднреБрдд NuGet рдкреИрдХреЗрдЬ рд░рд┐рд╕реНрдЯреЛрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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




рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рдбреНрд░рд╛рдЗрд╡ рдХрд░реЗрдВ


рд╣рдорд╛рд░реА рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдзрд╛рди рдХреЗ рднреАрддрд░ рдПрдХ рдЕрд▓рдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдХрд▓рд┐рдд рд╣реИрдВ - рдпрд╣ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред

рдПрдХ рдирдпрд╛ рдЪрд░рдг рдЬреЛрдбрд╝реЗрдВ, рдХреЗрд╡рд▓ рдЕрдм рдзрд╛рд╡рдХ NUnit рд╣реИ ред Execute step рдкреИрд░рд╛рдореАрдЯрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рддрд╣рдд рдХрджрдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕рдореЗрдВ 4 рдорд╛рди рд╣реИрдВ:

рдпрд╣рд╛рдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреЙрд▓рдо рд╕реЗ рд░рди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдВрджрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 %teamcity.build.checkoutDir%\project\project.FuncTests\bin\Dev\project.FuncTests.dll 

% teamcity.build.checkoutDir% рдПрдХ рдЪрд░ рд╣реИ рдЬреЛ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрде рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрде рдХреЛ рдЫреЛрдЯрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 project\project.FuncTests\bin\Dev\project.FuncTests.dll 




рдореИрдВ рдЕрд▓рдЧ рд╕реЗ рд░рди рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡рд┐рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ - рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдЧрд┐рд░ рдЧрдП рдереЗ, рддреЛ рдЕрдЧрд▓реЗ рд░рди рдореЗрдВ рд╡реЗ рдкрд╣рд▓реЗ рд╢реБрд░реВ рд╣реЛрдВрдЧреЗ, рдФрд░ рдЖрдк рдирд╡реАрдирддрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рд▓реЗрдВрдЧреЗред




рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ (рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг)


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

  [SetUpFixture] class ServerInit { private const string ApplicationName = "justtest"; private Process _iisProcess; private string GetApplicationPath(string applicationName) { var tmpDirName=AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\'); var solutionFolder = Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(tmpDirName))); string result = Path.Combine(solutionFolder, applicationName); return result; } [SetUp] public void RunBeforeAnyTests() { [тАж] var applicationPath = GetApplicationPath(ApplicationName); var programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); _iisProcess = new Process { StartInfo = { FileName = string.Format("{0}/IIS Express/iisexpress.exe", programFiles), Arguments = string.Format("/path:\"{0}\" /port:{1}", applicationPath, UrlProvider.Port) } }; _iisProcess.Start(); } [TearDown] public void RunAfterAnyTests() { [тАж] if (_iisProcess.HasExited == false) { _iisProcess.Kill(); } } }] 

рдФрд░ рд▓реЙрдиреНрдЪ рд╕реНрд╡рдпрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрджрдо рдкрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рджрд┐рдЦрддрд╛ рд╣реИред




рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ


рд╕рд░реНрд╡рд░ рдЬрд┐рд╕ рдкрд░ рдЯреАрд╕реА рдПрдЬреЗрдВрдЯ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдЬрд┐рд╕ рд╕рд░реНрд╡рд░ рдкрд░ IIS рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд╡реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рд╣реИрдВ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЧрдВрддрд╡реНрдп рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдмрд╣реБрдд рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмреЗрд╣рдж рд╕рд░рд▓ред рд╣рдо FTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ MSBuild рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред

рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
  1. рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдлрд╝рдЯреАрдкреА рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдЦрд╛рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрдВрддрд░рд┐рдХ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рднрд░рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрджрд┐ рдЯреАрд╕реА рд╕рд░реНрд╡рд░ рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ;
  2. рдПрдлрд╝рдЯреАрдкреА рдЕрдкрд▓реЛрдб рдХрд╛рд░реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЬреЗрдВрдЯ MSBuild рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдХрд╛рд░реНрдп рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ ;
  3. MSBuild рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдЧрд╛:
    1. рдЕрд╕реНрдерд╛рдпреА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдБ
    2. рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдирд╛;
    3. рдПрдлрд╝рдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛ (
 <?xml version="1.0" encoding="utf-8"?> <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0" DefaultTargets="Build"> <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.Tasks.dll"/> <Import Project="$(MSBuildExtensionsPath32)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/> <PropertyGroup> <OutputDir>bin</OutputDir> <PublishDir>../output</PublishDir> <Configuration>Dev</Configuration> <TransformInputFile>..\project\project\Web.template.config</TransformInputFile> <TransformFile>..\project\project\Web.$(Configuration).config</TransformFile> <TransformOutputFile>..\project\output\Web.config</TransformOutputFile> <StackTraceEnabled>False</StackTraceEnabled> </PropertyGroup> <ItemGroup> <ProjectToBuild Include="../project/project.sln"> <Properties>WebProjectOutputDir=$(PublishDir);OutputPath=$(OutputDir);Configuration=Dev</Properties> </ProjectToBuild> </ItemGroup> <Target Name="Build"> <MSBuild Projects="@(ProjectToBuild)"/> </Target> <Target Name="CreateWebConfigs" AfterTargets="Build"> <TransformXml Source="$(TransformInputFile)" Transform="$(TransformFile)" Destination="$(TransformOutputFile)" /> </Target> <Target Name="AfterBuild" AfterTargets="CreateWebConfigs"> <PropertyGroup> <ftpHost>dev.example.com</ftpHost> <ftpUser></ftpUser> <ftpPass></ftpPass> <LocalDirectory>..\project\output</LocalDirectory> </PropertyGroup> <FtpUploadDirectoryContent ServerHost="$(ftpHost)" Port="21" Username="$(ftpUser)" Password="$(ftpPass)" LocalDirectory="$(LocalDirectory)" RemoteDirectory="" Recursive="true" /> </Target> </Project> 


рдФрд░ рдЗрд╕рд▓рд┐рдП - рдЙрд╕реЗ рдмреБрд▓рд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп:



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

рдПрдХ рдФрд░ рдЦрд╛рдореА - рдЬрдм рдХреЛрдИ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдореЗрдВ рдЧреИрд░-рд▓реИрдЯрд┐рди рд╡рд░реНрдгреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреА рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЖрддреА рд╣реИред рд▓реИрдЯрд┐рди рдФрд░ рдЕрдХреНрд╖рд░реЛрдВ / рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдкреИрд░ рдПрдлрд╝рдЯреАрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рджрд┐рдЦрддреЗ рд╣реИрдВ: рдпрд╣ ASCII рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЧреИрд░-ASCII рд╡рд░реНрдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдПрдирдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдХрд┐ "рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХрд╛ рд╕рд░реНрд╡рд░ рд╕рдордЭрддрд╛ рд╣реИред" рддрджрдиреБрд╕рд╛рд░, рдпреЛрдЬрдирд╛ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ MSBuild рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдХрд╛рд░реНрдп рдХреЛ рдкреИрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд░реЛрдд рдЦреБрд▓реЗ рд╣реИрдВ ред WinSCP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред


рд░рд┐рд▓реАрдЬрд╝ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рд╢реБрд░реВ рдХрд░реЗрдВ


рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЬрдВрдЧрд▓реА, рд▓реЗрдХрд┐рди рдкреНрдпрд╛рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВред IIS рдореЗрдВ рдПрдХ рдЦрд╝рд╛рд╕рд┐рдпрдд рд╣реИ: рдпрджрд┐ рдЖрдк рд╕рд╛рдЗрдЯ рдХреЗ рдореВрд▓ рдореЗрдВ app_offline.html рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рд▓рддреЗ рд╣реИрдВ , рддреЛ рд╕рд╛рдЗрдЯ рдХрд╛рдЯ рджреА рдЬрд╛рддреА рд╣реИ, рдЬрдм рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред

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

рд╣рдо WinSCP рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдРрд╕реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд░реНрд╡рд░ рдХреЛ рдпрд╣рд╛рдБ рд╕рдХреНрд╖рдо / рдЕрдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ:

server_off.cmd
 winscp.exe /console /script=server_off.txt 

server_on.cmd
 winscp.exe /console /script=server_on.txt 

server_off.txt
 option batch abort option confirm off open ftp://:@dev.example.com mv _app_offline.htm app_offline.htm close exit 

server_on.txt
 option batch abort option confirm off open ftp://:@dev.example.com rm app_offline.htm close exit 

рдпрд╣реА рд╣реИ, рд╢реБрд░реВ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд░реВрдЯ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рдЗрд╕реЗ _app_offline.html рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЛ рдЕрдкрдбреЗрдЯ рдХреЗ рджреМрд░рд╛рди рдПрдХреНрд╕реЗрд╕ рдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ app_offline.html рдХрд░ рджреЗрддреЗ рд╣реИрдВ ред рдлрд╝рд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рдирдИ _app_offline.html рдлрд╝рд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИ , рдФрд░ рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж, app_offline.html рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ ред рдФрд░ рд╣рдореЗрдВ рд╡рд╣реА рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдерд╛ред

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

рд╕реНрдЯрдм рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ (рд╕реНрдЯрдм рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рд╕рдорд╛рди рд╣реИ):



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

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

рд╡рд╣ рд╕рдм рд╣реИред рдореБрдЭреЗ рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд╕рд▓рд╛рд╣ рд╕реБрдирдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрдкрдХреА рдХрд╣рд╛рдирд┐рдпрд╛рдБ рдШрд░ рдкрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЯреАрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреА рд╣реИрдВред

3 рдирд╡рдВрдмрд░ 2014 рдХрд╛ рдЕрдкрдбреЗрдЯред
рд░рдирд░ рдЯрд╛рдЗрдк "рдХрдорд╛рдВрдб рд▓рд╛рдЗрди" рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ - рдЯреАрдо рд╕рд┐рдЯреА рдЕрдкрдиреЗ рдЖрдк рд╣реА рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдЧрд╛ред

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


All Articles