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

通过批处理文件在WPF项目上指定配置和平台时发生MSBuild错误,wpf,visual-studio-2010,msbuild,batch-file,Wpf,Visual Studio 2010,Msbuild,Batch File,我必须承认,当涉及到MSBuild和批处理文件时,我有点不在行,所以请容忍我;) 我有一个文件夹结构,看起来像这样 /src /SLProject SLExampleProject.csproj /WPFProject WPFExampleProject.csproj ExampleSolution.sln Deploy.bat 该解决方案在/SLProject和/WPFProject级别包含多个按文件夹分开的silverlight WPF项目。

我必须承认,当涉及到MSBuild和批处理文件时,我有点不在行,所以请容忍我;)

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

/src
  /SLProject
        SLExampleProject.csproj
  /WPFProject
        WPFExampleProject.csproj
  ExampleSolution.sln
  Deploy.bat
该解决方案在/SLProject和/WPFProject级别包含多个按文件夹分开的silverlight WPF项目。我正在尝试创建一个批处理文件
Deploy.bat
,以便在Silverlight和WPF项目的子集上执行MSBuild,混淆输出并将DLL复制到另一个文件夹

我的批处理文件中有一个与MSBuild相关的问题。当我为要构建的第一个WPF项目指定平台和配置时,我得到错误“OutputPath属性未为项目设置”

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

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
知道我做错了什么吗?我可以确认这个项目设置了一个输出路径,并且对于正在构建的项目及其依赖项,存在platform=release和configuration=AnyCPU的组合


奇怪的是,移除平台=“任何CPU”后,构建就成功了

直接构建项目文件时,必须指定项目文件中定义的配置和平台组合。默认情况下,VisualStudio2010将仅为.NET项目创建调试版x86和发布版x86。从解决方案文件构建时,这不是问题,因为默认情况下,它会将“任意CPU”或“混合平台”等平台映射到项目文件中指定的有效平台之一


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

直接构建项目文件时,您必须指定项目文件中定义的配置和平台组合。默认情况下,VisualStudio2010将仅为.NET项目创建调试版x86和发布版x86。从解决方案文件构建时,这不是问题,因为默认情况下,它会将“任意CPU”或“混合平台”等平台映射到项目文件中指定的有效平台之一


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

你好,斯科特,谢谢您的回答。在“配置”下的“解决方案属性”中,有一个针对解决方案中所有项目的任何CPU和版本的平台配置,因此产生了混淆:S,尽管我不会忘记犯一个noob错误。我以前从未真正做过批处理MSBuild..@Dr.AndrewBurnett-Thompson我更新了答案,以澄清“任意CPU”与任意CPU的不一致性。基本上,只需更改批处理文件以指定AnyCPU,它就可以工作了。要仔细检查项目文件中指定的实际配置|平台,请执行以下操作:在解决方案资源管理器中右键单击并选择卸载项目,然后再次右键单击并选择编辑。查看文件开头的PropertyGroup标记中指定的配置平台。如果已确认,我是MSBuild noob。这很有效。谢谢你的帮助!你好,斯科特,谢谢你的回答。在“配置”下的“解决方案属性”中,有一个针对解决方案中所有项目的任何CPU和版本的平台配置,因此产生了混淆:S,尽管我不会忘记犯一个noob错误。我以前从未真正做过批处理MSBuild..@Dr.AndrewBurnett-Thompson我更新了答案,以澄清“任意CPU”与任意CPU的不一致性。基本上,只需更改批处理文件以指定AnyCPU,它就可以工作了。要仔细检查项目文件中指定的实际配置|平台,请执行以下操作:在解决方案资源管理器中右键单击并选择卸载项目,然后再次右键单击并选择编辑。查看文件开头的PropertyGroup标记中指定的配置平台。如果已确认,我是MSBuild noob。这很有效。谢谢你的帮助!