如何强制MSBuild编译为32位模式?

Eri*_*son 31 .net vb.net msbuild 64-bit 32-bit

我正在使用MSBuild(通过NAnt)编译一堆VB.NET程序集.因为这些程序集依赖于COM Interop,所以我需要保证它们在64位OS上以32位模式运行.我可以通过在Visual Studio中更改项目来将可执行程序集编译为32位,但我真的希望能够在构建服务器上强制将所有可执行文件编译为32位模式.

我已经尝试了许多命令行参数到MSBuild没有运气:

  • / P:平台= win32的
  • / P:平台= 86
  • / P:ProcessorArchitecture用于= 86

我究竟做错了什么?是否有一些参考MSBuild在编译VB项目时使用的属性?

Nad*_*zie 47

根据MSDN,你做的是正确的.看起来/p:Platform=x86,但实际上,也许是/p:PlatformTarget=x86.

尝试直接使用该参数调用MSBuild(确保它不是您的NAnt文件的问题.查看正确的构建配置(调试 /发布)的构建输出.

  • 实际上Platform是"解决方案"平台,PlatformTarget是项目平台.您可以在Platform中拥有所需的任何自定义值,但PlatformTarget必须是以下之一:x86,x64,Itanium或anycpu. (8认同)
  • +1 -p:PlatformTarget选项对我有用 (4认同)
  • 它是 /p:Platform=x86,而不是 PlatformTarget(使用 MSBuild 14.0 测试) (2认同)

Jar*_*Par 20

如果程序集本身总是32位,为什么不将设置添加到.vbproj文件?这将使MSBuild脱离等式.

只需将以下行添加到.vbproj文件中的初始PropertyGroup即可

<PlatformTarget>x86</PlatformTarget>
Run Code Online (Sandbox Code Playgroud)


小智 15

为了防止这种情况发生,我使用此命令行构建了我的x86平台目标:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe my.sln /t:build /p:Configuration=Release;Platform=x86
Run Code Online (Sandbox Code Playgroud)