0

我的项目似乎都有三个<PropertyGroup>项目。

一:

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

二: <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
三: <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

FinalBuilder 一直失败。当我进入项目文件并添加<OutputPath>bin\Debug\</OutputPath>到 .csproj 文件(我理解的 MSBuild 文件)中的第一个元素时,构建成功。

其余两个元素已经<OutputPath>定义。

这是所有三个元素的必填字段吗?为什么我的项目文件的第一个元素中缺少它?

4

1 回答 1

1

当 MSBuild 编译项目时,它会将 OutputPath 作为参数,用于放置构建输出的位置。

.csproj 文件有一些默认设置。它在第一个 <PropertyGroup> 中。

在条件PropertyGroups 中,针对不同的配置和平台,有特定的属性:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">

此节点内的属性会覆盖默认属性,因此它可以专门化构建。

为了命中不同PropertyGroup的 s,MSBuild 需要一些参数,例如,点击“Release|x86”,命令如下所示:

msbuild /p:Configuration="Release" /p:Platform="x86" 

MSBuild 将使用 default 中的属性PropertyGroup,并覆盖/使用PropertyGroup满足条件的 s 中的属性,在此示例中为“Release|x86”来编译代码。

您的问题听起来像 MSBuild 没有正确的参数来评估正确PropertyGroup的 s。

于 2012-04-25T20:21:05.813 回答