2016-06-28 2 views
68

私は新しい.NETのコアプロジェクトを作成するinstructionに続き、CMDからこれを実行しました:project.lock.jsonとは何ですか?

dotnet new 
dotnet restore 

番目のステートメントは、ごみ(本当にごみが、依存関係、構成などのトン)が多く含まproject.lock.jsonを作成します。これらの依存関係は、別個のNuGetパッケージに分割された.NETフレームワークであると仮定します。

私の質問:

  1. は私の仮定が正しいですか?
  2. 不要なNuGetパッケージ/依存関係を削除してアプリケーションを軽くできますか?
  3. どうすればよいですか?
+2

はなぜこのダウンは投票されましたか?私はNuGetが.netコアアプリケーションに必要だと信じています。それ以外の場合は、パッケージをローカルで複製し、独自のフィードを提供することができます。 – roydukkey

+0

通常、ロックファイルには触れません。 project.json自体を変更すると、ツールを実行するとロックファイルが自動的に更新されます。 – gretro

+2

あなたの質問#2は良いと私の意見では独自のSOの質問に値する。 –

答えて

88

短い答え:あなたは、プロジェクトのパッケージを復元するときproject.lock.jsonは、.NETツールによって生成されます。それに触れたり、ソースコントロールにチェックインしたりしないでください。 project.jsonを直接編集してください。

長い答え:パッケージプロセス(dotnet restore)を復元中には、NuGetは、プロジェクト内の依存関係を分析その依存グラフを歩き、そしてパッケージは、プロジェクトとプロジェクトの依存関係をインストールする必要があるかを把握する必要があります。

これは通常の作業量であるため、結果はproject.lock.jsonにキャッシュされ、その後のリストアはより迅速かつ効率的になります。 project.jsonが変更され、dotnet restoreが再度実行されると、ロックファイルが再生成されます。

+3

関連リンク:[NuGet Docs:Project.jsonリファレンス](https:// docs.nuget.org/ndocs/schema/project.json) –

1

誰かがいくつかのナゲットを更新したとき、lock.jsonファイルは更新されません。ドットネットリストアので、最後の選択を適用する前に削除しますそれらを実行することをお勧めしますgruntあなたのコマンドラインから。 それは、働くすべてのlock.jsonファイルを削除してを復元DOTNETを実行していない場合は、これは私の好きな選択肢である。)

+2

「project.lock.json」と何が関係していますか? –

関連する問題