ASP.NET 5应用程序的documentation for using project.json包含一个示例project.json文件(下面的缩写版本)。
frameworkAssemblies
和dependencies
之间有什么区别?
为什么dnx451
使用一个而dnxcore50
使用另一个?
{
"version": "0.1-alpha-*",
...
"frameworks": {
"dnx451": {
"frameworkAssemblies": {
...
}
},
"dnxcore50": {
"dependencies": {
...
}
}
}
答案 0 :(得分:20)
frameworkAssemblies
是指GAC中存在的程序集(全局程序集缓存)。
考虑以下示例:
我想使用ADO.NET apis(SqlConnection
,SqlCommand
)来处理SQL Server数据库。我知道这些api是System.Data.dll
的一部分,所以想要引用它。现在,当安装完整版本的.NET Framework时,它会在GAC中安装一些程序集(也具有此System.Data.dll
),因此您在下面的示例中看到了对frameworkassemblies
的引用。来到CoreClr,我需要找出这些类型存在于哪个包中。为此,您可以使用名为PackageSearch
的网站(由ASP.NET团队成员构建),您可以在其中搜索类型并查找包名称。基于此,您将找到System.Data.SqlClient
作为包。由于此包是为CoreClr构建的,因此它是dependencies
部分中dnxcore50
部分的一部分。
{
"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-*"
}
}
}
}
现在让我们假设您甚至想在应用中添加对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-*"
}
}
}
}