5

我运行以下命令来构建我的解决方案(C# 中的所有项目):

MSBuild.exe foo.sln /t:Build /p:Configuration=Release /p:Platform="Any CPU"

它在调试配置中构建它。如果我删除对“任何 CPU”的引用

MSBuild.exe foo.sln /t:Build /p:Configuration=Release

构建是在发布配置中构建的。

这是为什么?我在这里错过了一些简单的东西吗?

4

2 回答 2

5

添加 /p:Platform=“Any CPU” 参数强制在 Debug 配置中构建

项目的输出目录与项目文件中OutputPath的属性有关。PropertyGroupfoo.csproj

根据您的描述,您的项目文件中可能没有OutputPath正确配置目标平台,例如:

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

如果我们<OutputPath>bin\Debug\</OutputPath>为 Release 配置提供,那么我们将在 Debug 文件夹中获得输出。

因此,要解决此问题,您需要检查OutputPath项目文件中的属性,确保它与目标平台匹配。

希望这可以帮助。

于 2018-05-18T06:31:02.670 回答
1

回答我自己的问题。虽然我试图找出我的解决方案有问题的复杂问题(例如,梳理十几个 .csproj 文件),但问题却简单得令人尴尬。

在解决方案/配置管理器中,对于发布/AnyCPU 设置,一些项目标有调试(不知道为什么 - 解决方案可能已有十年历史)。将它们设置为 Release 可以解决问题。

于 2018-05-22T14:03:29.830 回答