【问题标题】:Differences in where you place dependencies in project.json file of ASP.NET Core?在 ASP.NET Core 的 project.json 文件中放置依赖项的位置有什么不同?
【发布时间】:2016-01-27 00:47:41
【问题描述】:

我只是在我的一个 ASP.NET Core 项目中查看 project.json 文件,并注意到有两个不同的区域可以列出依赖项。

一个在frameworks 节点内,另一个是dependencies 节点。为什么/何时会/应该将依赖项放在一个位置而不是另一个位置?

{
    "version": "1.0.0-*",
    "description": "My Class Library",
    "authors": [ "" ],
    "tags": [ "" ],
    "projectUrl": "",
    "licenseUrl": "",
    "frameworks": {
        "dotnet5.4": {
            "dependencies": {
                "Microsoft.CSharp": "4.0.1-beta-23516",
                "System.Collections": "4.0.11-beta-23516",
                "System.Linq": "4.0.1-beta-23516",
                "System.Runtime": "4.0.21-beta-23516",
                "System.Threading": "4.0.11-beta-23516"
            }
        }
    },
    "dependencies": {
        "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final"
    }
}

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    原因很简单。您可以为不同的框架拥有不同的依赖项。

    在某些情况下,不同框架的不同版本中存在指定的依赖关系。

    在另一种情况下,像 System.Runtime 这样的指定依赖项不需要全部包含在内。问题是这里的 DLL 是 .NET Core 中的单独模块(请参阅 here),但 dnx46dnx451 包含在 .Net 框架内实现的方法。不需要包含任何 external(附加)dll。因此,您不需要将System.Runtime 包包含在依赖项的dnx451 部分中或作为公共依赖项。因此System.Runtimeframework-specific dependencies

    在极少数情况下,您可以在"dnx451": "frameworkAssemblies": { "System.Runtime": "" }} 形式中包含依赖项,以跳过包含System.Runtime(如果错误地需要它)(请参阅the question)。通常使用frameworkAssemblies 来引用来自全局程序集缓存 (GAC) 的程序集而不重新分发它(请参阅the documentation)。

    【讨论】:

    • 我了解,如果您针对多个框架,您可以为每个框架指定不同的版本。但是没有绑定到任何框架的纯dependencies 节点呢?
    • @MatthewVerstraete:这是每个定位框架都使用的常见依赖项。例如,EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final" 不包含在某些框架中,并且该包支持dotnet5.4dnx451dnxcore50。因此,您可以将其作为常见依赖项包含在内。
    • 我明白了,你能修改你的答案,以便解决问题的两个部分吗?
    • @MatthewVerstraete:抱歉,我不明白你的意思。你的意思是“问题的两个部分”? project.json 有两个包含依赖项的位置:"dependencies" 包括您使用的所有 "frameworks" 的公共依赖项,"frameworks"."frameworkName"."dependencies" 包括仅在为指定框架构建目标时使用的依赖项。当可能需要此类特定于框架的依赖项时,我给出了示例。
    • 你的回答解释了为什么框架节点有一个依赖部分,但没有解释它自己对依赖节点的使用。
    猜你喜欢
    • 2021-06-12
    • 2018-03-02
    • 2015-11-11
    • 2014-08-02
    • 2020-01-27
    • 2017-02-03
    • 2018-01-19
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多