首页 > 解决方案 > Msbuild 将二进制文件输出到另一个平台

问题描述

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

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

标签: visual-studiomsbuild

解决方案


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

提示 1

如果您想使用解决方案平台 调试/ARM64将所有项目构建ARM64一次,您应该打开构建-->配置管理器

虽然您已将解决方案平台设置为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

实际上x86,vs 中有这样的选项,用于指定在构建项目时要编译的一些项目文件ARM64

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

因此,我建议您可以使用Batch Build来构建项目X86ARM64然后在 Build 期间使用我的CopyFiles目标将这些x86文件复制到ARM64文件夹中。

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

然后,点击Build menu--> Batch Build

在此处输入图像描述

点击Build同时执行它们,在此过程中,目标将被触发。

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

此外,如果您仍然想要 VS 中的这个自动选项,您可以在我们的用户语音论坛上提出功能请求。团队会仔细考虑您的要求并给您满意的答复。


推荐阅读