如何从Visual Studio向MSBuild传递参数?

4

我的问题很简单(或者应该是这样的)
我想从Visual Studio向MSBuild传递参数,而不是从命令行传递。
换句话说,当我从Visual Studio点击“生成项目”时,如何执行以下命令:

msbuild myproject.csproj -p:CustomParameter=ItsValue

谢谢!


许多参数(虽然不是全部)可以在IDE的“所有选项”部分中进行修改,例如在VS2015中:项目->属性->C/C++->所有选项->搜索您想要的开关/选项。 - Or b
2个回答

7
在Visual Studio中,您只需要修改项目的proj文件。这个特殊而简单的任务是msbuild命令行的唯一方法。
因此,您需要右键单击Solution Explorer中的项目-->卸载项目-->然后右键单击已卸载的项目-->编辑项目文件
在proj文件底部添加以下内容:
<PropertyGroup>

<CustomParameter>ItsValue</CustomParameter>

</PropertyGroup>

每次您想更改自定义值时,都必须修改proj文件上的属性。

这是唯一的方法,实际上,它确实不如命令行方便。

============================================

更新1

1) 在项目文件夹中添加一个名为test.props的新文件

enter image description here

然后在test.props文件中添加以下内容:

<Project>
<PropertyGroup>

<CustomParameter>ItsValue</CustomParameter>

</PropertyGroup>

</Project>

2) 使用以下内容修改您的proj文件:

<Project Sdk="Microsoft.NET.Sdk">
    <Import Project="test.props"/>
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>


    <Target Name="test123" AfterTargets="Build">

        <Message Importance="high" Text="$(CustomParameter)"></Message>
    </Target>

</Project>

3) 每次打开test.props文件,更改CustomParameter的值,保存后,点击Build按钮,你就可以得到想要的结果。

到目前为止,这是迄今为止最简单的方法。

enter image description here


实际上,在我发布这个问题之后,我已经这样做了,而且它起作用了,但是,实际上,我想要动态地做到这一点,我不想每次构建时都更改proj文件。恐怕你是对的,没有其他办法,不幸的是。 - Hakan Fıstık
我对你有更好的解决方案,希望它能帮到你。请看更新1。这是我为你找到的更简单的方法。 - Mr Qian
是的,这将有助于在多个项目之间共享相同的参数,但主要思想是相同的。再次感谢您的帮助。 - Hakan Fıstık
实际上,该特殊功能适用于msbuild命令行,而VS IDE没有这样方便的方式。在VS IDE中,您必须至少修改一次“csproj”才能获得所需内容。我的功能是只需要修改一次,然后就不必再次修改。将“csproj”文件拆分成单独的props文件,以便在以后进行更改时可用props文件。 - Mr Qian
1
我不会接受这个答案,请不要再问了。虽然你的答案是有效的,但并不完全符合我的要求。之前我已经给你点赞了,因为它确实有帮助,但我不会接受它。再次感谢你,祝你有愉快的一天。 - Hakan Fıstık

-1
如果您在Windows PC上安装了Visual Studio,则:
  1. 按键盘上的Windows搜索键
  2. 输入 Developer Command Prompt for VS
  3. 打开命令提示符
  4. 输入 msbuild <path to your .sln or .csproj file> <optional: switches>。例如:msbuild c:/source/AcmeInc/AcmeInc.sln /p:Configuration=Release

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接