问题描述
我有一个解决方案,其中包含各种项目,并且需要将某些项目构建为x86 for ARM64。 当我为debug / ARM64构建整个解决方案时,有些二进制文件放入bin \ x86(对于正在构建为x86的项目),而有些二进制文件则放入bin \ ARM64。
MSBUILD中是否有一种方法可以将二进制文件放入bin \ ARM64中,即使它们可以构建为x86二进制文件也可以? 还是我应该让那些构建,然后从bin \ x86复制到bin \ ARM64?
解决方法
我认为您只是使用Debug/ARM64
解决方案平台来构建您的解决方案,但是其他项目是使用其他平台来构建的,导致某些项目是使用x86
来构建的,而另一些项目是使用ARM64
来构建的。 / p>
提示1
如果您想使用解决方案平台 Debug / ARM64 将所有项目一次构建到ARM64
,则应打开 Build -> 配置管理器
尽管已将解决方案平台设置为ARM64
,但是您也可以将 Project Platform 更改为其他版本。最终,构建过程仍然基于项目平台。
您应该将每个项目平台更改为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
中编译的项目文件。
指定在哪个平台上构建项目,然后基于该平台构建项目中的所有文件。
所以我建议您可以使用批处理构建在X86
和ARM64
上都构建项目,然后使用我的CopyFiles
目标复制这些{{在构建过程中将1}}个文件放入x86
文件夹中。
首先,将此目标添加到ARM64
文件中:
然后,单击 Build 菜单-> 批处理
点击构建以同时执行它们,在此过程中,将触发目标。
此外,也许更简单的方法是将文件从xxx.csproj
文件夹手动复制到x86
文件夹。这样可以确保不容易犯错误。
此外,如果您仍然希望在VS中使用此自动选项,则可以在我们的User Voice Forum上提出功能请求。小组将认真考虑您的要求,并给您满意的答复。