在.sln文件中时,您有"调试"和"发布"的默认选择。据我了解,这些是某种"构建设置",具体取决于您正在执行的构建类型?
我最近尝试创建自己的设置,发现(令我惊讶的是(创建配置名称似乎并没有创建以下识别的符号:
#if MY_SHINY_NEW_SYMBOL
Console.WriteLine("TESTING MY SYMBOL");
#endif
在Microsoft文档中,我可以看到有一些代码可以让你实际定义符号(大概与在配置管理器中创建一个符号分开(:
#define DEBUG
// ...
这些符号如何工作以及它们在哪里配置?
我问是因为我不小心创建了一个名为"本地"的符号。我删除了它,然后创建了一个名为"本地"的符号。而且我收到编译错误,因为似乎"本地"符号仍然存在,我无法使用不同大小写的符号覆盖它。
我根本没有配置符号,我在预构建事件命令中使用变量$(ConfigurationName)
。
我实际上相当确定这是一个Visual Studio错误,因为我认为删除配置,重新创建具有不同大小写的相同配置,不会导致原始配置重新出现。
生成配置成为 MSBuild 变量,可以在csproj
文件的 MSBuild 属性中引用(请记住,.Net 项目文件实际上是 MSBuild 脚本(。
特别是,"Visual Studio 项目属性"窗口将允许您基于每个配置设置大多数属性(通过将其包装在条件块中(。
特别是,DEBUG
符号是这样设置的(你会在每个csproj
文件中看到这个,但不太简单(:
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
...
<DefineConstants>DEBUG;TRACE</DefineConstants>
...
</PropertyGroup>
您也可以替换它并直接为配置设置一个符号:
<DefineConstants>$(Configuration)</DefineConstants>
但是,如果 VS 保存您的项目文件,它可能会更改它。