【发布时间】:2022-01-25 08:47:54
【问题描述】:
我有一个尝试为 mac 构建的 Avalonia 项目。但是当我使用 dotnet publish 为 osx 生成构建时,没有生成可执行文件。它会生成一个与程序同名的 .dll 文件(应与可执行文件同名),以及一个没有扩展名的同名文件。为此,我使用
dotnet publish "VisualStudio solution path" -c Release -f netcoreapp3.1 -r osx-x64 -p:UseAppHost=True --self-contained true -o "outputPath"
根据我阅读的here,我还在我的项目属性中添加了 UseAppHost True。它们看起来像这样:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RuntimeIdentifiers>win7-x64;osx-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
<Nullable>enable</Nullable>
<LangVersion>preview</LangVersion>
<UseAppHost>True</UseAppHost>
</PropertyGroup>
我不知道如何让 dotnet publish 为 mac 生成一个实际的可执行文件。有谁知道我做错了什么以及我需要做什么?谢谢。
编辑:我在 Windows 10 上执行此操作。
【问题讨论】:
-
花点时间学习 macOS,你就会明白为什么最好在 macOS 或 Linux 上发布,没有扩展名的文件就是可执行文件。
-
但是我该如何运行它呢?我右键单击它并点击打开,它只是打开了一个文本编辑器。我尝试了 dotnet "filename",它告诉我它没有签名并且不会让我运行它。我在 Avalonia 上阅读的帖子建议我可能必须对其进行 chmod +x 才能运行它,但并没有表明它根本不是可运行的文件类型。
-
如何运行?终端上的
./exectuable_name是启动此类 .NET Core 应用程序的通用方式。如果您希望能够从 Finder 中打开它,您应该学习如何将其打包为.app文件(实际上是结构良好的文件文件夹)。有像github.com/icsharpcode/AvaloniaILSpy 这样的例子可以帮助你入门。 -
好的,谢谢。是的,在 mac 上构建绝对是要走的路。它按预期生成了一个可执行文件。是的,关于应用程序包的好建议,这就是我想要的。
标签: .net macos .net-core cross-platform avalonia