2017-03-03 2 views
0

.NET 코어 콘솔 응용 프로그램을 독립 실행 형 빌드로 여러 플랫폼에 배포하고 있습니다. MacOS 버전을 실행하는 데 문제가 있습니다. 실행 파일을 실행할 때 다음 오류가 발생합니다 :.NET 코어 독립 실행 형 빌드가 MacOS 10.12에서 실행되지 않습니다.

"오류 : 종속성 매니페스트에 지정된 어셈블리를 찾을 수 없습니다 - 패키지 : '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" 
} 

답변

0

새로운 프로젝트를 생성하는 고정 표시기를 사용하고뿐만 아니라 당신의 project.json 작업을 복사, 환경 문제가 될 것으로 보인다. 용기의 외부 용기

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

내부

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

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

는이 경우 고정 표시기를 사용할 필요가 있습니까? 독립 실행 형 빌드의 목적이 도커가 제공하는 것, 즉 대상 컴퓨터에서 실행될 수있는 자체 포함 된 휴대용 환경과 유사하지 않습니까? 환경 문제로 보인다는 점에 동의합니다. 게시 프로세스에 올바른 라이브러리가 포함되어 있지 않은 것처럼 보입니다. 가능한 경우 dotnet 빌드 프로세스의 핵심 문제를 수정하는 것을 선호합니다. 그러나 이것이 작동하지 않는다면, 도커를 시도하는 것이 좋습니다. 도와 주셔서 감사합니다! –

+0

독사가 독립형 앱을 게시하는 데만 사용된다는 것을 알기 만하면 도커가 필요하지 않습니다. .net 또는 docker가없는 새 호스트에서 앱을 복사하고 실행할 수 있습니다. 필자는 독립형 응용 프로그램에서 비슷한 문제를 겪었으며 환경 문제를 격리하는 가장 좋은 방법은 도커 (docker)입니다. http://stackoverflow.com/questions/42194718/problems-with-net-core-self-contained-publish –

+0

감사합니다. 리카르도, 한번 시도해 보겠습니다! –