【问题标题】:NuGet PackageReference not compatible with current framework versionNuGet PackageReference 与当前框架版本不兼容
【发布时间】:2019-05-31 12:44:15
【问题描述】:

我正在努力将 NuGet 引用从使用 packages.json 格式移到 PackageReferences。我对 NuGet 包的兼容性有疑问:该包支持旧版本的 .NET Framework。

这使用 packages.json 格式,效果很好。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="MarkdownDeep.NET-Signed" version="1.5" targetFramework="net461" />
</packages>

<Reference Include="MarkdownDeep, Version=1.5.5082.29984, Culture=neutral, PublicKeyToken=65640b2d9fe5ac0e, processorArchitecture=MSIL">
  <HintPath>..\..\packages\MarkdownDeep.NET-Signed.1.5\lib\.NetFramework 3.5\MarkdownDeep.dll</HintPath>
  <Private>True</Private>
</Reference>

但是,将其替换为 .csproj 文件中的 PackageReference 指令会导致以下错误:

<PackageReference Include="MarkdownDeep.NET-Signed">
  <Version>1.5</Version>
</PackageReference>

“C:\Source\WebApp.csproj”(恢复目标)(1)->(恢复目标)-> C:\Source\WebApp.csproj:错误 NU1202:包 MarkdownDeep.NET-Signed 1.5.0 与 net472 不兼容 (.NETFramework,版本=v4.7.2)。包 MarkdownDeep.NET 签名 1.5.0 支持:netframework35 (.NetFramework 3.5,Version=v0.0)

注意,两种情况下的当前目标框架都是一样的,v4.7.2。

是否有任何额外的指令可以添加到 &lt;PackageReference&gt; 节点,以允许我表明它可以针对 .NET Framework 3.5?

注意: Package references (PackageReference) in project files 中有一些很好的信息,但它似乎只处理 TargetFramework 作为有条件地添加引用的变量。我不认为我需要处理各种 .NET Framework 版本 - 一直都是 v4.7.2。

【问题讨论】:

    标签: .net nuget compatibility


    【解决方案1】:

    我只在 NuGet 团队工作了几个月,所以我不认为自己是所有 NuGet 方面的专家,但我建议MarkdownDeep.NET-Signed 包的编写可能不正确。

    从您使用packages.configcsproj 复制的示例中,您可以看到该包包含一个lib\.NetFramework 3.5\ 文件夹。但是,NuGet 包通常使用缩写形式 lib\net35\。通过创建控制台应用程序的快速测试,引用NuGet.Frameworks 包然后使用NuGetFramework.Parse(".NetFramework 3.5"),生成的对象具有“不受支持”的框架。 NuGet 包资源管理器(可在 Microsoft Store 中获得)是第 3 方应用程序,因此不能保证与 NuGet 在 VS 中的工作方式相同,但它也将 .NetFramework 3.5 显示为“无法识别的框架”,进一步证明它可能是一个错误创作的包。

    鉴于包看起来不正确,NuGet 使用PackageReference 还原失败是有效的,因为 NuGet 负责从包中选择与您的项目兼容的资产。我不知道为什么在 packages.config 项目中安装包是可行的。

    如果您只是在寻找 .NET markdown 解析器,据我所知,markdig 是 nuget.org 上最流行且仍在维护的软件包。

    【讨论】:

    • 感谢您的意见,@zivkan。我将寻求让开发人员替换或删除此依赖项特定的依赖项。到目前为止,这是唯一造成麻烦的“遗留问题”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2021-10-11
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多