通过批处理文件在WPF项目上指定配置和平台时出现MSBuild错误

Dr.*_*ABT 1 msbuild wpf batch-file visual-studio-2010

我必须承认,对于MSBuild和批处理文件,我有点像菜鸟,所以请耐心等待;)

我有一个文件夹结构,看起来像这样

/src
  /SLProject
        SLExampleProject.csproj
  /WPFProject
        WPFExampleProject.csproj
  ExampleSolution.sln
  Deploy.bat
Run Code Online (Sandbox Code Playgroud)

该解决方案包含多个Silverlight WPF项目,这些项目由/ SLProject和/ WPFProject级别的文件夹分隔.我正在尝试创建批处理文件Deploy.bat以在Silverlight和WPF项目的子集上执行MSBuild,将输出和xcopy DLL混淆到另一个文件夹.

我在与MSBuild相关的批处理文件中遇到问题.当我为要构建的第一个WPF项目指定平台和配置时,我收到错误"没有为项目设置OutputPath属性"...

MSBuild错误

以下是导致失败的批处理文件的行

call %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe 
  /t:rebuild /p:Configuration=Release /p:Platform="Any CPU"    
  Abt.Controls.SciChart.Wpf/Abt.Controls.SciChart.Wpf.csproj
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么想法?我可以证实存在输出路径为这个项目设置和平台=释放和配置的组合=存在在建项目和它的依赖AnyCPU.

好奇地删除平台="任何CPU",构建成功...

Sco*_*rch 5

直接构建项目文件时,必须指定项目文件中定义的配置和平台组合.默认情况下,Visual Studio 2010将仅为.NET项目创建Debug | x86和Release | x86.从解决方案文件构建时,这不是问题,因为默认情况下,它会将平台(例如"任何CPU"或"混合平台")映射到项目文件中指定的有效平台之一.

因此,您有两个选项,在从批处理文件构建时为平台指定"x86",或者使用Visual Studio中的Configuration Manager为每个项目创建"任何CPU"的新平台配置.此外,当您为项目创建"任何CPU"平台时,它实际上在项目文件中称为AnyCPU,因此您需要在批处理文件中指定AnyCPU而不是"Any CPU".但是,从命令行构建解决方案时,您仍然需要指定"任何CPU",这只是一个恼人的不一致.