代码中未识别Nuget包引用(WMPLib)



我试图添加WMPLib nuget包作为对我的项目的包引用,但在代码中找不到这些类。

这在我的csproj文件中:

<PackageReference Include="WMPLib">
<Version>1.0.0</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>

在我的cs文件中,我有:

using WMPLib;

这就是错误:

error CS0246: The type or namespace name 'WMPLib' could not be found (are you missing a using directive or an assembly reference?)

在这里我读到";该问题是由于新的NuGet格式引用"PackageReference"。。。不添加文件夹和文件";。

有人对此了解更多吗?解决方案是否使用package.config而不是包引用?

好的,我能够重现您的问题,还找到了一些解决方法。

问题

在我看来,最初的WMPLibNuGet包在某种程度上被破坏了/并没有真正符合当今NuGet的期望。我这么认为是因为以下两个指标:

  • 通常,nuget.org显示包的所有兼容目标框架,但对于WMPLib,它只显示.NETFramework(请参阅此处(-但显示哪个版本?将其与Newtonsoft.Json进行比较
  • 在使用dotPeek或7-Zip分析包时,我在lib文件夹中找到了程序集。但通常,它们在lib<<TFM>>内部,例如libnet48

解决方法

我已经使用dotPeek提取了两个程序集AxInterop.WMPLib.dllInterop.WMPLib.dll,并将它们保存在C:tempNewWMPLiblibnet35
然后我创建了以下文件C:tempNewWMPLib.nuspec:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>NewWMPLib</id>
<version>1.0.0</version>
<authors>me</authors>
<owners>me</owners>
<description>Lorem ipsum</description>
</metadata>
</package>

最后,我通过nuget pack C:tempNewWMPLib.nuspec构建了一个新的NuGet包。

当通过NuGet使用此包时,现在编译以下代码:

using WMPLib;
namespace ConsoleApp4
{
internal class Program
{
static void Main(string[] args)
{
var windowsMediaPlayerClass = new WindowsMediaPlayerClass();
}
}
}

免责声明

我不是律师,我不知道遵循我的变通方法是否合法。

最新更新