2015-11-24 9 views
26

rc1ツールをインストールして、テンプレートで何が変更されたかを確認するための新しいWebプロジェクトを作成しました。compilationOptions.emitEntryPointの意味は何ですか?

私はproject.jsonが今含まれていることに気づい:

"compilationOptions": { 
    "emitEntryPoint": true 
} 

をしかし、それは、これは何をするかは不明です。

アイデアはありますか?

答えて

25

下記のとおり:(:コンソールアプリケーションは、public static void Main()を含まなければならない、すなわち)

することができます、それはプロジェクトがライブラリ対コンソールアプリケーションであることを示すために、コンパイラへのフラグがあるように見えますここでsourceから参照してください。 、あなたはStartup.csの下部にあるエントリポイントとして機能する新しい表現ボディの方法があるがわかります新しいRC1デフォルトのWebアプリケーションテンプレートで

:あなたは、このメソッドを削除した場合

public static void Main(string[] args) => WebApplication.Run<Startup>(args); 

が、その後実行ビルド(dnu build)あなたがエラーを取得する:あなたがfalseemitEntryPointフラグを変更し、再構築しようとした場合

error CS5001: Program does not contain a static 'Main' method suitable for an entry point 

しかし、それは成功します。これは、コンソールアプリではなくライブラリを作成しているためです。

10

これは、sourceにあります。

var outputKind = compilerOptions.EmitEntryPoint.GetValueOrDefault() ? 
    OutputKind.ConsoleApplication : OutputKind.DynamicallyLinkedLibrary; 

コンソールアプリケーションまたはライブラリを作成するかどうかをコンパイラに伝えるように見えます。

さらに、VS2015で新しいクラスライブラリ(パッケージ)とコンソールアプリケーション(パッケージ)を作成すると、コンソールアプリケーションのproject.jsonに以下が含まれますが、クラスライブラリは含まれません。

​​3210
+0

これは意味があります。ありがとう –