7

新しい ASP.NET Core RC2 クラス ライブラリには、次の project.json ファイルがあり、パッケージの依存関係をトリミングする方法に関するドキュメントに従ってみました。

{
  "dependencies": {
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.0.0-rc2-final",
    "Microsoft.AspNetCore.Mvc.Core": "1.0.0-rc2-final",
    "Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc2-final",
    "Newtonsoft.Json": "8.0.3"
  },

  "frameworks": {
    "netstandard1.5": {
      "dependencies": {
        "Microsoft.NETCore.Platforms": "1.0.1-rc2-24027",
        "Microsoft.NETCore.Runtime": "1.0.2-rc2-24027",
        "System.Xml.XDocument": "4.0.11-rc2-24027"
      },
      "imports": "dnxcore50"
    },
    "net461": {
      "frameworkAssemblies": {
        "System.ServiceModel": "",
        "System.Xml": "",
        "System.Xml.Linq": ""
      }
    }
  }
}

Microsoft.NETCore.Platformsとを削除しようMicrosoft.NETCore.Runtimeとしても、すべてが機能します。これはおそらく、Microsoft の依存関係もこれらを指定しているためです。これらの依存関係は何のためにあり、明示して保持する必要がありますか?

4

1 に答える 1

12

パッケージにはどのような目的がありますか:

  • Microsoft.NETCore.Platforms基本的に、ランタイム識別子(RID)を指定する json ファイルのみです。これらの Id (例:osx.10.10-x64またはwin7-x86) は、プラットフォーム固有のコードをデプロイする必要がある場合に使用されます (例: 特別にコンパイルされた CoreCLR またはプラットフォーム固有の圧縮または暗号化ライブラリ)。これは、より一般的なプラットフォーム パターンを可能にする一種のツリーを形成します (linuxたとえば、後でどちらがrhelサポートされている特定のバージョンの親になるかなどrhel-7.1-x64)。したがって、誰かが NuGet を構築する場合、すべての Linux マシン (標準の Linux API に対して P/Invoke を実行するなど) または特定の Linux ディストリビューション (特別な RedHat 機能を使用するなど) に展開されるアセンブリのようなアーティファクトを追加できます。

  • Microsoft.NETCore.Runtimeはもっとトリッキーな話です。プラットフォームに適したランタイムを検索するために使用されます。

それらを保持する必要があります:それらを直接使用しないため、これらの依存関係を明示的に追加しても、私の理解には何のメリットもありません。

于 2016-05-27T11:04:26.470 に答える