2016-10-24 5 views
6

먼저 Linux 초보자이므로 용서해주십시오.Ubuntu에서 자체 ASP .NET 코어 응용 프로그램 실행

저는 Ubuntu를 타겟으로하는 독립형 응용 프로그램으로 ASP .NET 핵심 응용 프로그램을 게시했습니다. 게시가 제대로 작동하는 것 같습니다. 꽤 바닐라 우분투 컴퓨터에 파일을 복사했습니다. 이제 응용 프로그램을 어떻게 실행합니까? 내 이해는 자체 포함 된 .NET 핵심 응용 프로그램이므로 .NET Core를 다운로드하여 설치할 필요가 없습니다. 내 응용 프로그램은 필요한 모든 것을 포함해야합니다.

모든 자습서는 $ dotnet을 실행해야한다고 말합니다. 그러나 "dotnet"명령 줄은 존재하지 않습니다 (자체 포함 된 폴더에 게시해야합니까?). 그래서 호출하면 "command not found"가 나타납니다. 물론 .NET 코어를 다운로드 할 수는 있지만 전체 자체 개념에 위배되지는 않습니까? 다음은 내가 복사하는 파일의 샘플입니다.

enter image description here

+0

저는 dotnet 개발자가 아니기 때문에 아이디어가 없습니다.하지만 우분투에서 dotnet cli를 먼저 설치해야 할 수도 있습니다. 이게 뭔가 필요한거야? https://github.com/dotnet/cli –

+0

"자체 포함"방식으로 애플리케이션을 게시하는 주요 요점 중 하나가 다른 것을 다운로드 할 필요가 없다는 점을 제외하고 귀하의 평가에 동의합니다. dotnet cli는 예외가 될 수도 있지만 그렇게 생각하지는 않습니다. – Mark

+0

나는 그들이 실행하지 않는 도커 서비스없이 "자체 포함 된"도커 컨테이너를 많이 사용합니다. –

답변

8

지금 답변

, 어떻게 내 응용 프로그램을 실행합니까

? 내 이해는 자체 포함 된 .NET 핵심 응용 프로그램이므로 .NET Core를 다운로드하여 설치할 필요가 없습니다. 내 응용 프로그램은 필요한 모든 것을 포함해야합니다.

정확합니다. 실행 파일을 실행하십시오.

독립형 응용 프로그램을 만들 때 제작 출력에는 "응용 프로그램을 시작하는 데 필요한 전체 파일 집합 (응용 프로그램 파일과 모든 .NET Core 파일)이 포함됩니다." 여기에는 실행 파일이 포함됩니다.

예 여기

간단한 독립형 애플리케이션 dotnet publish -c release -r ubuntu.14.04-x64의 출력 자체는 배포 - 함유 하였다. 게시 디렉토리를 Ubuntu에 복사하고 실행 파일을 실행하십시오.

C : \ MyApp를 \ 빈 \ 릴리스 \ netcoreapp1.0 \ ubuntu.14.04-64 \는 \

... 

libsos.so 
libsosplugin.so 
libuv.so 
Microsoft.CodeAnalysis.CSharp.dll 
Microsoft.CodeAnalysis.dll 
Microsoft.CodeAnalysis.VisualBasic.dll 
Microsoft.CSharp.dll 
Microsoft.VisualBasic.dll 
Microsoft.Win32.Primitives.dll 
Microsoft.Win32.Registry.dll 
mscorlib.dll 
mscorlib.ni.dll 
MyApp      <------- On Ubuntu, run this executable 
MyApp.deps.json      and you will see Hello World! 
MyApp.dll 
MyApp.pdb 
MyApp.runtimeconfig.json 
sosdocsunix.txt 
System.AppContext.dll 
System.Buffers.dll 
System.Collections.Concurrent.dll 
System.Collections.dll 

... 

C로 배포합니다 : \ MyApp를 \

{ 
    "buildOptions": { 
    "debugType": "portable", 
    "emitEntryPoint": true 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "dependencies": { 
     "Microsoft.NETCore.App": "1.0.1" 
     } 
    } 
    }, 
    "runtimes": { 
    "ubuntu.14.04-x64" : {}, 
    "win10-x64" : {} 
    } 
} 

C project.json : \ MyApp를 \ Program.cs는

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     System.Console.WriteLine("Hello World!"); 
    } 
} 

또한

보기 This document은 프레임 워크 종속 및 자체 포함 배포를 구분합니다.

1

그것 .netstandard2의 +와 함께, 필요한 단계가 있음을 주목할 필요가 :

  • 편집이.

< PropertyGroup>

<OutputType>Exe</OutputType> 
<TargetFramework>netcoreapp2.0</TargetFramework> 

<!-- Add this with the required runtimes --> 
<RuntimeIdentifiers>win10-x64;osx.10.11-x64;ubuntu.16.10-x64</RuntimeIdentifiers> 

</PropertyGroup>

  • 복원 및 응용 프로그램을 구축 : csproj 파일과 대상 런타임의 목록이있는 줄을 추가 dotnet restore && dotnet build -c release -r RUNTIME

여기서 RUNTIME은 csproj 파일에 나열된 런타임 중 하나입니다.

.csproj 파일 편집 및 호출 dotnet 복원 없이는이 작업을 수행 할 수 없으며 런타임에 nuget에서 런타임이 다운로드되지 않으며 -r ... 플래그가 작동하지 않습니다.

관련 문제