未解析 Nuget 包的版本

Versions not resolving for Nuget packages

我收到内部开发的 Nuget 包的警告(在我的项目中被视为错误)。我不确定我做错了什么 - 根据文档,1.0.0.13 >= 1.0.0 应该可以解决。

我收到的warning/error:

NU1603 MyPackage.Services 1.0.0.13 depends on MyPackage.Base (>= 1.0.0) but MyPackage.Base 1.0.0 was not found. An approximate best match of MyPackage.Base 1.0.0.13 was resolved.

MyPackage.Services.nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>MyPackage.Services</id>
    <version>1.0.0</version>
    <authors>Me</authors>
    <owners>Me</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>My Package Description</description>
    <copyright>Me - 2018</copyright>
    <dependencies>
      <dependency id="MyPackage.Base" version="1.0.0" />
      <!-- ... -->
    </dependencies>
  </metadata>
</package>

谢谢

警告消息所述

An approximate best match of MyPackage.Base 1.0.0.13 was resolved.

所以解决了。但是,通过选择将警告视为错误,您要求它破坏您的构建。

由于您拥有 MyPackage.Services,您可以将其对 MyPackage.Base 的依赖更改为实际存在的版本以停止收到此警告。其他选择是停止将 NU1603 视为警告,或者可能完全抑制它。

正如 Martin Ullrich 在问题的评论中所说,在某些情况下,开发人员确实关心恢复的版本与他们预期的不同。事实上,这对一些客户来说非常重要,最近添加了 new feature 以提高恢复包的安全性(参见最近的 npm 事件流问题)。这使得 NuGet 警告 NU1603 的用处大大降低,但它的存在时间比包锁定要长得多。