Этот вопрос древний, но вот как я справился с получением параметров командной строки MSBuild:
Вариант 1 (не рекомендуется)
$([System.Environment]::CommandLine.Trim())
Проблема заключается в том, что это приведет к следующей ошибке при использовании dotnet build
.
'MSB4185: функция «CommandLine» типа «System.Environment» недоступна для выполнения как функция свойства MSBuild. '
Вариант 2 (FTW)
Создание задачи
using System;
using System.Linq;
using Microsoft.Build.Framework;
using Microsoft.Build.Utilities;
public sealed class GetCommandLineArgs : Task {
[Output]
public ITaskItem[] CommandLineArgs { get; private set; }
public override bool Execute() {
CommandLineArgs = Environment.GetCommandLineArgs().Select(a => new TaskItem(a)).ToArray();
return true;
}
}
Использование задачи для создания элемента для каждого аргумента
<GetCommandLineArgs>
<Output TaskParameter="CommandLineArgs" ItemName="CommandLineArg" />
</GetCommandLineArgs>
При желании можно восстановить аргументы в одну строку
<PropertyGroup>
<CommandLineArgs>@(CommandLineArg, ' ')</CommandLineArgs>
<PropertyGroup>