2016-07-15 3 views
1

私はdot.netコアを初めて使用していて、サンプル、dotnet new、dotnet restore、dotnet runを試しました。.net core:なぜドットネットリストアが "ロック"ファイルを生成するのですか?その用途は何ですか?

2番目のステップ(ドットネットリストア)後、このロックファイルを削除しようとしましたが、「ドットネット実行」に失敗しました。ロックファイルが必要です。なぜMicrosoftはそのような "ロック"ファイルを設計したのですか?また、 "実行"コマンドでそのようなロックファイルが必要なのはなぜですか?

このロックファイルは、複数のプロセスがプロジェクトをビルドできないように設計されている場合は、空のファイルでなければならず、「ロック」として動作します。しかし、実際には、このファイルは他のソースコードと比較してかなり大きいです。

+0

は、必然的に[Unixライクなアーティファクト](HTTPを紹介します.stackexchange.com/questions/12815/what-are-pid-and-lock-files-for)を参照してください。 –

+5

[Project.lock.jsonとは何ですか?](http://stackoverflow.com/questions/38065611/what-is-project-lock-json) –

答えて

7

ロックファイルを見ると、移行された各依存関係の正確なバージョンの詳細が含まれていることがわかります。これにより、バージョンセットがdotnet restoreまで「ロック」され、再度実行されます。

私は少なくとも目的は、開発者が更新依存関係が使用されるとき、正確をより詳細に制御を与え、ソース管理にproject.lock.jsonファイルをチェックするかどうかを決定することができるようにだった。信じて私はそれが良い考えであるかどうかについてまだ議論があると思う。

これはまた、複数のツールが(依存性が変化する場合、不安定な方法で)再度計算する必要なしに、依存関係グラフを直接見ることを可能にします。

+0

これで 'dotnet restore'でエラーが発生しました。それはどのように可能ですか? – mbob

+0

@mbob:あなたのproject.jsonで新しい質問をすることをお勧めします。新しいバージョンでは、project.jsonの代わりにcsprojが使用されているので、使用している.NET Core SDKのバージョンについて詳しく説明してください。 –

0

があります。ファイルの内容を調べると、アプリケーションが使用しているすべてのNuGetパッケージの完全なリストが含まれていることがわかります。これは、project.jsonがワイルドカードを使用でき、そのバージョン(1.0.0。*など)について曖昧になる可能性があるため、project.jsonに含まれているものと必ずしも同じではありません。また、project.jsonよりもはるかに完全です。project.jsonで指定されたフレームワークに含まれるすべてのライブラリが含まれているためです。ここでproject.json.lockファイルから小さな抜粋です:

から取ら

:// UNIX:.NETCoreはUnixオペレーティングシステム上で実行作る https://blog.falafel.com/what-is-project-lock-json/

    "locked": false, 
        "version": -9996, 
        "targets": { 
       "DNX,Version=v4.5.1": { 
        "Microsoft.AspNet.DataProtection.Abstractions/1.0.0-beta5": { 
        "dependencies": { 
         "Microsoft.Framework.Runtime.Abstractions": "1.0.0-beta5" 
        }, 
        "frameworkAssemblies": [ 
         "mscorlib", 
         "System", 
         "System.Core", 
         "Microsoft.CSharp" 
        ], 
        "compile": { 
         "lib/dnx451/Microsoft.AspNet.DataProtection.Abstractions.dll": {} 
        }, 
        "runtime": { 
         "lib/dnx451/Microsoft.AspNet.DataProtection.Abstractions.dll": {} 
        } 
        } 
関連する問題