gpt4 book ai didi

msbuild - 如何从正在处理的项目文件中访问msbuild命令行参数?

转载 作者:行者123 更新时间:2023-12-04 04:42:15 26 4
gpt4 key购买 nike

我需要从正在处理的项目文件中访问msbuild命令行参数(特别是指定的目标和属性),以便将它们传递给 任务的Properties。

我的msbuild文件使用了大量属性,并且我不知道提前通过命令行覆盖哪些属性,因此我正在寻找一种方法来向下传递这些属性,而无需手动将每个属性都指定给 任务。类似于bat文件中的$ *变量。

我该怎么做?

最佳答案

这个问题很古老,但是FWIW在这里是我如何处理获取MSBuild命令行参数的方法:

选项1(不推荐)
$([System.Environment]::CommandLine.Trim())
问题是使用dotnet build时,这将导致以下错误。

'MSB4185: The function "CommandLine" on type "System.Environment" is not available for execution as an MSBuild property function.'



选项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>

关于msbuild - 如何从正在处理的项目文件中访问msbuild命令行参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3260913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com