使用msbuild.exe构建C#项目';是否覆盖项目目标平台配置?

使用msbuild.exe构建C#项目';是否覆盖项目目标平台配置?,c#,msbuild,x86,64-bit,platform,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,而不是anyCPU类型 我在这个项目中尝试了以下代码: PortableExecut

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

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

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

我认为,msbuild.exe应该覆盖解决方案配置,并且输出应该是x86 exe,而不是anyCPU类型

我在这个项目中尝试了以下代码:

        PortableExecutableKinds peKind;
        ImageFileMachine machine;

        Assembly.GetExecutingAssembly().ManifestModule.GetPEKind(out peKind, out machine);
测试结果表明,exe是AnyCPU模式(ILOnly),而不是预期的。 在这种情况下,我如何通过x86或x64、通过代码了解我的程序it编译器

谢谢。
Li

我不希望生成.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>

这也行得通

我不喜欢构建.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>

这就行了

谢谢Schlaviener。我只是更新我的帖子。我无法修改构建脚本,因为这超出了我的权限。因此,我的问题缩小到如何通过代码获取x86/x64信息?测试后,如果我使用/p:Platform=x86或/p:Platform=x64编译,则dll实际上是不同的(我尝试在x64编译程序中动态加载x86.net dll,会发生错误),而不考虑peKind=ILOnly。检查
IntPtr.Size
,对于x86/x64进程,这应该是不同的。感谢Schlaviener。我只是更新我的帖子。我无法修改构建脚本,因为这超出了我的权限。因此,我的问题缩小到如何通过代码获取x86/x64信息?测试后,如果我使用/p:Platform=x86或/p:Platform=x64编译编译器,则dll实际上是不同的(我尝试在x64编译程序中动态加载x86.net dll,会发生错误),而不考虑peKind=ILOnly。检查
IntPtr.Size
,对于x86/x64进程,这应该是不同的。