I need to get access to the msbuild command line parameters (the specified targets and properties in particular) from within the project file being processed in order to pass th
This question is ancient, but FWIW here is how I have handled getting the MSBuild command line parameters:
$([System.Environment]::CommandLine.Trim())
The problem is that this will cause the following error when using dotnet build
.
'MSB4185: The function "CommandLine" on type "System.Environment" is not available for execution as an MSBuild property function.'
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>