project.json中'dependencies'和'frameworkAssemblies'之间有什么区别?

nat*_*ter 18 asp.net asp.net-core

使用project.json进行ASP.NET 5应用程序的文档包括一个示例project.json文件(下面的缩写版本).

frameworkAssemblies和之间有什么区别dependencies

为什么要dnx451使用另一个并dnxcore50使用另一个?

{
  "version": "0.1-alpha-*",
  ...
  "frameworks": {
    "dnx451": {
     "frameworkAssemblies": {
        ...
      }
    },
    "dnxcore50": {
     "dependencies": {
       ...
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

Kir*_*lla 20

frameworkAssemblies 指GAC中存在的程序集(全局程序集缓存).

请考虑以下示例:
我想使用ADO.NET apis(SqlConnection,SqlCommand)来处理SQL Server数据库.我知道这些apis是其中的一部分,System.Data.dll所以想参考它.现在,当安装完整版本的.NET Framework时,它会在GAC中安装一些程序集(也有这样的程序System.Data.dll),因此您可以frameworkassemblies在下面的示例中看到引用.来到CoreClr,我需要找出这些类型存在于哪个包中.为此,您可以使用调用的网站PackageSearch(由ASP.NET团队成员构建),您可以在其中搜索类型并查找包名称.基于此,您将找到System.Data.SqlClient包装.由于此包是为CoreClr构建的,因此它是该部分中dependenciesdnxcore50一部分.

{
    "version": "1.0.0-*",
    "description": "Test App",
    "dependencies": {
    },
    "frameworks": {
        "dnx451": {
            "frameworkAssemblies": {
                "System.Data": "4.0.0.0"
            }
        },
        "dnxcore50": {
            "dependencies": {
                "System.Data.SqlClient": "4.0.0-beta-*"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在假设您想在应用程序中添加对json序列化和反序列化的支持,并希望引用Json.Net nuget包.Json.Net nuget包支持桌面和核心clr,因此您可以将它放在dependencies两个框架共有的部分中.

{
    "version": "1.0.0-*",
    "description": "Test App",
    "dependencies": {
        "Newtonsoft.Json": "6.0.6"
    },
    "frameworks": {
        "dnx451": {
            "frameworkAssemblies": {
                "System.Data": "4.0.0.0"
            }
        },
        "dnxcore50": {
            "dependencies": {
                "System.Data.SqlClient": "4.0.0-beta-*"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)