【问题标题】:Is there a way to force msbuild to only build x64?有没有办法强制 msbuild 只构建 x64?
【发布时间】:2021-04-29 20:34:24
【问题描述】:

在我的 C# 解决方案的所有组件项目中,“平台目标”在 Project>Properties>Build 中设置为 x64。但是,平台属性仍然是“活动(任何 CPU”),这是唯一的选项。在构建日志中,我可以看到它正在复制某些 nuget 包的 x64 和 x86 版本。两个问题:

  • 如果我指定了为什么是 x64,为什么它仍然在复制 x86 包?
  • 有没有办法消除“任何 CPU”作为平台选项而只构建 x64?

【问题讨论】:

    标签: visual-studio msbuild csproj


    【解决方案1】:

    Project>Properties>Build 下的 平台目标 不是您构建过程的正确选择。该选项是告诉项目程序集是为哪个平台编译的,而不是你的 nuget 包。因此,该选项无法更改构建平台,您的 nuget 包仍然使用构建平台来判断将哪个版本的 dll 复制到主项目输出文件夹中。

    更多信息可以参考this document

    建议

    您可以在Build

    下使用Configuration Manager

    您应该找到您的项目,然后选择x64 来构建您的项目平台。如果你没有x64,你必须点击New来创建它。

    更新 1

    您的构建配置一团糟。所以请先进入每个项目Properties-->Build-->将Platform target改为Any CPU进行恢复操作。

    然后,进入您的配置管理器,如果您在Active Solution PlatformProject Platform下删除所有x64x86平台有。然后,点击Active Solution Platform,然后创建一个新的x64平台。

    这将为每个项目设置统一的平台设置。

    您可以参考this similar issue

    【讨论】:

    • 去过那里。主动解决方案平台是 x64。但是每个项目都被列为“任何 CPU”。当我单击下拉菜单时,x64 不是一个选项。当我单击新建并尝试添加 x64 时,我收到此错误:“无法创建此平台,因为已存在同名的解决方案平台”。每个平台在 csproj 文件中的 属性也设置为 x64。此外,我们从不希望它构建 x86。我们正在部署到 Azure,所有主机都是 64 位的,因此不需要任何 CPU。
    • 您的构建配置一团糟。所以请先进入每个项目的Properties-->Build-->将Platform target改为Any CPU进行恢复操作。然后,输入您的Configuration Manager,删除Active Solution PlatformProject Platform 下的任何x64x86 平台(如果有)。然后,单击Active Solution Platform,然后创建一个新的x64 平台。这将为每个项目设置统一的平台设置。
    • 我已经更新了我的答案,你可以查看一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2021-08-07
    • 2014-01-02
    相关资源
    最近更新 更多