.NET Core Standalone构建将无法在MacOS上运行10.12

问题描述:

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

“错误:找不到依赖项清单中指定的程序集 - package:'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,全部没有任何问题。

我正试图运行Mac mini上运行macOS 10.12(塞拉利昂)的Mac构建。我试过针对osx.10.10-x64和osx.10.12-x64,并得到相同的错误。我也尝试在.NET Core 1.0.1和1.1.0下构建和发布,并且发生同样的错误。

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

我已经在Mac上通过Homebrew安装了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" 
} 

这似乎是一个环境问题,创建新项目,使用的码头工人,并复制你的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

+0

是否需要使用码头工人在这种情况下?是不是类似于docker提供的独立构建的目的,即在目标机器上运行的自包含的可移植环境? 我同意它似乎是一个环境问题,似乎发布过程不包括正确的库。如果可能的话,我宁愿修复dotnet构建过程中的核心问题。但如果这不起作用,尝试码头工人是个好主意。谢谢您的帮助! –

+0

要明确,码头只用于发布独立的应用程序,在此之后,码头是没有必要的。您可以在没有.net或docker的新主机中复制和运行应用程序。我遇到了与独立应用程序类似的问题,Docker是隔离环境问题的最佳方式。 http://stackoverflow.com/questions/42194718/problems-with-net-core-self-contained-publish –

+0

谢谢里卡多,我会试一试! –