【问题标题】:Package .NET framework DLL and use it in .NET standard project打包 .NET 框架 DLL 并在 .NET 标准项目中使用
【发布时间】:2021-04-01 11:17:29
【问题描述】:

我有一个供应商提供的基于 .NET Framework 的 DLL。我无权访问代码,我只有 DLL。我已将此 DLL 打包到一个 nuget 包中,现在我正尝试将其引用到一个 .NET 标准项目中。但我收到警告 - Package 'MyPackage 0.0.1' 是使用 '.NETFramework,Version=v4.6.1' 而不是项目目标框架 '.NETStandard,Version=v2.0' 恢复的。此软件包可能与您的项目不完全兼容。

如果我将 DLL 直接引用到 .NET 标准项目中,它不会显示此警告。但是在创建一个 nuget 包后使用它表明了这一点。

我还尝试创建一个 .NET 标准库项目,添加 DLL 引用,然后创建一个 nuget 包,但它仍然显示相同的警告。

还有其他方法吗?供应商不提供针对其他框架的 DLL,由于需求,我必须将其打包到 Nuget 后才能使用。

【问题讨论】:

  • 你是如何将dll打包到net标准项目中的?
  • @Perry Qian-MSFT 我没有将它打包到网络标准项目中。我首先创建了一个包含现有网络框架 DLL 的 nuget 包,然后将该 nuget 包引用到网络标准项目中。那是我收到上述错误的时候。
  • 你是不是直接在net标准nuget项目中引用了net框架?
  • clean nuget caches first 然后安装nuget包测试问题是否再次出现。

标签: visual-studio dll nuget .net-standard .net-framework-version


【解决方案1】:

就我而言,我会按照您的描述测试情况。创建一个名为test 的网络标准库项目,然后使用此节点将其包含到包中。

1)创建一个名为test的网络标准lib nuget项目,并且只在test.csproj文件下添加这个节点:

<ItemGroup>
        <None Include="xxx\xxx\xxx.dll"(the whole path of the net framework dll) Pack="true" PackagePath="lib\$(TargetFramework)"></None>
</ItemGroup>

2)右键点击net标准测试项目-->点击Pack按钮,就可以得到新版本的nuget包了。

在将nuget包安装到另一个主项目之前,您应该first clean nuget caches或删除C:\Users\xxx(current user)\.nuget\packages下的所有文件。

而且通过上述所有步骤,我并没有遇到问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多