Документация о том, как использовать пространство имен MSBuild в исходном коде C#
Я ищу несколько простых ответов о том, как использовать функционал из MSBuild в программе aC#. Нативная документация кажется совершенно бесполезной, потому что я нахожу только такую информацию:
ConsoleLogger.ApplyParameter
Applies a parameter to the logger
Это прототип объяснения, которое лучше никогда не было написано. Ни здесь, ни в объяснении типа параметров вы не найдете, например, ссылку или какие-либо примеры того, для чего могут быть параметры, или их имена, или где найти эту информацию.
Все учебники, которые я нахожу, посвящены MSBuild как отдельному инструменту.
Сейчас мне нужно понять, как получить больше информации о неудачной сборке: этот метод просто возвращает true или false.
bool success = project.Build(new string[] { "Build", "Deploy"}, fileLogger);
Также мне нужно понять, как настроить файллогер и как использовать его из проекта.
Microsoft.Build.Logging.FileLogger fileLogger = new Microsoft.Build.Logging.FileLogger();
1 ответ
Для конкретного примера в вашем вопросе ApplyParameter работает так же, как параметры командной консоли (/clp) из командной строки.
> msbuild /?
...
/consoleloggerparameters:<parameters>
Parameters to console logger. (Short form: /clp)
The available parameters are:
PerformanceSummary--Show time spent in tasks, targets
and projects.
Summary--Show error and warning summary at the end.
NoSummary--Don't show error and warning summary at the
end.
ErrorsOnly--Show only errors.
WarningsOnly--Show only warnings.
NoItemAndPropertyList--Don't show list of items and
properties at the start of each project build.
ShowCommandLine--Show TaskCommandLineEvent messages
ShowTimestamp--Display the Timestamp as a prefix to any
message.
ShowEventId--Show eventId for started events, finished
events, and messages
ForceNoAlign--Does not align the text to the size of
the console buffer
DisableConsoleColor--Use the default console colors
for all logging messages.
DisableMPLogging-- Disable the multiprocessor
logging style of output when running in
non-multiprocessor mode.
EnableMPLogging--Enable the multiprocessor logging
style even when running in non-multiprocessor
mode. This logging style is on by default.
Verbosity--overrides the /verbosity setting for this
logger.
Example:
/consoleloggerparameters:PerformanceSummary;NoSummary;
Verbosity=minimal
Так что для примера, показанного в справке,
logger.ApplyParameter("PerformanceSummary", "NoSummary");
logger.ApplyParameter("Verbosity", "minimal");
Если вам нужен высокий уровень контроля над регистратором, который вы присоединяете к сборочному механизму из кода, вы можете рассмотреть возможность написания собственного регистратора, а не пытаться интерпретировать / анализировать текстовый вывод из стандартного консольного регистратора.