在构建解决方案文件或项目文件时,msbuild默认使用什么配置和平台

Max*_*ung 4 msbuild

如果我使用我的解决方案文件或项目文件作为输入从命令行执行msbuild而不设置配置和平台msbuild如何确定解决方案或单个项目文件中的每个项目使用哪个配置和平台?

rad*_*cal 7

在解决方案文件的情况下 - msbuild和xbuild都尝试查找Debug配置和Mixed platforms平台,但如果不存在,那么它将回退到它可以SolutionConfigurationPlatforms.sln文件中找到的第一个.请记住,这只是解决方案级别的配置/平台,它使用的映射ProjectConfigurationPlatforms.sln的文件来确定配置/平台上使用的项目.

对于项目文件,*proj文件通常具有默认值ConfigurationPlatform指定.但即使这个缺失,那么Microsoft.Common.*targets文件也会选择Debug|AnyCPU默认值.

更新:csproj中的默认规范可能如下所示:

  <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
     ...
Run Code Online (Sandbox Code Playgroud)

它基本上是说"如果$(配置)未指定,则将其设置为Debug",类似于Platform.