gpt4 book ai didi

asp.net-core - 对 project.json 中的依赖关系感到困惑

转载 作者:行者123 更新时间:2023-12-04 15:16:39 25 4
gpt4 key购买 nike

在 project.json 文件中,我们有一个依赖项部分,然后我们还有一个框架部分,在每个框架下可以有更多的依赖项。
我很困惑为什么有时依赖项需要进入框架部分,而其他时候需要进入主要依赖项部分?

例如,在我的几个项目中,我在 dnxcore50 下有依赖项,但是当我从 nuget 升级它们时,它会将升级后的版本放在主要依赖项部分,并在框架部分下留下旧版本的较低版本。

一般来说,我发现在一个或另一个框架的 VS 2015 中很容易犯错误并得到奇怪的依赖解析错误,而且很难找出导致错误的原因。我曾经在一个项目中添加依赖项,这会导致另一个项目中出现错误,其中类型在链中的多个包中找到或解决基本原始类型的问题。

看起来 VS 2015 模板可能会将它们放在不同的位置,而不是当您使用 nuget 添加引用时,或者可能是因为我使用的是 beta5,VS 中的工具有点不同步。

是否有关于何时将依赖项放在主要依赖项部分与框架特定部分下的任何指导?

最佳答案

您可以执行特定于框架的依赖项的原因是某些包不支持所有框架。

最常见的情况是不支持 CoreCLR(尚)的 NuGet 包。有些人更喜欢在该框架上使用替代方案,而不是不支持它。因此,在桌面 CLR (dnx451) 上,他们使用一个 NuGet 包,而在 CoreCLR 上,他们使用另一个。

一个具体的例子是 dnu .在桌面 CLR 上运行时,它使用 System.Net.Http .但是,在 CoreCLR 上,它使用 Microsoft.Net.Http.Client : https://github.com/aspnet/dnx/blob/dev/src/Microsoft.Framework.PackageManager/project.json#L29

您可能还注意到在上面的文件中我们使用了 dependenciesframeworkAssemblies .这就是为什么你会使用来自不同目标的不同包的另一个原因。 frameworkAssemblies来自 GAC,它仅适用于桌面 CLR。

因此,规则是:当您的包将被您包支持的所有框架使用时,请使用顶级依赖项属性。

关于asp.net-core - 对 project.json 中的依赖关系感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31502057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com