【问题标题】:dotnet publish osx-x64 doesn't generate executabledotnet publish osx-x64 不生成可执行文件
【发布时间】: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


【解决方案1】:

可以在 Windows 上进行捆绑,但您必须在 Mac 上修复权限、签名和公证

以下是有关在 Avalonia 中捆绑的完整文档:https://docs.avaloniaui.net/docs/distribution-publishing/macos

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多