【问题标题】:.NET Core Standalone build will not run on MacOS 10.12.NET Core Standalone 版本无法在 MacOS 10.12 上运行
【发布时间】:2017-03-03 17:40:53
【问题描述】:

我正在将 .NET Core 控制台应用程序作为独立版本部署到多个平台。我无法运行 macOS 版本。当我运行可执行文件时,我收到以下错误:

"错误:未找到依赖项清单中指定的程序集 -- 包:'runtime.osx.10.10-x64.runtime.native.System',版本:'4.3.0',路径:'runtimes/osx. 10.10-x64/native/System.Native.a'"

我已经构建并部署了应用程序到win7-x86、win7-x64、win10-x86、win10-x64、centos.7-x64,都没有任何问题。

我正在尝试在运行 macOS 10.12 (Sierra) 的 Mac mini 上运行 mac 构建。我尝试针对 osx.10.10-x64 和 osx.10.12-x64 并得到相同的错误。我也尝试在 .NET Core 1.0.1 和 1.1.0 下构建和发布,再次出现同样的错误。

我在 Windows 10 系统上构建,在每种情况下都创建独立构建。当我在 Mac 上安装 .NET Core 框架(并将应用程序构建为框架版本)时,我的应用程序确实可以正常运行,但我需要运行独立版本。

我已经通过 Homebrew 在 Mac 上安装了 OpenSSL,这是我知道的唯一外部依赖项。我的 project.json 文件在下面。

任何帮助将不胜感激!

{
  "version": "1.1.0-*",
  "buildOptions": {
    "emitEntryPoint": true
  },

  "dependencies": {
    "Microsoft.NETCore.App": "1.1.0",
    "Newtonsoft.Json": "9.0.1",
    "System.Xml.XmlSerializer": "4.3.0"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "imports": "dnxcore50"
    }
  },

  "runtimes": {
    "centos.7-x64": {},
    "win10-x64": {},
    "win10-x86": {},
    "win7-x64": {},
    "win7-x86": {},
    "osx.10.10-x64": {},
    "osx.10.12-x64": {}
  },

  "description": "XXX gameplay instance server.",
  "title": "XXX"
}

【问题讨论】:

    标签: macos .net-core


    【解决方案1】:

    好像是环境问题,新建一个项目,使用docker,复制你project.json的工作也一样。

    docker run -v <your app folder>:/app -it --rm  microsoft/dotnet:1.1.0-sdk-projectjson
    

    容器内

    cd /app
    dotnet restore
    dotnet publish -c Release -r osx.10.12-x64
    exit
    

    容器外

    chmod +x bin/Release/netcoreapp1.1/osx.10.12-x64/publish/app
    ./bin/Release/netcoreapp1.1/osx.10.12-x64/publish/app
    

    测试项目链接:https://drive.google.com/open?id=0B9E5H1HYtm8DSFJMSG1CZDNyTGc

    【讨论】:

    • 这种情况下是否需要使用docker?独立构建的目的不是类似于 docker 提供的,即在目标机器上运行的自包含可移植环境吗?我同意这似乎是一个环境问题,似乎发布过程不包括正确的库。如果可能的话,我更愿意解决 dotnet 构建过程中的核心问题。但如果这不起作用,那么尝试 docker 是个好主意。感谢您的帮助!
    • 需要明确一点,docker仅用于发布独立应用程序,此后,docker就没有必要了。您可以在没有 .net 或 docker 的新主机中复制和运行该应用程序。我在独立应用程序中遇到过类似的问题,而 docker 是隔离环境问题的最佳方法。 stackoverflow.com/questions/42194718/…
    • 谢谢里卡多,我试试看!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2016-10-14
    • 2016-11-02
    • 2021-12-29
    • 2019-10-27
    相关资源
    最近更新 更多