【问题标题】:Compile child process and copy binaries编译子进程并复制二进制文件
【发布时间】:2018-09-03 14:35:20
【问题描述】:

目前我有一个引用项目 B、C 和 D(均为 32 位)的项目 A(64 位)。我设置Copy Local = True,这样所有项目都被编译,二进制文件被复制到项目A的bin文件夹中。二进制文件B.exeC.exeD.exe都作为@987654326的子进程运行@。然而 Visual Studio 抱怨:

正在构建的项目“AMD64”的处理器架构与参考“项目 B”“x86”的处理器架构不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器架构,以使项目和参考之间的处理器架构保持一致,或者依赖具有与项目的目标处理器架构匹配的处理器架构的参考。

我应该忽略警告吗?或者我应该只发布构建事件来构建和复制其他项目?最好的方法是什么?

【问题讨论】:

    标签: visual-studio msbuild


    【解决方案1】:

    编译子进程并复制二进制文件

    AFAIK,恐怕你不能忽略这个警告。这种不匹配可能会导致运行时失败。就像马里奥说的on this thread

    64 位可执行文件无法调用 32 位 dll,反之亦然。除非你 实际上需要您的应用程序是 64 位的,最简单的选择是 将其设置为目标 x86。这仍然允许它在 32 和 64 位版本的 Windows。

    要解决此警告,您可以为 EXE 项目 A 选择 x86,或者您只需使用构建后事件来构建和复制其他项目。详情请查看this similar thread

    希望这会有所帮助。

    【讨论】:

    • 你指的是一篇关于 DLL 的文章,我不是在谈论 DLL。我说的是由new Process{....}.Start() 发起的实际子进程。而且我不能为项目 A 选择 x86,因为它使用了大约 50 GB 的内存。
    猜你喜欢
    • 2013-01-03
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多