Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
C# 为mac制作一个自包含的可执行文件_C#_.net_.net Core - Fatal编程技术网

C# 为mac制作一个自包含的可执行文件

C# 为mac制作一个自包含的可执行文件,c#,.net,.net-core,C#,.net,.net Core,我在Visual Studio中制作了一个.net核心控制台应用程序。我想现在将其打包为windows和mac的可执行文件 我将运行时部分添加到project.json中 这是我的projects.json,基于我在这里看到的内容: 这将在调试/发布中创建一个名为win10-x64的文件夹,其中包含一个可执行文件,但没有osx文件夹 我是否缺少指向此操作系统的依赖项?答案是从命令行发布它 dotnet publish -r osx.10.10-x64 然后,文件夹/osx.10.10-x64/

我在Visual Studio中制作了一个.net核心控制台应用程序。我想现在将其打包为windows和mac的可执行文件

我将运行时部分添加到project.json中

这是我的projects.json,基于我在这里看到的内容:

这将在调试/发布中创建一个名为
win10-x64
的文件夹,其中包含一个可执行文件,但没有osx文件夹


我是否缺少指向此操作系统的依赖项?

答案是从命令行发布它

dotnet publish -r osx.10.10-x64

然后,文件夹
/osx.10.10-x64/publish/
包含一个可以在安装了SDK的mac上运行的文件。

.NET Core不会直接构建可执行文件。虽然这在路线图中,但我上次检查(1.0.1)时,它还没有这样做。您将在编译时获得一个DLL文件,您可以通过将其传递到dotnet二进制文件来运行该文件。不要让DLL扩展欺骗你,它可以在任何受支持的平台上工作


正如另一个人所说,你应该进行发布,以确保你的所有应用程序文件都复制到发布文件夹中,这样它们就可以打包了,但相同的DLL文件只是复制到那里。我已经在IIS下的Windows和Kestrel下的Red Hat上运行了相同的发布结果。

-r实际上还做不了多少,我认为如果您按照平台或其他配置了它们,它可能会使用一些设置。最终,您将能够使用它将运行时与应用程序捆绑到一个特定平台的二进制文件中,但该功能在1.0中还没有准备好。我刚刚在以前为Windows/Linux发布的项目中使用了您的命令,它重新发布的文件只有PROJECTNAME.deps.json、PROJECTNAME.runtimeconfig.json和web.config,它是在我现有的bin\Debug\netcoreapp1.0\publish中使用的。项目DLL本身没有重新编译。它似乎正在工作。我有一个可以在mac上运行的文件
dotnet publish -r osx.10.10-x64