18. MSBuild


Чтобы посмотреть презентацию с картинками, оформлением и слайдами, скачайте ее файл и откройте в PowerPoint на своем компьютере.
Текстовое содержимое слайдов презентации:

MSBuild Знакомство с MSBuild Что этоСистема сборки проектовсборка из командной строки (msbuild.exe)скрипты для TFS (хотя есть и другой механизм)Формат файл == файл проекта для VSЧасть .Net Framework (с 2.0) Простой пример<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" DefaultTargets="MakeProject" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <OutputType>Exe</OutputType> <OutputPath>bin</OutputPath> <ProjectGuid>{959C80B7-1D52-40BD-BC14-F0FD962D8DB6}</ProjectGuid> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Core" /> </ItemGroup> <ItemGroup> <Compile Include="Program.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Target Name="MakeProject" DependsOnTargets="Build"> <Message Text="Compile is complete!!!" Importance="high"/> </Target></Project>«Шапка» проекта Объявление переменных (properties) Объявление коллекций элементов (items) Подключение внешних источников задачЦельЗадача


Сборка проектаИз Visual Studio Из командной строки Базовые элементы Property. Объявление и использование<?xml version="1.0" encoding="utf-8"?><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration>Debug</Configuration> </PropertyGroup> <PropertyGroup> <Configuration>Release</Configuration> </PropertyGroup> <Target Name="PrintConfig"> <Message Text="Config: $(Configuration)"/> </Target> <PropertyGroup> <Configuration>CustomRelease</Configuration> </PropertyGroup></Project> Другие источники propertyПредопределенные $(MSBuildProjectFile), $(MSBuildExtensionsPath), …MSBuild Reserved PropertiesИспользуемые в стандартных проектах VS$(NoStdLib), $(OutputPath), $(OutputType), …Common MSBuild Project PropertiesПеременные среды<Message Text="$(ProgramFiles), $(Windir)" />Из командной строкиmsbuild MSBuild1.xml /p:Configuration=Debug ItemsКоллекции значенийфайлыпроизвольные значения<?xml version="1.0" encoding="utf-8"?><Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Compile Include="D:\Projects\_old\**\*.*" /> <Compile Include="$(windir)\Temp\*.*" Exclude="*.txt" /> <Compile Include="1;2;4" /> </ItemGroup> <Target Name="One"> <Message Text="@(Compile)" /> </Target> </Project> Формирование ItemsАтрибуты Include и ExcludeУказание значенийперечисление через «;»wildcards: *, ?, **Используемые в проектах [email protected](Reference), @(Compile), @(EmbeddedResource), …Common MSBuild Project Items Метаданные Items<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Reference Include="System"> <Private>True</Private> </Reference> <Reference Include="System.Core" /> </ItemGroup> <Target Name="One"> <Message Text="@(Reference->'%(Private)')" /> </Target> </Project> Источники метаданныхВстроенные%(Filename), %(RelativeDir), …MSBuild Well-known Item MetadataИспользуемые с предопределенными Itemsдля Reference: %(SpecificVersion), %(Private), …Common MSBuild Project ItemsCustom TasksСтандартныеCopy, MSBuild, Message, MakeDir, Delete, …MSBuild Task ReferenceДополнительныеготовые пакетысвои<Target Name="MakeProject" DependsOnTargets="Build"> <Message Text="Copy sources..." Importance="high" /> <Copy SourceFiles="@(Compile)" DestinationFolder="$(OutputPath)\sources" /> <Message Text="Copy completed!" Importance="high" /></Target> Обработка результатов TasksТэг <Output>ItemNamePropertyNameTaskParameter<Target Name="MakeProject" DependsOnTargets="Build"> <Message Text="Copy sources..." Importance="high" /> <Copy SourceFiles="@(Compile)" DestinationFolder="$(OutputPath)\sources" > <Output ItemName="SrcFiles" TaskParameter="CopiedFiles"/> </Copy> <Message Text="Copy completed: @(SrcFiles)" Importance="high" /></Target> TargetsОбязательное только Name<Target Name="" DependsOnTargets="" Inputs="" Outputs="" … ></Target> <Target Name="CopySqlFiles" Inputs="@(DbProject)" Outputs="$(ReleaseFolder)\%(Folder)"> <ItemGroup> <InputItems Include="%(DbProject.RootDir)%(DbProject.Directory)\sql\Release\*.*" /> </ItemGroup> <Copy SourceFiles="@(InputItems)" DestinationFolder="$(ReleaseFolder)\%(DbProject.Folder)" /> </Target> <PropertyGroup> <ReleaseTargets> ClearPackage; BuildDbProject; CopySqlFiles; MakeBatFiles; </ReleaseTargets> </PropertyGroup> <Target Name="BuildRelease" DependsOnTargets="$(ReleaseTargets)" /> Порядок выполнения скриптаЗагрузка переменных окружения, глобальных (встроенных) свойствВычисление свойств и выполнение импорта (с вычислением свойств в импортируемом) по порядку объявленияВычисление ItemsПодключение внешних задачЗапуск сборки Расширенные возможности Тэг ProjectToolsVersion – номер версии (4.0, 3.5, …)влияет на выбор пути $(MSBuildBinPath) и $(MSBuildToolsPath).DefaultTargets – запускаются, если нет явного указания в командной строкеInitialTargets – запускаются ДО запуска явно указанной цели или DefaultTargets<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="" ToolsVersion="" InitialTargets=""> Тэг <Import>Cоглашение по расширениям файлов.XXXproj – файлы проектов.targets – определения целей.props – настройки (properties, items).tasks – файлы, подключающие внешние задачи<Import Project="Tasks\Microsoft.Sdc.Common.tasks"/><Import Project="$(MSBuildExtensionsPath32)\StyleCop\v4.7\StyleCop.Targets" /> Условия (Condition)Применим практически ко всем элементамОператорысравнения: ==, !=, <, >, <=, >=, Exists(‘’), HasTrailingSlash(‘’)And, Or, ! <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration></PropertyGroup> Dynamic Properties and Items<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="One;Two;Three"> <PropertyGroup> <Configuration>Debug</Configuration> </PropertyGroup> <Target Name="One"> <Message Text="$(Configuration)" /> </Target> <Target Name="Two"> <PropertyGroup> <Configuration>Release</Configuration> </PropertyGroup> </Target> <Target Name="Three"> <Message Text="$(Configuration)" /> </Target></Project> Трансформации ItemsВ выражениях трансформации можно использоватьтекстPropertyItem Metadata<Target Name="CopyFiles"> <Copy SourceFiles="@(SourceFiles)" DestinationFiles= "@(SourceFiles->'$(Dest)%(RecursiveDir)%(Filename)%(Extension)')" /></Target> Дополнительные библиотеки задачКаждая задача – класс .NetСторонние пакеты MSBuild Extension PackMSBuild Community TasksSDC Tasks <UsingTask AssemblyFile="$(MSBuildExtensionsPath)\..\StyleCop 4.7\StyleCop.dll" TaskName="StyleCopTask"/> Custom Tasknamespace MyTask{ using Microsoft.Build.Framework; using Microsoft.Build.Utilities; public class SimpleTask : ITask { public IBuildEngine BuildEngine { get; set; } public ITaskHost HostObject { get; set; } public string Name { get; set; } public bool Execute() { var log = new TaskLoggingHelper(this); log.LogMessage("Hello, {0}", Name); return true; } }}<Project DefaultTargets="One"> <UsingTask AssemblyFile="MyTask.dll" TaskName="SimpleTask"/> <Target Name="One"> <SimpleTask Name="Mihail Romanov"/> </Target></Project>

Приложенные файлы

  • pptx 15845481
    Размер файла: 84 kB Загрузок: 0

Добавить комментарий