我运行以下命令来构建我的解决方案(C# 中的所有项目):
MSBuild.exe foo.sln /t:Build /p:Configuration=Release /p:Platform="Any CPU"
它在调试配置中构建它。如果我删除对“任何 CPU”的引用
MSBuild.exe foo.sln /t:Build /p:Configuration=Release
构建是在发布配置中构建的。
这是为什么?我在这里错过了一些简单的东西吗?
我运行以下命令来构建我的解决方案(C# 中的所有项目):
MSBuild.exe foo.sln /t:Build /p:Configuration=Release /p:Platform="Any CPU"
它在调试配置中构建它。如果我删除对“任何 CPU”的引用
MSBuild.exe foo.sln /t:Build /p:Configuration=Release
构建是在发布配置中构建的。
这是为什么?我在这里错过了一些简单的东西吗?
添加 /p:Platform=“Any CPU” 参数强制在 Debug 配置中构建
项目的输出目录与项目文件中OutputPath
的属性有关。PropertyGroup
foo.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
项目文件中的属性,确保它与目标平台匹配。
希望这可以帮助。
回答我自己的问题。虽然我试图找出我的解决方案有问题的复杂问题(例如,梳理十几个 .csproj 文件),但问题却简单得令人尴尬。
在解决方案/配置管理器中,对于发布/AnyCPU 设置,一些项目标有调试(不知道为什么 - 解决方案可能已有十年历史)。将它们设置为 Release 可以解决问题。