如何强制的MSBuild编译为32位模式?(How do I force MSBuild to co

2019-06-24 19:24发布

我使用的MSBuild(通过恶性 )编译一堆VB.NET组件。 因为这些组件依赖COM互操作,我需要保证他们在32位模式下在64位操作系统的运行。 我能得到可执行组件通过改变在Visual Studio项目编译为32位,但我真的希望能够迫使所有的可执行文件进行编译生成服务器上的32位模式。

我已经尝试了一些命令行参数的MSBuild没有运气:

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

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

Answer 1:

如果组件本身总是会为32位,为什么不添加设置到.vbproj文件? 这将需要的MSBuild的方程。

只是下面的行添加到最初的PropertyGroup在.vbproj文件

<PlatformTarget>x86</PlatformTarget>


Answer 2:

根据MSDN ,你正在做正确的事情。 貌似/p:Platform=x86 ,但实际上,也许是/p:PlatformTarget=x86

尝试只与参数(确保这不是你的恶性文件中的问题调用的MSBuild直接,看看编译输出为正确生成配置( 调试 / 发布 )。



Answer 3:

万一这会有所帮助,我用这个命令行来建立我的x86平台的目标:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe my.sln /t:build /p:Configuration=Release;Platform=x86


Answer 4:

在解决方案资源管理器中,右键单击根节点- > 配置管理器 。 您需要定义一个解决方案范围的配置,指示内打造32位的每个项目。 (注:你可能已经有一个,如果你曾经设置过至少一个项目,建立32位。)对于一步一步的演练,请参阅MSDN博客文章的解决方案配置

然后,您可以指定你想要的“平台”和“味” 团队建设 .proj / .targets文件。 例如:

<ConfigurationToBuild Include="Release|x86">
    <FlavorToBuild>Release</FlavorToBuild>
    <PlatformToBuild>x86</PlatformToBuild>
</ConfigurationToBuild>

您可以指定这些财产部分的多于一个有内置的几种组合。 我会复制/粘贴“释放| 86”字符串(或不管它看起来像),直接从您.sln文件,以确保它完全匹配-你不能从Solution Explorer中直接得到它。

关于你的评论:

MSBuild的财产评估是非常复杂的,因为它混合声明和必要的风格。 请参阅博客文章的MSBuild资产评估的详细信息。 我不喜欢依靠其微妙之处。

这是真的,在命令行上指定的属性应该还有压倒一切,但团队建设具有另一层复杂性。 该ComputeConfigurationList任务是通过递归的MSBuild invokation一再呼吁,而不是作为一个普通的任务 。 它拉这一关的方式是采取普通的性质等PlatformToBuild和在一组全局属性的称为包他们ConfigurationToBuild.PlatformToBuild (等),其在运行中产生的,一旦为每个配置。 这使得团队构建引擎更加灵活的内部,但它也使黑客你想更难的命令行的行为。

你可以尝试设置ConfigurationToBuild.PlatformToBuild直接在命令行上-它可能工作,我不知道。 但它肯定会阻止你在一个单一的构建定义不断建立一个以上的配置。 出于这个原因,我与我的建议上面贴。



Answer 5:

经历了完全相同的问题,我使用的MSBuild的版本在交换C:\WINDOWS\Microsoft.NET\Framework64 ...的版本,在C:\WINDOWS\Microsoft.NET\Framework (无64 )和东西编译正好。



Answer 6:

对于MSBuild的版本15是/ P:PlatformTarget = 86



Answer 7:

在南特的MSBuild任务这个问题的答案:

<msbuild project="your.sln">
    <property name="PlatformTarget" value="x86" />
</msbuild>


Answer 8:

我用它来寻找合适的物业更实际的方法是通过打开.csproj的项目文件(在C#的情况下)中的一个,看到受影响的属性,当你从视觉选择“64” /“AnyCPU” /“86” STDIO。 即改变无论属性,你需要设置的命令行。 与Visual Studio 2015年它似乎是<纲要>。 所以,你可以调用的MSBuild用参数/ P:平台= x64和它应该工作。



文章来源: How do I force MSBuild to compile for 32-bit mode?