2016-05-23 12 views
66

新しい.NET Core RC2テンプレートを使用してプロジェクトをビルドするたびに、ではなく、が実行可能になっています。 EXEファイル。コンソールアプリケーションをデバッグするためにF5キーを押した場合、アプリケーションは正常に動作します。.NETコアRC2に.exeファイルを作成

アプリケーションそして、もし私がこのフォルダ内で

dotnet run 

コマンドを使用すると、うまく動作します。しかし、私は.NET Core CLIツールなしでアプリケーションを実行する方法はありません。あなたは何があり見ることができないとして

Bin folder structure

bin\Debug\netcoreapp1.0\ 

フォルダの内容は、次のようになります。 EXEファイルが利用可能です。ちょうどdll。

私は何か見落としていますか?または、私のproject.jsonファイルに何か問題がありますか?

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "emitEntryPoint": true 
    }, 

    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.0-rc2-3002702" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": "dnxcore50" 
    } 
    } 
} 

ありがとうございます!

+0

@DavidPine compilationOptionsを使用するための答えは、RC2では非推奨です。とにかく試してみましたが、同じ結果が出ました。 –

+0

あなたはそうです、残念です。これは 'buildOptions'でなければなりませんし、すでに" emitEntryPoint ":true'があります。 ** cmd ** line windowから 'dotnet build'を手動で実行しようとしましたか?また、正しい出力ディレクトリを探していることは確かですか? –

+0

@DavidPineええ、私はビルドを試み、実行し、コマンドを公開します。彼らはすべて正常に動作します。私はちょうど私のbinフォルダまたは下にある任意のフォルダに.exeファイルを取得しません。 –

答えて

66

.NETのコアで2つのアプリモデル、実際にあります。

  • ポータブルアプリを:重く「DNXコンソールアプリケーション」に触発されたが、これらのアプリが.exeファイルを生成しない、代わりに実行されています.NETコア共有ランタイム(そのバージョンは、type: platform属性のおかげでMicrosoft.NETCore.Appパッケージによって定義されます)。移植可能なアプリケーションを使用できるようにするには、対応する.NET Coreランタイムをマシンにインストールする必要があります。正確なバージョンが見つからない場合は、dotnet runを実行すると例外がスローされます。

  • スタンドアロンをアプリ:彼らは.exeファイルを生成して、スタンドアロンのアプリケーションは、古き良き.NETコンソールアプリケーションには本当に似ています。 .NET Coreランタイムは、アプリケーション自体に直接組み込まれているため、マシンにインストールする必要はありません。

現在、最初のモデルを使用しています。スタンドアロンモデルを使用するには、あなたのproject.jsonを微調整する必要があります。

  • あなたのアプリが(例えばwin7-x64またはubuntu.14.04-x64)を標的になる環境をリストするruntimesセクションを追加します。あなたは完全なリストhereを見つけることができます。
  • Microsoft.NETCore.App依存関係を削除します。代わりに、このパッケージで置き換えることができます:"NETStandard.Library": "1.5.0-rc2-24027"

ここでは、スタンドアロンアプリの例です:project.jsonで、defaultにアプリtypeを変更してみてくださいASP.NET Core

{ 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "warningsAsErrors": true 
    }, 

    "dependencies": { 
    "Microsoft.Extensions.Configuration.Binder": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Configuration.CommandLine": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc2-final", 
    "Microsoft.Extensions.DependencyInjection": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Logging": "1.0.0-rc2-final", 
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc2-final", 
    "NETStandard.Library": "1.5.0-rc2-24027" 
    }, 

    "frameworks": { 
    "net451": { }, 

    "netcoreapp1.0": { 
     "dependencies": { 
     "System.Net.Ping": "4.0.0-rc2-24027" 
     }, 

     "imports": [ 
     "dnxcore50", 
     "dotnet5.6", 
     "portable-net451+win8" 
     ] 
    } 
    }, 

    "runtimes": { 
    "win7-x64": { } 
    } 
} 
+2

それだけです!ありがとう! –

+0

あなたは 'netcoreapp1。0'フレームワークセクションは必須ではありませんか?つまり、依存関係として 'System.Net.Ping'をリストアップしました。これは以前定義された' dependencies'セクションに移動できますか? – wal

+3

これらのアプリケーションモデルのいずれも、単一の.exeを生成しません。これは.NET Framework全体でのみ可能です。 –

2

"Microsoft.NETCore.App": { 
    "type": "default", 
    "version": "1.0.0-*" 
} 
11

答えは完全な手順でdocumentationであります今。実行可能.EXEファイルの場合

  1. フレームワークに依存展開
  2. 自己完結型の展開

:あなたは、.NETのコアアプリケーションのための配備の2種類を作成することができ

Self-contained deploymentを使用する必要があります。

3

ステップ1:あなたのproject.jsonに実行時間のセクションを追加します。frameworksセクション

ステップ2の下Project.jsonから"type": "platform",を削除します。各セクションはコンマで区切られています。ランタイムを追加します。以下は勝利の例です。

"runtimes": { 
     "win10-x64": {}  
    } 

手順3:プロジェクトのdotnet restoreコマンド。 (オープンCMD、srcフォルダがあるところはどこでも、あなたのプロジェクトのフォルダに移動し、実行DOTNETのrestor)

ステップ4:dotnet pack ステップ4:dotnet build -r win10-x64 - または単に構築。

ステップ5:あなたは.exeファイルは、あなたがdotnet toolを使用することができます.NETのコアコンソールアプリケーションから実行可能なアプリケーションを作成するには、デバッグ/ netcore/win10/

1

の下に作成さに気づくことができます。ちょうどあなたのプロジェクトディレクトリに実行します。

dotnet publish --runtime win7-x64 

これは、スタンドアロンアプリケーションを作成するには、(自己完結型の展開;あなたのディスク上に少なくとも60メガバイトを消費するすべての必要なライブラリが含まれています)。もちろん、osx.10.11-x64ubuntu.16.04-x64のような他のランタイムを選択することもできます。

デフォルト設定(New Project -> Console App (.NET Core))を使用した場合、必要な設定ファイルの変更はありません。

関連する問題