我有一个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来编译我的程序感谢。 李
答案 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
这有效