Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Windows上为Mac编译C#Visual Studio解决方案_C#_Windows_Macos_Compilation - Fatal编程技术网

如何在Windows上为Mac编译C#Visual Studio解决方案

如何在Windows上为Mac编译C#Visual Studio解决方案,c#,windows,macos,compilation,C#,Windows,Macos,Compilation,因此,我有一个在Windows上的解决方案,我想编译它,使其在Mac上工作。在没有Mac电脑的情况下,我如何做到这一点 谢谢您的帮助。据我所知,您只需为.NET core编写代码即可,但编译必须在Mac中完成。我知道您是一名新的贡献者。欢迎光临 我的理解是,iOS或MacOS代码需要构建在Mac上,根据苹果制定的政策,这是不可协商的。下面是一个当前链接,它描述了如何在哪个点自动生成 您甚至可以通过无线进行部署。例如,按照我的设置方式,我在我的Windows机器上构建项目,该机器通过无线方式与我的

因此,我有一个在Windows上的解决方案,我想编译它,使其在Mac上工作。在没有Mac电脑的情况下,我如何做到这一点


谢谢您的帮助。

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

我知道您是一名新的贡献者。欢迎光临

我的理解是,iOS或MacOS代码需要构建在Mac上,根据苹果制定的政策,这是不可协商的。下面是一个当前链接,它描述了如何在哪个点自动生成

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

您的问题的另一个方面是,虽然您的应用程序的逻辑可以通过使用NetCore作为代码隐藏或更好的网络标准而变得可移植,但症结通常是UI代码是非常特定于平台的

Visual Studio 2019社区免费版支持的一种方法是Xamarin移动跨平台开发,但没有对这是好事还是坏事发表意见。(可以与Xamarin.Forms和Xamarin.Essentials nuGet软件包一起包含在您的项目中。)这样,您就可以使用xaml创建一次UI,它可以跨设备工作

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

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

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

简而言之,对于.NET Core 3.1上的
可执行文件
,您需要以下内容

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。
设置位置..

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