【问题标题】:Cross-compilation with Visual Studio 2019与 Visual Studio 2019 交叉编译
【发布时间】:2019-10-19 00:53:46
【问题描述】:

我在 Windows 10 下使用 VS2019,并试图弄清楚如何为非 Windows 平台进行编译。我知道只有某些语言支持交叉编译(C# 就是其中之一)。所以我决定从微软自己的一个例子开始(.NET Core 的控制台应用程序)。当要求 VS2019 创建 Console 项目时,它向我显示了各种图像图标,表明它可以为 Windows、Linux 和 macOS 构建 - 但无论我做什么,我只能让它构建 Windows 目标。

经过一番研究,我意识到我需要将此行添加到我的 C# 项目文件中:-

<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers>

但即使在添加该行(并重新加载/重新构建项目)之后,它也坚决拒绝构建除 Windows 目标之外的任何内容。在 CodeGuru 上,其中一位开发人员为我尝试了它(在 VS2017 下)并设法让它工作 - 但我已经在 VS2019 和 VS2015 中尝试过它,但我无法让它在其中任何一个中工作。有什么想法我可能做错了吗?

[编辑...] 感谢磁控管 - 如果我按 Build->Publish 我会看到一个与您所看到的完全不同的对话框(在 VS2015 和 VS2019 中都是相同的):-

即使我按 下一步完成 按钮,我也永远不会看到“创建个人资料”选项 :(

【问题讨论】:

    标签: c# cross-platform


    【解决方案1】:

    转到构建>发布,选择文件夹并单击创建配置文件

    然后单击编辑并将Deployment Mode 更改为Self-contained。最后,您可以在Target Runtime中指定目标操作系统

    您可以为每个操作系统创建多个配置文件,并根据需要单独发布每个配置文件。

    编辑:

    发布的发布对话框适用于 .Net Framework Console 应用程序,而不是 .Net Core 应用程序。 .Net 框架仅适用于 Windows,您必须将项目创建为 .Net Core

    【讨论】:

    • 感谢磁控管 - 有几件事......首先,如果(在 VS2019 中)我选择了这个项目并打开它的属性窗口,目标框架属性显示为“.NET Core 3.0”。其次,我可以问一下你是否在 VS2019 中进行测试吗? (有人告诉我,它在 VS2017 中运行良好)。
    • @johne53 是的,我在 Windows 上使用 VS2019。你用的是哪个版本(我用的是16.3.4)?
    • 我的也一样 (16.3.4)。这里(英国时间)已经很晚了,所以明天我可能会卸载它并重新安装。顺便说一句 - Stack Overflow 没有通知我你的回复,但我在我的设置中找不到任何可以改变它的东西?!?
    • @johne53 你说的是站内通知还是邮件通知?
    • 电子邮件。
    【解决方案2】:

    哇哦!!我刚刚运行了 VS2019 安装程序来提醒自己如何卸载(为明天做准备),它告诉我已经有 16.3.5 可用。 16.3.4 仅在几个小时前安装,但为了它,我想我不妨试试新版本 - 现在它正在工作!!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-09
      • 2019-07-06
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多