如何有条件地包含MASM .asm文件,具体取决于平台/配置(32/64位)

时间:2014-02-01 23:10:49

标签: visual-studio-2010 masm

我正在使用Visual Studio 2010.我有两个不同的MASM程序集文件,一个用于32位构建,一个用于64位。我.vcxproj的相关部分如下所示:

  <ItemGroup>
    <MASM Include="asmcode32.asm" Condition="'$(Platform)'=='Win32'" />
    <MASM Include="asmcode64.asm" Condition="'$(Platform)'=='x64'" />
  </ItemGroup>

我的问题是:解决方案资源管理器中显示的唯一文件是用于打开Visual Studio时选择的任何配置(<{1}} / Win32 的文件。即使卸载和重新加载项目也是不够的 - 我必须关闭并重新打开visual studio以显示另一个文件。

我希望无论选择哪种配置,都会一直显示这两个文件。根据选择的解决方案,我可以接受可见项目的更改。


示例:

在选中x64配置的情况下打开Visual Studio。仅显示x64

asmcode64.asm is shown

当我更改为asmcode64.asm配置时(通过“解决方案平台”下拉菜单),Win32仍然不可见。同样,即使卸载+重新加载也不会使其可见。

仍然选择了asmcode32.asm,我可以关闭Visual Studio并重新打开它。只有现在 Win32可见:

enter image description here


我可以使用asmcode32.asm文件显示这两个文件吗?

.vcxproj添加到Condition=项目可能不是正确的解决方案。如果确实如此,我如何配置项目按照我的意图进行编译?

这仅适用于MASM .asm文件。 C / C ++文件的等效操作是文件属性中的use the "Excluded From Build" option(MASM文件不存在此选项):

"Excluded From Build" option in C file property pages

1 个答案:

答案 0 :(得分:0)

你是 1 做错了。

Conditional=解决方案有效,但使用它会导致您 1 看到的行为。 Visual Studio似乎只评估哪些文件将在解决方案资源管理器中显示一次。基本上这使得Visual Studio认为该文件甚至不是项目的一部分。

真正的解决方案是使用C文件使用的相同<ExcludedFromBuild>标记(当您在文件的属性页中选择“从构建中排除”选项时添加这些标记。< / p>

  <ItemGroup>
    <!-- This causes the items to not be shown in Solution Explorer -->
    <!--
    <MASM Include="asmcode32.asm" Condition="'$(Platform)'=='Win32'" />
    <MASM Include="asmcode64.asm" Condition="'$(Platform)'=='x64'" />
    -->

    <!-- This is the right solution. -->
    <MASM Include="asmcode32.asm">
      <ExcludedFromBuild Condition="'$(Platform)'=='x64'">true</ExcludedFromBuild>
    </MASM>
    <MASM Include="asmcode64.asm">
      <ExcludedFromBuild Condition="'$(Platform)'=='Win32'">true</ExcludedFromBuild>
    </MASM>
  </ItemGroup>

遗憾的是,此选项不会通过GUI公开,就像C文件一样。

1 - “我是”