Visual studio Configuration 和 Platform

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值