1. Главная страница » Компьютеры

Msbuild exe что это

Автор: | 16.12.2019

Поговорим о такой программе как MSBuild, для чего она и можно ли ее удалить. MSBuild является штатным инструментом сборки проекта и используется в редакторе Visual Studio (или SharpDevelop), это такая программа в которой разработчики создают другие программы — пишут код и компилируют потом. Но при этом возможно создавать программы и без этой студии, достаточно чтобы был сам Microsoft Build Engine (MSBuild). Также данный компонент помогает собирать конечные проекты с поддержкой платформы .NET, при этом как версии 2.0 так и более современной.

Если вы думаете как удалить MSBuild, то я этого не советую делать, а то могут возникнуть разные глюки через некоторое время. Могу дать совет — переименуйте папку например в …MSBuild_, поработайте пару дней за компом, если нет глюков можете удалить

Особого смысла писать подробно о том что за программа MSBuild нет, так как вряд ли вам будет интересно, это для программистов. Ну что интересно? Окей, тогда немного напишу. Вот смотрите, MSBuild запускается из командной строки таким образом — файл проекта передается модулю MSBuild.exe с определенными аргументами. В результате при помощи аргументов указываются свойства, задаются обьекты и средства для ведения журнала. Также этот модуль будет полезен для отображения в командной строке ошибок, предупреждений, сообщений.

Разработка приложения в проекте MSBuild при использовании среды разработки Visual Studio 2005:

Итак, какой можем сделать вывод о программе MSBuild?

  • позволяет вести файл журнала с ошибками, предупреждениями и сообщениями при выполнении;
  • обработка в пакетном режиме задач, обьектов, на основе метаданных;
  • преобразование для дальнейшего анализа и эффективного построения проектов;
  • интеграция с Visual Studio, где MSBuild отвечает за проект, поэтому можно использовать любой проект, который был собран с использованием MSBuild, даже если он был создан при помощи другого инструмента;
Читайте также:  Olympus pen mini e pm2

Модуль MSBuild может работать с файлами, расширения у которых соответствует шаблону .*proj.

Скорее всего папку вы нашли в Program Files, но вот какая штука, в эту папку, пользуясь тем что это системный компонент, может также поселится и вирус. Но если вдруг подозреваете, что это вирус… то тут лучше сразу проверить компьютер онлайн сканером, если будут вирусы, то он их найдет и после проверки вы их сможете удалить.

Как видите, интересного мало, это системная программа и папку ее как бы не желательно удалять, тем более что если она просто простаивает — то она никому не мешает и не нагружает процессор вообще никак.

Так вот, по поводу вирусов, если думаете что они поселились на компе — то нет вопросов, проверьте сперва инструментом AdwCleaner, а потом пройдитесь сканером Eset, я о нем писал тут (во второй половине статьи!).

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

MSBuild устроен таким образом, что сборка проекта разбита на несколько этапов.

Target — это некоторый этап (событие), происходящее во время сборки проекта. Можно использовать стандартные таргеты, либо определять собственные.

Task — это некоторая задача, которая может выполняться на определенном этапе. Можно использовать стандартные таски или создавать собственные.

Targets group tasks together in a particular order and allow the build process to be factored into smaller units.
For example, one target may delete all files in the output directory to prepare for the build, while another
compiles the inputs for the project and places them in the empty directory.

Для работы MSBuild Microsoft определил ряд стандартных таргетов (в файлах Microsoft.Common.targets, Microsoft.CSharp.targets и т.д.). Определено огромное множество различных таргетов, но в данной статье мы не будем на этом подробно останавливаться. Некоторые стандартные таргеты (упорядочены):

  • BeforeRebuild
  • Clean
  • BeforeBuild
  • BuildOnlySettings
  • PrepareForBuild
  • PreBuildEvent
  • ResolveReferences
  • PrepareResources
  • ResolveKeySource
  • Compile
  • UnmanagedUnregistration
  • GenerateSerializationAssemblies
  • CreateSatelliteAssemblies
  • GenerateManifests
  • GetTargetPath
  • PrepareForRun
  • UnmanagedRegistration
  • IncrementalClean
  • PostBuildEvent
  • AfterBuild
  • AfterRebuild

Таргеты BeforeBuild и AfterBuild специально созданы для переопределения и их можно использовать. Остальные таргеты из списка не рекомендую использовать, чтобы ничего не сломалось.

Для более подробного просмотра списка таргетов можно использовать параметр /pp:. Благодаря этому параметру будет сформирован файл, в который будут включены все импорты (включая файлы .targets). В нем можно найти множество таргетов и переменных (спасибо aikixd за подсказку).

Для примеров необходимо:

  • Установленная среда разработки Visual Studio
  • Создать проект типа Console Application с именем MSBuildExample
  • Открыть папку проекта и найти там файл MSBuildExample.csproj
  • Открыть файл MSBuildExample.csproj в блокноте или другом редакторе

Во всех примерах этой статьи понадобится редактировать файл MSBuildExample.csproj. Каждый пример подразумевает удаление кода предыдущего примера и добавление нового. Код необходимо добавлять в конец файла .csproj до последней строчки, содержащей закрывающий тег Project.

Внимание! В файле .csproj регистр букв важен.
Для запуска примера необходимо запускать build в среде разработки Visual Studio. Для некоторых примеров потребуется выбирать solution конфигурацию.

Результат будет выводиться в окно Output в Visual Studio (внизу). Если его нет, то откройте его через пункты меню View => Output.

Для примеров будем использовать таск Message, который будет выводить информацию в окно Output в Visual Studio. Как говорилось ранее есть стандартные таргеты BeforeBuild и AfterBuild, воспользуемся ими. Про подготовку читать в разделе Подготовка окружения для примеров.

Результат выполнения (лишнее исключено):

Как видно, был выполнен task Message, который вывел указанный нами текст в момент BeforeBuild и AfterBuild в окно Output в Visual Studio.
При определении таргета с одним и тем же именем он перезаписывается!

Результат выполнения (лишнее исключено):

Если таргетов BeforeBuild и AfterBuild недостаточно или нужно, чтобы таски выполнялись на другом этапе жизненного цикла сборки, то можно определить собственный таргет. Для этих целей есть параметры BeforeTargets и AfterTargets.

Результат выполнения (лишнее исключено):


MyCustomBeforeTarget event
BeforeBuild event
MyCustomAfterTarget event

Было определено два собственных таргета — MyCustomBeforeTarget и MyCustomAfterTarget.
Таргет MyCustomBeforeTarget выполняется до таргета BeforeBuild, потому что мы указали:

Таргет MyCustomAfterTarget выполняется после таргета BeforeBuild, потому что мы указали:

В данной статье не рассматривается как можно писать собственные таски, но прежде чем писать таск, ознакомьтесь со списком тасков, предоставляемых Microsoft.

Рассмотрим несколько примеров использования тасков и макросов.

A Boolean expression that the MSBuild engine uses to determine whether this task will be executed.

Если будет выбрана solution конфигурация Debug, то результат будет выглядеть так (лишнее исключено):

Информацию о макросе $(Configuration) и других макросах можете найти в разделе переменные и макросы в .csproj.

В примере выше у нас есть текст, который можно унифицировать. Чтобы исключить дублирование вынесем в отдельную переменную текст сообщения.

Для определения собственной переменной используется элемент PropertyGroup.

В данном примере сделаем таск, который проверяет создан ли файл App.Debug.config. Если он не создан, то выдаем ошибку. В случае ошибки билд будет остановлен и ошибка будет отображена как ошибки компиляции в окне Error List.
Используем для этого таск Error и уже знакомый нам параметр Condition.

Результат:

В условии Exists используется относительный путь от папки, в которой находится файл .csproj. Для обращения к папке выше текущей использовать ‘../’. Если нужно обратиться к вложенной папке, то использовать формат ‘[DirectoryName]/App.Debug.config’.

В данном примере будем использовать таск Copy. С помощью таска скопируем файл App.config в папку bin/[Configuration]/Config в два файла App.config и App.test.config.

Свойство SourceFiles — массив файлов, которые необходимо скачать. Указывать без кавычек, через точку с запятой.

Свойство DestinationFiles — массив файлов куда будут копироваться файлы. Указывать без кавычек, через точку с запятой.

Подробнее о макросе $(OutputPath) читать в разделе переменные и макросы в .csproj.

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

При использовании MSBuild.exe для создания файла проекта или решения можно включить несколько переключателей для указания различных аспектов процесса.

Аргумент Описание
ProjectFile Создает целевые объекты в указанном файле проекта. Если не указать файл проекта, MSBuild выполнит поиск расширения имени файла, который заканчивается на "proj", и использует этот файл, в текущем рабочем каталоге. Можно также указать файл решения Visual Studio для этого аргумента.
Параметр Краткая форма Описание
/help /? или /h Отобразить сведения об использовании. Ниже представлен пример команды.

msbuild.exe /?

/detailedsummary /ds Показывать подробные сведения о созданных конфигурациях и их запланированное использование в узлах в конце журнала сборки. /ignoreprojectextensions: extensions /ignore: extensions Игнорировать указанные расширения при определении создаваемого файла проекта. Используйте точку с запятой или запятую для разделения нескольких расширений, как показано в следующем примере:

/ignoreprojectextensions:.vcproj,.sln

/maxcpucount[: number ] /m[: number ] Указывает максимальное количество параллельных процессов для использования при создании. Если переключатель не указан, значение по умолчанию равно 1. При включении этого переключателя без указания значения MSBuild будет использовать указанное количество процессоров в компьютере. Дополнительные сведения см. в разделе Параллельное построение нескольких проектов.

В следующем примере MSBuild использует для создания три процесса MSBuild, что позволяет создать три проекта одновременно:

msbuild myproject.proj /maxcpucount:3

/noautoresponse /noautorsp Не включать какие-либо файлы MSBuild.rsp автоматически. /nodeReuse: value /nr: value Включить или отключить повторное использование узлов MSBuild. Можно указать следующие значения:

True. Узлы сохраняются после создания, чтобы последующие сборки могли использовать их (по умолчанию).
False. Узлы не сохраняются после создания.

Узел соответствует выполняющемуся проекту. При включении переключателя /maxcpucount несколько узлов могут выполняться параллельно.

/nologo Не отображать загрузочный баннер или сообщение об авторских правах. /preprocess[: filepath ] /pp[: filepath ] Создать один сводный файл проекта, встроив все файлы, которые будут импортированы во время создания, с отмеченными границами. Этот переключатель можно использовать для более простого определения импортируемых файлов, расположения, из которого выполняется импорт, и файлов, участвующих в сборке. При использовании этого переключателя проект не создается.

Если вы укажете filepath , сводный файл проекта выведет данные в файл. В противном случае выходные данные появятся в окне консоли.

Сведения об использовании элемента Import для вставки файла проекта в другой файл проекта см. в разделе Элемент Import (MSBuild) и Как использовать одинаковый целевой объект в нескольких файлах проектов.

/property: name = value /p: name = value Задать или переопределить указанные свойства уровня проекта, где name является именем свойства, а value — значением свойства. Укажите каждое свойство отдельно или используйте точку с запятой или запятую для разделения нескольких свойств, как показано в следующем примере:

/property:WarningLevel=2;OutDir=binDebug

/target: targets /t: targets Создать указанные целевые объекты в проекте. Укажите каждый целевой объект отдельно или используйте точку с запятой или запятую для разделения нескольких целевых объектов, как показано в следующем примере.

Если с помощью этого переключателя указать какие-либо целевые объекты, они запустятся вместо целевых объектов в атрибуте DefaultTargets в файле проекта. Дополнительные сведения см. в разделе Порядок построения целевого объекта и Практическое руководство. Выбор цели для первого построения.

Целевой объект — это группа задач. Дополнительные сведения см. в разделе Целевые объекты.

/toolsversion: version /tv: version Указывает версию набора инструментов, который используется для создания проекта, как показано в следующем примере: /toolsversion:3.5 .

С помощью этого параметра можно собрать проект и указать версию, которая отличается от версии, указанной в Элемент Project (MSBuild). Дополнительные сведения см. в разделе Переопределение параметров ToolsVersion.

Для MSBuild 4.5 можно указать следующие значения version : 2.0, 3.5 и 4.0. При выборе версии 4.0 свойство сборки VisualStudioVersion указывает, какой вспомогательный набор инструментов следует использовать. Дополнительные сведения см. в подразделе «Вспомогательные наборы инструментов» раздела Набор инструментов (ToolsVersion).

Набор инструментов состоит из задач, целей и средств, используемых для создания приложения. Средства включают компиляторы csc.exe и vbc.exe. Дополнительные сведения о наборах инструментов см. в разделах Набор инструментов (ToolsVersion), Стандартные и настраиваемые конфигурации наборов инструментов и Настройка для различных версий. Note: Версия набора инструментов отличается от версии целевой платформы (версии .NET Framework), для которой создается проект. Дополнительные сведения см. в разделе Целевая рабочая среда и целевая платформа.

/validate:[ schema ] /val[ schema ] Проверить файл проекта и, если проверка прошла успешно, создать проект.

Если не указать schema , проект проверяется по схеме, заданной по умолчанию.

При указании schema проект проверяется по указанной вами схеме.

Примером является следующий параметр: /validate:MyExtendedBuildSchema.xsd .

/verbosity: level /v: level Указывает объем сведений, отображаемый в журнале сборки. Каждое средство ведения журнала отображает события, в соответствии с уровнем детализации, заданным для этого средства ведения журнала.

Можно указать следующие уровни детализации: q[uiet] , m[inimal] , n[ormal] , d[etailed] и diag[nostic] .

Примером является следующий параметр: /verbosity:quiet .

/version /ver Отобразить только сведения о версии. Проект не создается. @ file Вставить параметры командной строки из текстового файла. Если имеется несколько файлов, можно указать их отдельно. Дополнительные сведения см. в разделе Файлы ответов.

Ключи для средств ведения журнала

Параметр Краткая форма Описание
/consoleloggerparameters:

parameters

/clp: parameters Передать указанные параметры в средство ведения журнала консоли, в окне консоли которого отображаются сведения о сборке. Можно задать следующие параметры:

СводкаПроизводительности. Отобразить время, затраченное на выполнение задач, целей и проектов.
Сводка. Показать сводку ошибок и предупреждений в конце.
БезСводки. Не показывать сводку ошибок и предупреждений в конце.
ТолькоОшибки. Показать только ошибки.
ТолькоПредупреждения. Показать только предупреждения.
БезСпискаЭлементовИСвойств. Не показывать список элементов и свойств, появляющийся в начале каждой сборки проекта, если значение уровня детализации — diagnostic .
ПоказатьКоманднуюСтроку. Показать сообщения TaskCommandLineEvent .
ПоказатьОтметкуВремени. Показывать метку времени в качестве префикса для любого сообщения.
ПоказатьИдентификаторСобытия. Показать идентификатор события для каждого запущенного события, завершенного события и сообщения.
ПринудительноОтключитьВыравнивание. Не выравнивать текст по размеру буфера консоли.
ОтключитьЦветКонсоли. Использовать цвета консоли по умолчанию для всех сообщений журнала.
ОтключитьМногопроцессорноеВедениеЖурнала. Отключить многопроцессорное ведение журнала выходных данных в режиме, отличном от многопроцессорного.
ВключитьМногопроцессорноеВедениеЖурнала. Включить многопроцессорное ведение журнала даже при работе в режиме, отличном от многопроцессорного. Такое ведение журнала включено по умолчанию.
УровеньДетализации. Переопределить параметр /verbosity для данного средства ведения журнала.

Используйте точку с запятой или запятую для разделения нескольких параметров, как показано в следующем примере.

/consoleloggerparameters:PerformanceSummary;NoSummary /verbosity:minimal

/distributedFileLogger /dfl Записывать выходные данные сборки каждого узла MSBuild в собственный файл. Первоначальным расположением этих файлов является текущий каталог. По умолчанию файлам присваивается имя "MSBuildNodeId.log". Чтобы указать расположение файлов и других параметров для значения средствоВеденияЖурналаФайла, можно использовать переключатель /fileLoggerParameters.

Если назвать файл журнала, используя переключатель /fileLoggerParameters, распределенное средство ведения журнала будет использовать это имя как шаблон и при создании файла журнала для каждого узла добавит к нему идентификатор узла.

/distributedlogger:

forwarding logger

/dl: central logger * forwarding logger Вести журнал событий из MSBuild, присоединяя разные экземпляры журнала к каждому узлу. Чтобы указать несколько средств ведения журнала, укажите отдельно каждое из них.

Синтаксис средства ведения журнала позволяет указать средство ведения журнала. Синтаксис средства ведения журнала см. в переключателе /logger ниже.

В следующих примерах демонстрируется использование этого переключателя.

/dl:MyLogger,C:My.dll*ForwardingLogger,C:Logger.dll

/fileLogger

[number]

/fl[ number ] Записать выходные данные сборки в один файл в текущем каталоге. Если не указать number , выходной файл будет назван msbuild.log. Если указать number , именем выходного файла будет msbuild n .log, где n — number . Значение Number может быть цифрой от 1 до 9.

Чтобы указать расположение файла и других параметров для значения средствоВеденияЖурналаФайла, можно использовать переключатель /fileLoggerParameters.

/fileloggerparameters:[number]

parameters

/flp:[ number ] parameters Указывает любые дополнительные параметры для средства ведения журнала файла и распределенного средства ведения журнала файла. Наличие этого переключателя означает, что присутствует соответствующий переключатель /filelogger[ number ]. Значение Number может быть цифрой от 1 до 9.

Можно использовать все параметры, которые указаны для /consoleloggerparameters. Также можно использовать один или несколько следующих параметров:

ФайлЖурнала. Путь к файлу журнала, в который записывается журнал сборки. Распределенное средство ведение журнала файла добавляет этот путь к именам файлов журнала.
Добавить. Определяет, добавляется ли журнал сборки в файл журнала или перезаписывает его. Если задать переключатель, журнал сборки добавляется в файл журнала. Если переключатель отсутствует, содержимое существующего файла журнала перезаписывается.
Если включить переключатель добавления независимо от того, установлено значение true или false, журнал будет добавлен. Если переключатель добавления не указан, журнал будет перезаписан.
В этом случае файл перезаписывается: msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log .
В этом случае файл добавляется: msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=true .
В этом случае файл добавляется: msbuild myfile.proj /l:FileLogger,Microsoft.Build.Engine;logfile=MyLog.log;append=false .
Кодировка. Указывает кодировку для файла (например, UTF-8, Юникод или ASCII).

В следующем примере создаются отдельные файлы журнала для предупреждений и ошибок.

Ниже приведены примеры других возможностей.

/flp2:errorsonly;logfile=msbuild.err

/logger:

logger

/l: logger Задает средство ведения журнала для записи событий MSBuild. Чтобы указать несколько средств ведения журнала, укажите отдельно каждое из них.

Используйте следующий синтаксис для logger : [«LoggerClass«,]«LoggerAssembly«[;«LoggerParameters«] .

Используйте следующий синтаксис для LoggerClass : [«PartialOrFullNamespace«.]«LoggerClassName .

Если сборка содержит ровно одно средство ведения журнала, его класс указывать не нужно.

Параметры средства ведения журнала являются необязательными и передаются в него точно по мере их ввода.

В следующих примерах используется переключатель /logger.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *