使用msbuild.exe构建C#项目不会覆盖项目目标平台配置?

时间:2012-11-16 08:43:27

标签: c# msbuild x86 64-bit platform

我有一个c#项目,在解决方案中,平台目标是AnyCPU。虽然我有一个构建程序,它将每天构建此解决方案,它使用msbuild.exe。该命令喜欢:

MSBuild D:\ my.sln / p:Configuration = Release / p:Platform = x86 / t:rebuild ....

这里我指定编译平台应该是x86。

我的意见是,msbuild.exe应该覆盖解决方案配置,输出应该是x86 exe而不是任何CPU类型。

我在这个项目中尝试这些代码:

        PortableExecutableKinds peKind;
        ImageFileMachine machine;

        Assembly.GetExecutingAssembly().ManifestModule.GetPEKind(out peKind, out machine);

测试结果表明,exe是AnyCPU模式(ILOnly),不是预期的。 在这种情况下,如何通过代码?

通过x86或x64来编译我的程序

感谢。 李

1 个答案:

答案 0 :(得分:1)

我不想构建.sln文件,但使用msbuild.exe使用一点构建脚本

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Deploy" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">


<Target Name="BuildProjects" >

    <ItemGroup>      
        <BuildProjectsInputFiles Include="**\MainProject\*.??proj" />
        <BuildProjectsInputFiles Include="**\AnotherProject\*.??proj" />
    </ItemGroup>

    <MSBuild Projects="@(BuildProjectsInputFiles)" Properties="Configuration=$(Configuration);OutputPath=$(MSBuildProjectDirectory)\Deploy\bin\%(BuildProjectsInputFiles.FileName)">
        <Output TaskParameter="TargetOutputs"
                ItemName="BuildProjectsOutputFiles" />
    </MSBuild>

</Target>

</Project>

现在我使用msbuild进行此调用

msbuild.exe build.xml /p:OutputPath=bin\Debug;Configuration=Release;Platform=x86 /target:BuildProjects

这有效