1

我有 ac# 项目,在解决方案中,平台目标是 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 编译的,通过代码?

谢谢。李

4

1 回答 1

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>

Now I use msbuild with this call

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

And that works

于 2012-11-16T08:53:28.653 回答