【问题标题】:How do I compile a C# Visual Studio solution on Windows for a Mac如何在 Windows 上为 Mac 编译 C# Visual Studio 解决方案
【发布时间】:2020-09-05 21:42:17
【问题描述】:

所以我想在 Windows 上编译一个解决方案,以便它在 Mac 上运行。在没有 Mac 的情况下如何做到这一点?

感谢您的帮助。

【问题讨论】:

  • 你的解决方案是 .net CORE 吗?
  • 我已经在 .NET CORE 中编译了我的代码,但它输出了一个 .exe 和一些 .dll 和一个 .pdb。这些都可以在mac上运行吗?

标签: c# windows macos compilation


【解决方案1】:

您最好使用 Linux(或 WSL)来运行 dotnet publish(因为您需要调用 chmod 来操作执行权限)。我有a sample PowerShell script here

简而言之,您在 .NET Core 3.1 上的 executable 需要以下内容。

dotnet publish --self-contained -r osx-x64 -c release -o ..\output\darwin_x64 -p:PublishSingleFile=true
Set-Location output
Set-Location darwin_x64
chmod a+x executable
Compress-Archive * -DestinationPath ..\darwin_x64.zip
Set-Location ..

但是,此方法仅针对控制台应用程序。带有用户界面的应用程序需要更多的努力才能移植到 Mac,并且在大多数情况下您需要 Mac。 设置位置..

【讨论】:

    【解决方案2】:

    我看到你是一个新的贡献者。欢迎!

    我的理解是 iOS 或 MacOS 代码需要在 Mac 上构建,并且根据 Apple 制定的政策,这是不可协商的。这是一个当前链接,描述了如何pair your windows machine to a remote mac,此时构建会自动进行。

    您甚至可以通过无线方式进行部署。例如,我的设置方式是在我的 Windows 机器上构建项目,该机器通过无线方式与我的 MacBook Pro 配对,而 MacBook Pro 通过无线方式部署到我的 iPhone。效果很好。

    您的问题的另一个方面是,虽然您的应用程序的逻辑可以通过使用 NET Core 或更好的 NET Standard 来实现可移植性,但问题在于 UI 代码通常是特定于平台的。

    在不表达是好事还是坏事的情况下,Visual Studio 2019 社区免费版支持的一种方法是 Xamarin 移动跨平台开发。 (可以通过 Xamarin.Forms 和 Xamarin.Essentials nuGet 包包含在您的项目中。)这样您就可以使用 xaml 一次性创建跨设备工作的 UI。

    我已经使用 Xamarin 多年,根据我的经验,它在我移植的 Android/iOS/UWP 应用程序中表现良好。我相信 Xamarin for MacOS 现在也上线了,但我还没用过。

    您的问题很好,但范围相当大。我希望这些信息至少能让你开始一个方向!

    【讨论】:

      【解决方案3】:

      据我所知,您可以只为 .NET core 编写代码,但编译必须在 Mac 中完成

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-10
        • 2011-03-24
        • 2018-05-10
        • 2015-11-28
        • 1970-01-01
        相关资源
        最近更新 更多