2016-10-18 5 views
7

ASP.NET CORE 1.0でREST APIを構築しています。プロダクションでは、JITを使用しないことが非常に便利です。アプリケーションを持つドッカーコンテナが上下に拡大縮小されているため、CI展開中に何度も再配置されるため、展開されたすべてのコンテナのジャストインタイムコンパイルでは、健康チェックの死や他の痛み。CoreRT/otherを使用した.netコアアプリケーションのコンパイルAOT

私が読んだところでは、dotnet CLIによるネイティブコンパイルは中止されました。 私はCoreRTでビルドしようとしましたが、運がありません(複雑さのために詳細が必要です)。

この質問は非常に抽象的であるので、スタートのためにいくつかの質問が代わりにありますので、私は、サンプルコードや詳細な情報を提供していないよ:

  1. は正しい私の推測です - 事前コンパイラが解決しますとにかく他の解決策はありませんか?
  2. 実際には、.NETコアから "ネイティブ"アプリ(ubuntu x64ターゲット)をビルドすることは現在可能ですか?
  3. あれば、どうすればよいのですか?誰もそれを経験していますか?

(ターゲットプラットフォームは、Ubuntuの-14.04-x64のドッキングウィンドウの画像だけでなく、コンパイルのプラットフォームになります。のために目的はOSX上でそれをコンパイルするためにもいいだろう開発しています。)

事前にありがとうございます。

+0

この段階でこれが可能であれば、私はMicrosoftがまだそれを発表しない理由を知ります。だから、私の理解は、時間が正しくないということです。そして、あなたはそのような大きな話題で自分を悩ますべきではありません。 –

+0

本当ですか? CoreRTプロジェクトは非常に有望です[https://github.com/dotnet/corert/blob/master/Documentation/how-to-build-and-run-ilcompiler-in-console-shell-prompt.md] – rudolfdobias

+0

誰もが知っていますそれは有望であり、マイクロソフトは昨年もConnectでそれをデモしました。しかし、それが生産品質に達する前に、そのままにしておきます。 –

答えて

5

現在のところ完全ネイティブのコンパイルはできません。上にリンクされたCoreRTプロジェクトの目標の1つですが、私は生産を準備しているとは言いません。昨年のコネクトでのデモは、かなり大きな塩を使って撮影する必要があります。たとえば、彼らはまだreflection subsystemを持っていません。しかし、私たちは、JIT時に生成される必要のあるコードの量を大幅に減らすことができる2つのソリューションを提供しています。 .NET Coreの場合、このツールはCrossGenと呼ばれています。

私が注目している間に、典型的なniファイルに伴う典型的な痛みの大部分を緩和するNGEN/CrossGen形式の進化に取り組んでいることにも言及します。それは当時の名前になりますReadyToRun

希望に役立ちます。他に質問がある場合はお知らせください。

開示:私はUWPのために、.NETネイティブランタイムとコンパイラチームに取り組む(CoreRTとLLILCなどの姉妹プロジェクト)

+0

注目をいただき、ありがとうございます。 - 上記の質問に戻る - ほとんどすべてのパスの起動時間は10-20秒です。それはまだ小さなプロジェクトです。 – rudolfdobias

+0

私はCrossGenを使ってみました。それは10番目のフォルダレベルのnugetパッケージキャッシュのどこかに見つかりました。しかし、今私はそれのためのほとんどのドキュメントがないので、私はそれを使用する方法がわからないことを実現します。私がプロジェクトでそれを実行すると、 'System.Private.CoreLib.dll'が見つからないことがわかります。基本的な指示をお願いしますか?私は新しい質問を開くことができます。 – rudolfdobias

+1

あなたが迷ってしまうのを防ぐため、私はクロスジェンを所有している開発者に連絡しました。うまくいけば、彼らのうちの1人が私たちを選別することができます。 –

3

https://github.com/dotnet/coreclr/blob/master/Documentation/building/crossgen.mdでCrossGenを使用するためのガイドがあります。ちょっと古いです。いつか更新できるかどうかを確認します。 CrossGenを使用する上で最も重要な部分は、コマンドラインで-Platform_Assemblies_Pathsスイッチを指定して、必要なすべての依存関係(たとえば、System.Private.CoreLib.dll)の場所をCrossGenに伝えることです。

希望に役立ちます。さらなる問題が発生した場合はお知らせください。

関連する問題