visual-studio - Msbuild 将二进制文件输出到另一个平台
问题描述
我有一个包含各种项目的解决方案,其中一些需要为 ARM64 构建为 x86。当我为调试/ARM64 构建整个解决方案时,一些二进制文件进入 bin\x86(对于正在构建为 x86 的项目),一些二进制文件进入 bin\ARM64。
MSBUILD 中有没有办法将二进制文件放入 bin\ARM64 中,即使它们可以构建为 x86 二进制文件?或者我应该让那些构建然后从 bin\x86 复制到 bin\ARM64?
解决方案
我认为您只是使用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来构建项目X86
,ARM64
然后在 Build 期间使用我的CopyFiles
目标将这些x86
文件复制到ARM64
文件夹中。
首先,将此目标添加到xxx.csproj
文件中:
然后,点击Build menu--> Batch Build
点击Build同时执行它们,在此过程中,目标将被触发。
此外x86
,也许更简单的方法是将文件从文件夹手动复制到文件ARM64
夹中。这确保了不容易犯错误。
此外,如果您仍然想要 VS 中的这个自动选项,您可以在我们的用户语音论坛上提出功能请求。团队会仔细考虑您的要求并给您满意的答复。
推荐阅读
- java - 如何在 for 循环内的数组值中进行 +5(或任何 +number)跳转?
- javascript - 传递给子组件
- masstransit - 事件的单一消费者
- apache-spark - 如何拆分一列并将其他列保留在pyspark数据框中?
- python - 这是在python中运行2个无限循环的正确方法吗?
- latex - 如何仅为 LaTeX 中的一行更改表格中的分隔符?
- mql4 - 当 EA 应该阻止这种情况时偶尔打开交易
- php - 如何拆分用逗号分隔的字符串。PHP
- java - 安装spring boot后Intellij“无法解析符号”
- sql - 查看 - 当两个表具有相同的列名时,选择两个表的所有字段