解决方案配置在 Visual Studio 中究竟是如何工作的?



在.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 保存您的项目文件,它可能会更改它。

最新更新