gpt4 book ai didi

c# - Microsoft.AspNetCore.App - 版本控制/是否应该在非 ASP.NET 类库中引用它?

转载 作者:太空狗 更新时间:2023-10-29 20:29:47 25 4
gpt4 key购买 nike

我正在尝试找出使用 Microsoft.AspNetCore.App 元包的正确方法。

Visual Studio 在生成报告时指出我不应为 Microsoft.AspNetCore.App 元包指定版本。

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.1" />

所以我将上面的替换为:

<PackageReference Include="Microsoft.AspNetCore.App" />

下一个问题是,我的项目所依赖的任何类库项目或包包含对包的版本化引用,这些包也包含在 Microsoft.AspNetCore.App 元包中,因为存在版本冲突,导致构建中断。

<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="2.1.1" />

所以我也删除了这些引用的版本:

<PackageReference Include="Microsoft.Extensions.Configuration" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" />

现在,当我运行 dotnet restore 时,我看到一条警告:

<Project> does not provide an inclusive lower bound for dependency 
Microsoft.Extensions.Configuration. An approximate best match of
Microsoft.Extensions.Configuration 1.0.0 was resolved.

现在应用程序已构建,但正在解决旧的且可能已过时的包版本。

为所有这些包维护下限版本似乎有点开销。

阻力最小的路径似乎是仅引用 Microsoft.AspNetCore.App 包(未版本化)代替元包中包含的任何包。但是我隐含地引用了很多不必要的东西(目前有 150 个包)。我可能想在一个不面向 web 的项目中重用类库,因此所有引用的包看起来都是低效的膨胀。另外,我是否认为更新版本的 Microsoft.AspNetCore.App 可能会在我将来构建时破坏我的应用程序?

最佳答案

我想你可能想观察 NuGet Version ranges and wildcards符号。

在引用包依赖时,NuGet 支持使用区间符号来指定版本范围,总结如下:

+-----------+---------------+-------------------------------------------------------+
| Notation | Applied rule | Description |
+-----------+---------------+-------------------------------------------------------+
| 1.0 | x ≥ 1.0 | Minimum version, inclusive |
| (1.0,) | x > 1.0 | Minimum version, exclusive |
| [1.0] | x == 1.0 | Exact version match |
| (,1.0] | x ≤ 1.0 | Maximum version, inclusive |
| (,1.0) | x < 1.0 | Maximum version, exclusive |
| [1.0,2.0] | 1.0 ≤ x ≤ 2.0 | Exact range, inclusive |
| (1.0,2.0) | 1.0 < x < 2.0 | Exact range, exclusive |
| [1.0,2.0) | 1.0 ≤ x < 2.0 | Mixed inclusive minimum and exclusive maximum version |
| (1.0) | invalid | invalid |
+-----------+---------------+-------------------------------------------------------+

因此,不要完全删除 Version 属性,而是使用范围或通配符,例如:

Minimum version, inclusive

<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1" />

引用:How to correct dotnet restore warning NU1604, does not contain an inclusive lower bound?

它需要一些配置,我希望 Microsoft 在 RTM 3.0 中使用向导来更新依赖关系树来解决所有这些问题...这是 6 个月前的一个项目,它包含对 Microsoft.AspNetCORE.Mvc< 的引用:

enter image description here

这是我正在处理的一个项目,我必须显式引用某些包(为了获得 ActionResults,我必须添加 2 个特定引用。):

enter image description here

使用 NuGet 表示法允许在您需要时使用细粒度的库,或者通过范围/通配符 API 更新实现面向 future 的模块化,或者您可以引用完整的工具包和 caboodle。

关于c# - Microsoft.AspNetCore.App - 版本控制/是否应该在非 ASP.NET 类库中引用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55161834/

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