1

私は ac# プロジェクトを持っており、ソリューションでは、プラットフォーム ターゲットは AnyCPU です。このソリューションを毎日ビルドするビルド プログラムがあり、msbuild.exe を使用しています。コマンドは好きです:

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

ここでは、コンパイルされたプラットフォームが x86 であることを指定します。

私の意見では、msbuild.exe はソリューションの構成を上書きし、出力は anyCPU タイプではなく x86 exe になるはずです。

私はこのプロジェクトにこれらのコードを試します:

        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>

今、私はこの呼び出しで msbuild を使用します

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

そして、それはうまくいきます

于 2012-11-16T08:53:28.653 に答える