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

11
如果我在命令行中使用我的解决方案文件或项目文件作为输入执行 msbuild,但没有设置配置和平台,那么 msbuild 如何确定解决方案中每个项目或单个项目文件使用的配置和平台?
1个回答

17

对于解决方案文件 - msbuild和xbuild都会尝试查找Debug配置和Mixed Platforms平台,但如果不存在,则回退到在.sln文件中的SolutionConfigurationPlatforms下找到的第一个配置。请注意,这只是解决方案级别的配置/平台,并且它使用.sln文件中的ProjectConfigurationPlatforms中的映射确定用于项目的配置/平台。

对于项目文件,*proj文件通常指定默认的ConfigurationPlatform。但是,即使没有这个东西,Microsoft.Common.*targets文件也会选择Debug|AnyCPU作为默认值。

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

  <PropertyGroup>
     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
     <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
     ...

这基本上是在说“如果$(Configuration)未指定,则将其设置为Debug”,Platform也类似。


在csproj中如何指定默认的“Configuration”和“Platform”?此外,您是否知道Microsoft是否在任何地方记录了这种行为,还是我需要深入研究“Microsoft.Common.*targets”和msbuild代码以找到这些信息?我的意思是,我可以通过创建测试解决方案和proj文件来进行实验,但我不想发现规则比我的实验暴露出的更复杂。 - Max Young
理解构建配置:https://msdn.microsoft.com/zh-cn/library/kkz9kefa.aspx - radical
谢谢,这个链接正是我一直在寻找的!还要谢谢你的更新提醒,我完全忘记了每个项目文件都有这些信息,就在开头。。。 - Max Young
我实际上在MSDN链接(或其当前版本)中并没有看到“msbuild和xbuild尝试查找调试配置和混合平台平台”的内容。 - StingyJack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接