2016-10-18 3 views
7

ASP.NET CORE 1.0에 REST API를 구축하고 있습니다. 프로덕션 환경에서는 JIT를 사용하지 않는 것이 매우 유용 할 것입니다. 왜냐하면 응용 프로그램이있는 고정 컨테이너가 위아래로 확장되고 CI를 반복해서 재배포하기 때문에 배포 된 모든 컨테이너에 대한 JIT 컴파일은 끔찍한 지연을 초래합니다. LB 건강 검진 사망 및 기타 통증.CoreRT/other가있는 .net 코어 응용 프로그램 컴파일 AOT

내가 읽었을 때 dotnet CLI로 기본 컴파일이 중단되었습니다. 나는 행운을 빌면서 CoreRT으로 건물을 만들려고 노력했다.

이 질문은 시작에 대한 몇 가지 질문 대신에있다, 그래서 내가, 샘플 코드 또는 자세한 정보를 제공하고 있지 않다 매우 추상적이기 때문에 :

  1. 내 가정 정확 - AOT 컴파일 해결됩니다 각 경로의 느린 첫 번째 실행 문제는 - 또는 - 어쨌든 다른 해결책이 있습니까?
  2. 사실이라면 현재 .NET Core에서 "기본"응용 프로그램 (우분투 x64 대상)을 빌드 할 수 있습니까?
  3. 그렇다면 가장 좋은 방법은 무엇입니까? 어떻게해야합니까? 누구도 그 경험이 있습니까?

은 (대상 플랫폼은 우분투 14.04-64 고정 표시기 이미지뿐만 아니라 컴파일 플랫폼이 될 것입니다.의 경우는 목적도 OSX에 컴파일하는 것이 좋을 것이다 개발할 수 있습니다.)

미리 감사드립니다.

+0

이 단계에서 가능하면 Microsoft가 아직 발표하지 않는 이유가 궁금합니다. 그래서 제 이해는 시간이 옳지 않다는 것과 큰 문제로 귀찮게해서는 안된다는 것입니다. –

+0

정말 이니? CoreRT 프로젝트는 상당히 유망한 것으로 들립니다. [https://github.com/dotnet/corert/blob/master/Documentation/how-to-build-and-run-ilcom-iler-console-shell-prompt.md] – rudolfdobias

+0

모두가 알고 있습니다. 유망한 제품이며 Microsoft는 작년에 Connect에서도 시연했습니다. 그러나 생산 품질에 도달하기 전에 그대로 두십시오. –

답변

5

현재 전체 네이티브 컴파일이 가능하지 않습니다. 그것은 위에 링크 된 CoreRT 프로젝트의 목표 중 하나입니다. 그러나 어떤 국가에서는 생산을 준비 할 필요가 없습니다. 작년에 Connect의 데모는 꽤 큰 소금 한알과 함께 가져와야합니다. 예를 들어 여전히 그들은 reflection subsystem이 없습니다. 그러나 JIT 시간에 생성해야하는 코드의 양을 크게 줄일 수있는 두 가지 솔루션이 있습니다. .NET 코어의 경우 툴링은 CrossGen이며 요즘 꽤 구워졌습니다.

주목할만한 것은 일반적인 ni 파일과 관련된 전형적인 고통의 큰 부분을 완화하는 NGEN/CrossGen 형식의 진화를 연구하고 있다는 점입니다. 그때 그 이름 아래에 간다 ReadyToRun

희망이 도움이된다. 다른 질문이 있으면 알려주세요.

공개 : 나는 https://github.com/dotnet/coreclr/blob/master/Documentation/building/crossgen.md에서 CrossGen을 사용하기위한 가이드가있다 UWP에 대한 .NET 기본 런타임 및 컴파일러 팀 (등 CoreRT 및 LLILC의 자매 프로젝트)

+0

주목 해주셔서 감사합니다. - 위 질문으로 돌아가서 - 거의 모든 경로의 시작 시간은 10-20 초입니다. 아직 작은 프로젝트입니다. – rudolfdobias

+0

그래서 CrossGen을 사용하려고했습니다. 10 번째 폴더 레벨 어딘가에서 누겟 패키지 캐시를 발견했습니다. 하지만 지금은 그걸위한 문서가 거의 없기 때문에 어떻게 사용하는지 모르겠습니다. 프로젝트에서 실행할 때 'System.Private.CoreLib.dll'이 누락되었다고합니다. 기본 지시 사항을 알려주시겠습니까? 나는 새로운 질문을 열 수있다. – rudolfdobias

+1

당신이 길을 잃지 않도록하기 위해 나는 크로스젠을 소유 한 dev 사람들에게 연락을 취했다. 잘만되면 그들 중의 1 명은 우리를 소트하게 할 수있다. –

3

에서 작동합니다. 조금 오래된 것입니다. 언젠가는 업데이트 할 수 있는지 알게 될 것입니다. CrossGen 사용의 가장 중요한 부분은 명령 줄에서 -Platform_Assemblies_Paths 스위치를 지정하여 CrossGen에 필요한 모든 종속성의 위치를 ​​알려주는 것입니다 (예 : System.Private.CoreLib.dll).

희망이 있습니다. 추가 문제가 발생하면 알려 주시기 바랍니다.