解决方案配置在Visual Studio中的工作原理是什么?

时间:2017-07-31 15:21:53

标签: configuration visual-studio-2017

在.sln文件中,您有“Debug”和“Release”的默认选项。根据我的理解,这些“构建设置”会有所不同,具体取决于您正在进行的构建类型吗?

我最近玩过创建自己的设置,并且发现(令我惊讶的是)创建配置名称似乎没有创建符号:

#if MY_SHINY_NEW_SYMBOL  
    Console.WriteLine("TESTING MY SYMBOL");  
#endif  

Microsoft docs上,我可以看到有代码允许您实际定义符号(可能与仅在Configuration Manager中创建一个符号分开):

#define DEBUG  
// ...  

这些符号如何工作以及它们在何处配置?

我问,因为我不小心创造了一个名为'local'的符号。我删除了它,然后创建了一个名为“Local”的符号。而且我收到了编译错误,因为似乎“本地”符号仍然存在,我不能使用不同的情况用符号覆盖它。

我根本没有配置符号,我在预构建事件命令中使用变量$(ConfigurationName)

我实际上相当确定这是一个Visual Studio错误,因为我认为删除配置,使用不同的情况重新创建相同的配置,不会导致原始配置重新出现。

1 个答案:

答案 0 :(得分:1)

构建配置成为MSBuild变量,可以在csproj文件的MSBuild属性中引用(请记住.Net项目文件实际上是MSBuild脚本)。

特别是,Visual Studio项目属性窗口将允许您在每个配置的基础上设置大多数属性(通过将其包装在条件块中)。

特别是,DEBUG符号设置如下(你会在每个csproj文件中看到这个,但有点简单):

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    ...
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    ...
</PropertyGroup>

您也可以替换它并直接为配置设置符号:

<DefineConstants>$(Configuration)</DefineConstants>

但是,如果保存项目文件,VS很可能会改变它。