.NET Core独立版本将不会在MacOS 10.12上运行

.NET Core独立版本将不会在MacOS 10.12上运行,macos,.net-core,Macos,.net Core,我正在部署一个.NET核心控制台应用程序,作为多个平台的独立版本。我无法运行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、cent

我正在部署一个.NET核心控制台应用程序,作为多个平台的独立版本。我无法运行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 build。我试过瞄准osx.10.10-x64和osx.10.12-x64,但得到了相同的错误。我还尝试在.NETCore1.0.1和1.1.0下构建和发布,同样出现了相同的错误

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

我通过自制在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"
}

这似乎是一个环境问题,创建一个新项目,使用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

测试项目的链接:

在这种情况下是否需要使用docker?独立构建的目的是否与docker提供的类似,即在目标机器上运行的自包含的可移植环境?我同意这似乎是一个环境问题,似乎发布过程没有包括正确的库。如果可能的话,我更愿意修复dotnet构建过程中的核心问题。但如果这不起作用,最好试试docker。谢谢你的帮助!需要明确的是,docker仅用于发布独立应用程序,在此之后,docker不再是必需的。您可以在没有.net或docker的新主机上复制并运行应用程序。我在独立应用程序中也遇到过类似的问题,docker是隔离环境问题的最佳方法。谢谢里卡多,我来试试!