Visual studio Configuration 和 Platform

本文详细解析了Visual Studio中工具栏的active选项与Configuration Manager的关系,解释了这些选项如何影响解决方案配置(sln文件)及项目配置(csproj文件)。通过实际案例展示了不同配置组合对编译过程的具体影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 工具栏的active选项和Configuration manager顶部的选项是完全一致的,修改其中一个会导致另一个立即变化。


1. 变更active选项(即在工具栏下拉列表选择不同的选项)并不会修改sln文件。可能会修改.vs下面的隐藏文件,这样你下次打开vs时会记住上次的选项。

2. 每一个active选项对应的是Project Contexts的一个组合。

每次选择一个不同的active选项,则下面的Project Contexts也立即改变。

比如上图对应的是hackerrank采用release和any cpu,而ScopeApplication2采用Release和x86。

hackerrank对应的sln文件里的这两行:

{1F2020AD-E03D-4341-B66A-F96DF2151719}.Release|Any CPU.ActiveCfg = Release|Any CPU

{1F2020AD-E03D-4341-B66A-F96DF2151719}.Release|Any CPU.Build.0 = Release|Any CPU

而ScopeApplication2对应的是:

{81EBD69F-915F-4212-A1E7-8DC2A2BABC1D}.Release|Any CPU.ActiveCfg = Release|x86

等号前面的是solution configuration,也就是active里的选项。

等号后面的是project configuration,也就是Project Contexts里的值,同样也是csproj文件里$(Configuration)|$(Platform)的值。

注意:如果勾了build,则会多出Build.0这一行,不勾则没有Build.0。

3. active configuration 和 active platform是完全独立的。sln文件里会为每一个project配置二者的全部组合。

比如platform添加一个mycpu,则所有的project都会多出如下配置:
Debug|mycpu.ActiveCfg = Release|Any CPU

Release|mycpu.ActiveCfg = Release|Any CPU

active configuration 和 active platform的名字也不具备特殊含义,只是个名字而已。

Project Contexts里的platform比如x64,也只是个名字。

4. 添加新的configuration或platform时,如果勾上create new project configurations,则会修改每个project的csproj文件。

添加类似如下内容:

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MyConf|AnyCPU'">
    <OutputPath>bin\test\</OutputPath>
  </PropertyGroup>

但是删除时却并不会同时从csproj里删除。

5. 决定如何编译的是在csproj文件里。比如

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
Debug和Release不需配置也默认支持。

vs会根据当前active config,找到每个project对应的Configuration|Platform,并设置变量$(Configuration)|$(Platform),也就是build一开始打印出来的值。

Build started: Project: hackerrank, Configuration: Debug Any CPU

然后根据将$(Configuration)|$(Platform)决定如何build。

参考资料:

Any CPU vs x86 vs x64 Solution Platforms

https://social.msdn.microsoft.com/Forums/en-US/5ad0ff2c-558c-43ba-a59d-9cd0a0785103/any-cpu-vs-x86-vs-x64-solution-platforms?forum=netfx64bit

Solution configurations & project configurations

https://blogs.msdn.microsoft.com/cflaat/2003/08/14/solution-configurations-project-configurations/

Understanding Build Configurations

https://msdn.microsoft.com/en-us/library/kkz9kefa.aspx



### Visual Studio C语言开发环境配置教程 #### 安装Visual Studio并选择工作负载 为了在Visual Studio中进行C语言开发,安装过程中需确保选择了适用于C++的工作负载。尽管主要针对C++,但此选项同样支持C语言项目创建编译[^1]。 ```bash # 打开Visual Studio Installer, 修改或新建安装时勾选 "Desktop development with C++" ``` #### 创建新的C语言项目 启动Visual Studio之后,在“创建新项目”窗口里挑选“空项目”,这能给予最大的灵活性来管理源文件其他资源。对于纯粹的C语言工程来说,“空项目”的模板是最合适的选择。 #### 配置项目属性 右键点击解决方案资源管理器中的项目名称,进入属性设置页面: - 将`Configuration Properties -> General -> Project Defaults -> Platform Toolset`设为最新稳定版MSVC工具集; - 转到`C/C++ -> Language`, 设置`Treat Warning As Errors`为否(`No`)以允许某些警告级别下的构建过程继续执行; - 同样在此处确认`Compile As`已设定成`Compile as C Code (/TC)`从而保证所有.cpp文件都将按照C语法解析。 #### 编写第一个C程序 通过添加现有项或者直接在源码目录下新增`.c`扩展名的新文件来引入待测试的简单代码片段hello.c: ```c #include <stdio.h> int main() { printf("Hello from C!\n"); return 0; } ``` 完成上述操作后保存更改,并利用快捷键F5运行带有断点调试功能的应用实例。初次尝试可能会触发关于调试环境的选择对话框;此时应选取适合本地系统的配置方案,比如Linux环境下可选用GDB作为后台引擎[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值