DefineConstants 通过 CLI 而不是通过 VS2010 接口 CL 参数工作

DefineConstants works through CLI but not through VS2010 interface CL arguments

我有一个简单的程序来查找预编译常量:

#if TEST1
    MessageBox.Show("TEST1");
#endif

现在,如果我通过 CLI 构建以下内容,一切都符合预期。消息框显示 "TEST1".

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild" "C:\tests\TestBuildConstants\TestBuildConstants.sln" /p:OutDir="C:\tests\TestBuildConstants" /p:DefineConstants="TEST1" /t:Rebuild

但是,如果我转到项目属性 -> 调试 -> 命令行参数,然后输入:/p:DefineConstants="TEST1" /t:Rebuild,一旦我 运行 程序,它就会拒绝传递常量。

我想像这样浏览 VS GUI 的原因是因为我想在编写代码时能够快速测试并在各种构建之间切换。

我错过了什么?

项目属性 > 调试 > 命令行参数用于在 VS 运行 构建应用程序后传递给应用程序的参数。它们不是 MSBuild 的参数。您需要转到“项目属性”>“构建”页面并更改 "Conditional compilation symbols" 以包含 TEST1。