c# - 无法解析 Nuget 包的版本

标签 c# nuget nuspec

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

我收到的警告/错误:

NU1603 MyPackage.Services 1.0.0.13 依赖于 MyPackage.Base (>= 1.0.0),但未找到 MyPackage.Base 1.0.0。已解析 MyPackage.Base 1.0.0.13 的近似最佳匹配。

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 的用处大大减弱,但它的存在时间比包锁定要长得多。

关于c# - 无法解析 Nuget 包的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509135/

相关文章:

c# - 在 CRM Online 中动态使用 GetAttributeValue<T>

c# - 使用 LINQ 对 XML 进行排序

nuget - 将 NuGet 包推送到 Artifactory 本地 repo 子文件夹

tfs - 如何自动更新nuget包依赖?

msbuild - 在 MSBuild 中表达传递依赖,无需导入 PackageReference

visual-studio - 如何使用 Nuget CLI 重现 VS2017 包管理器命令 "Update-Package -reinstall"

c# - LINQ OrderBy 自定义订单

C# 备用无参数构造函数

visual-studio-2017 - Nuget 无法恢复 Microsoft.Net.Compilers.1.0.0

NuGet 包变得陈旧? "Failed to download package correctly. The contents of the package could not be verified"