【问题标题】:Msbuild Output binaries into another platformMsbuild 将二进制文件输出到另一个平台
【发布时间】:2020-08-14 17:01:34
【问题描述】:

我有一个包含各种项目的解决方案,其中一些需要构建为 ARM64 的 x86。 当我为调试/ARM64 构建整个解决方案时,一些二进制文件进入 bin\x86(对于正在构建为 x86 的项目),一些二进制文件进入 bin\ARM64。

MSBUILD 中是否有办法将二进制文件放入 bin\ARM64 中,即使它们可以构建为 x86 二进制文件? 或者我应该让那些构建然后从 bin\x86 复制到 bin\ARM64?

【问题讨论】:

  • 嗨 koko_lad,关于这个问题的任何更新?如果我的回答可以帮助您处理和理解这个问题,您可以考虑accepting this answer。如果没有,请随时告诉我们:)我们很乐意为您提供进一步的帮助。

标签: visual-studio msbuild


【解决方案1】:

我认为您只是使用Debug/ARM64 解决方案平台来构建您的解决方案,但其他项目是使用其他平台构建的,导致一些项目使用x86 构建,而另一些项目使用ARM64

提示 1

如果你想使用Solution Platform Debug/ARM64将所有项目构建到ARM64一次,你应该打开Build-- > 配置管理器

虽然您已将解决方案平台设置为ARM64,但您也可以将项目平台更改为其他。最终,构建过程仍然基于项目平台。

您应该将每个项目平台更改为ARM64,然后在构建解决方案时,它会将每个项目构建到ARM64输出文件夹。

提示 2

只是猜测,如果猜测错误,忽略它

=============================

如果您构建您的项目之一,一些文件位于项目文件夹的 bin\ARM64 中,而其他二进制文件位于项目文件夹的 bin\x86 中。

如果是这样,您应该为每个此类项目执行复制任务

<Target Name="CopyFiles" BeforeTargets="Build">

        <ItemGroup>
            <Files Include="bin\x86\Debug\xxx.xxx // Any binary files"></Files>
        </ItemGroup>
        <Copy SourceFiles="@(Files)"
         DestinationFolder="bin\ARM64\Debug"></Copy>
        
</Target>

将此目标添加到此类项目的任何xxx.csproj 文件中。

===========================================

更新 1

其实,在用ARM64构建项目时,vs中有这样一个选项,可以在x86中指定一些需要编译的项目文件。

指定在哪个平台上构建项目,然后基于该平台构建项目中的所有文件。

所以我建议您可以使用 Batch BuildX86ARM64 上构建项目,然后使用我的CopyFiles 目标将这些x86 文件复制到ARM64构建期间的文件夹。

首先,将此目标添加到xxx.csproj文件中:

然后,点击Build菜单-->Batch Build

点击Build同时执行,在执行过程中,目标会被触发。

此外,也许更简单的方法是将文件从x86 文件夹手动复制到ARM64 文件夹。这样可以确保不容易犯错误。

另外,如果您仍然想要 VS 中的这个自动选项,您可以在我们的User Voice Forum 上提出功能请求。团队会认真考虑您的要求,给您满意的答复。

【讨论】:

  • 我基本上是在尝试构建一个特定的项目来为 ARM64 生成 x86 二进制文件。为了做到这一点,我使用配置管理器进行了更改,最终将项目更改为 bin\x86 中的 x86,其余的位于 bin\ARM64 中。如果我按照您在提示 1 中提到的那样进行更改,是否有另一种方法可以做我想做的事情(为 ARM64 配置构建 x86 二进制文件)?
  • 我认为你无法在 VS 中得到你想要的。我已经更新了我的答案,你可以在那里查看建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
相关资源
最近更新 更多