1. ホーム
  2. .net

project.lock.jsonとは何ですか?

2023-08-27 11:55:55

質問

私は 命令 の指示に従って、新しい .NET Core プロジェクトを作成し、cmd からこれを実行しました。

dotnet new
dotnet restore

2番目のステートメントでは project.lock.json を作成し、そこには多くのゴミが含まれています (本当のゴミではありませんが、大量の依存関係、設定など)。これらの依存関係は、個別の NuGet パッケージに分割された .NET フレームワークであると推測されます。

私の質問です。

  1. 私の仮定は正しいですか?
  2. 不要なNuGetパッケージ/依存関係を削除することで、アプリケーションを軽量化することは可能ですか?
  3. どのようにすればよいのでしょうか?

どのように解決するのですか?

更新 : project.json.csproj を.NET Standardプロジェクトのメインプロジェクトファイルとして使用します。この質問は、.NET 標準プロジェクトに NuGet 4.0でのPackageReference .

まだ時々 project.lock.json をビルド プロセスのアーティファクトとして見ることがありますが、無視する必要があります。.NET Standard/.NET Core プロジェクトが依存する NuGet パッケージの管理は、常に次のいずれかの方法で行う必要があります。

  • を編集する。 .csproj ファイルを直接編集する
  • を使うことで ドットネットCLI ( dotnet add package など)
  • Visual Studio を使用している場合は、パッケージ マネージャー GUI を使用します。

古い回答 を後世に残すために。 project.lock.json は、プロジェクトのパッケージをリストアするときに.NETツールによって生成されます。これに触れたり、ソースコントロールにチェックしたりしてはいけません。編集 project.json を直接編集してください。

パッケージのリストア処理中 ( dotnet restore )、NuGet はプロジェクトの依存関係を分析する必要があります。 その NuGet はプロジェクトの依存関係を分析し、依存関係グラフを歩き、あなたのプロジェクトとあなたのプロジェクトの依存関係のためにどのパッケージをインストールすべきかを見つけなければなりません。

これは自明ではない量の作業なので、結果はキャッシュされ project.lock.json にキャッシュされ、その後のリストアをより速く、より効率的にします。ロックファイルは、以下の場合に再生成されます。 project.json が変更され dotnet restore が再び実行される。