project.json 中的"依赖项"和"框架程序集"有什么区别?



使用项目的文档。ASP. json。. NET 5应用程序包括一个示例项目。Json文件(下面是缩略版本)。

frameworkAssembliesdependencies的区别是什么?

为什么dnx451用一种而dnxcore50用另一种?

{
  "version": "0.1-alpha-*",
  ...
  "frameworks": {
    "dnx451": {
     "frameworkAssemblies": {
        ...
      }
    },
    "dnxcore50": {
     "dependencies": {
       ...
     }
  }
}

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

考虑下面的例子:
我想用ADO。. NET api (SqlConnection, SqlCommand)与SQL Server数据库一起工作。我知道这些api是System.Data.dll的一部分,所以想引用它。现在,当完整版的。net Framework安装完成后,它会在GAC中安装一些程序集(其中也有System.Data.dll),因此你会在下面的例子中看到对frameworkassemblies的引用。来到CoreClr,我需要找出这些类型存在于哪个包中。为此,您可以使用名为PackageSearch的网站(由ASP构建)。. NET团队成员),您可以在其中搜索类型并找到包名称。基于此,您将发现System.Data.SqlClient是包。因为这个包是为CoreClr构建的,所以它是dnxcore50部分中dependencies部分的一部分。

{
    "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-*"
            }
        }
    }
}

最新更新