MsBuild рдиреНрдпреВрдирддрдо рдкрд░рд┐рдпреЛрдЬрдирд╛

рд╕рдВрднрд╡рддрдГ, MsBuild рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдореМрдЬреВрджрд╛ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛, рд▓реЗрдХрд┐рди рдЦрд░реЛрдВрдЪ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдЖ рд░рд╣рд╛ рдерд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдореЗрдВ рдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝реЗрдВред csproj (C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ) рдФрд░ .vbproj (VB.NET рдкреНрд░реЛрдЬреЗрдХреНрдЯ) (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, .myproj рдпрд╛ just .proj)ред рдФрд░ рдХрд┐рд╕реА рдиреЗ, рд╢рд╛рдпрдж рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

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

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╢реЛрдз рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рд╕рдордЭ рдореЗрдВ "рд╕рд╛рдзрд╛рд░рдг" рдкрд░ рд▓рдЧрд╛рдП рдЧрдП рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ:

рдирд┐рд░реНрдгрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛


рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдирд┐рд░реНрдгрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
  1. MSDN рдкрд░ MsBuild рд╕рдВрджрд░реНрдн ;
  2. рдкрд╛рда рд╕рдВрдкрд╛рджрдХ;
  3. рдлрд╝рд╛рдЗрд▓% рд╡рд┐рдВрдбрд░% \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets рдХреА рд╕рд╛рдордЧреНрд░реА;
  4. рд╡рд┐рдХрд▓реНрдк / v: d рдФрд░ / v: msbuild.exe рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЖрд░реЗрдЦ;
  5. cygwin рдмрдВрдбрд▓ рд╕реЗ grep.exe рдкреНрд░реЛрдЧреНрд░рд╛рдоред

рдирд┐рд░реНрдгрдп


рдирд┐рдореНрди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ (рдФрд░ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ):
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <ProjectGuid>{F4279D30-8B96-4217-B811-D2912FAD2C71}</ProjectGuid> </PropertyGroup> <ItemGroup> <BuiltProjectOutputGroupKeyOutput Include="SuperLibrary.dll" /> </ItemGroup> <ItemGroup> <Content Include="logo.bmp" /> <Content Include="help.html" /> </ItemGroup> <Target Name="Build" Outputs="" /> <Target Name="Rebuild" /> <Target Name="Clean" /> <Target Name="GetTargetPath" Outputs="" /> <Target Name="GetNativeManifest" Outputs="" /> <Target Name="GetCopyToOutputDirectoryItems" Outputs="@(_Content)"> <ItemGroup> <Content Include="@(BuiltProjectOutputGroupKeyOutput)" /> <_Content Include="@(Content->'%(FullPath)')"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <TargetPath>%(Filename)%(Extension)</TargetPath> </_Content> </ItemGroup> </Target> </Project> 


рдирд┐рд╖реНрдХрд░реНрд╖


рдЙрдкрд░реЛрдХреНрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рд╣рдордиреЗ рд╕рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдП рдЧрдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛:
  1. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЙрди рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ MsBuild, рдпрд╛рдиреА .csproj рдпрд╛ .vbproj рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ .myproj рдирд╣реАрдВ;
  2. ProjectGuid рдЧреБрдг рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП;
  3. рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рддрддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд ProProputOutputGroupKeyOutput рдХреЗ рд╕рд╛рде рдПрдХреНрд╕рдЯреЗрдВрд╢рди .dll рдпрд╛ .exe (рдпрд╣ рддрддреНрд╡ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ);
  4. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рднреА рддрддреНрд╡ (рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЖрдпрд╛рддрд┐рдд рдирд╣реАрдВ рд╣реИрдВ!) рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рд╕реНрдХ рдкрд░ рдореМрдЬреВрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЕрдиреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЖрдпрд╛рддрд┐рдд рддрддреНрд╡ рдЬреАрдпреВрдЖрдИ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ);
  5. рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрд┐рд▓реНрдб, рд░реАрдмрд┐рд▓реНрдб рдФрд░ рдХреНрд▓реАрди рдЧреЛрд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде GetTargetPath, GetNativeManifest рдФрд░ GetCopyToOutputDirectoryItem рдлрд╝рдВрдХреНрд╢рди рд▓рдХреНрд╖реНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП;
  6. рдмрд┐рд▓реНрдб рдФрд░ GetTargetPath рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдкреНрд░рд╛рдердорд┐рдХ рдЙрддреНрдкрд╛рдж рдирд╣реАрдВ рд╣реИ рддреЛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ);
  7. GetNativeManifest рдХрд╛ рд▓рдХреНрд╖реНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдирд╛ рд╣реИ;
  8. GetCopyToOutputDirectoryItems рдХрд╛ рд▓рдХреНрд╖реНрдп рдЙрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ;
  9. рдлрд╝рдВрдХреНрд╢рди рд▓рдХреНрд╖реНрдп (рдмрд┐рд▓реНрдб рд╕рд╣рд┐рдд) рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рдкрде (рдЪреВрдВрдХрд┐ рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП;
  10. GetCopyToOutputDirectoryItems рд▓рдХреНрд╖реНрдп рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд╕рднреА рддрддреНрд╡реЛрдВ рдореЗрдВ рд╣рдореЗрд╢рд╛ рдпрд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CopyToOutputDirectory рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП;
  11. GetCopyToOutputDirectoryItems рд▓рдХреНрд╖реНрдп рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП, TargetPath рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рдлрд╝рд╛рдЗрд▓ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИ рдЬрдм рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ% рд╣реИ) (Filename)% (рдПрдХреНрд╕рдЯреЗрдВрд╢рди), тАЛтАЛрдЕрд░реНрдерд╛рдд, рд╕реНрд░реЛрдд рддрддреНрд╡ рдХрд╛ рдирд╛рдо рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░)ред


рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2008 рдореЗрдВ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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


All Articles