如果我在命令行中使用我的解决方案文件或项目文件作为输入执行 msbuild,但没有设置配置和平台,那么 msbuild 如何确定解决方案中每个项目或单个项目文件使用的配置和平台?
对于解决方案文件 - msbuild和xbuild都会尝试查找Debug
配置和Mixed Platforms
平台,但如果不存在,则回退到在.sln
文件中的SolutionConfigurationPlatforms
下找到的第一个配置。请注意,这只是解决方案级别的配置/平台,并且它使用.sln
文件中的ProjectConfigurationPlatforms
中的映射确定用于项目的配置/平台。
对于项目文件,*proj
文件通常指定默认的Configuration
和Platform
。但是,即使没有这个东西,Microsoft.Common.*targets
文件也会选择Debug|AnyCPU
作为默认值。
更新:csproj中的默认规范可能如下所示:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
...
这基本上是在说“如果$(Configuration)未指定,则将其设置为Debug”,Platform也类似。