如何解决"The type or namespace name 'Didstopia' could not be found (are you missing a using directive or an assembly reference?)"

How to resolve "The type or namespace name 'Didstopia' could not be found (are you missing a using directive or an assembly reference?)"

我正在使用 VS2019 尝试构建一个简单的 .NET Standard 2.0 class 库,该库使用 Didstopia.PDFSharp .NET Standard 2.0 nuget 包。

这是从我的 .csproj 文件开始的最小复制:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Didstopia.PDFSharp" Version="1.0.0-beta8">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    </PackageReference>
  </ItemGroup>

</Project>

这是我的 Class1.cs 文件:

using System;
using Didstopia.PDFSharp;

namespace ClassLibrary1
{
    public class Class1
    {
    }
}

编译时出现以下消息:

Class1.cs(2,7,2,16): error CS0246: The type or namespace name 'Didstopia' could not be found (are you missing a using directive or an assembly reference?)

在 Visual Studio 中为 Class1 编辑 window 的代码中 "using Didstopia.PDFSharp" 行有红色下划线的 Didstopia。

如果我不使用包引用而是使用包文件夹中对 Didstopia.PDFSharp.dll 的程序集引用,class 库可以正常编译。

如果我分叉、克隆并添加对 Didstopia.PDFSharp.dll 的项目引用,一切都可以正常编译。

我已经完成 "clean",删除 bin 和 obj 文件夹,无数次从 C:\Users\[myuserid]\.nuget\packages\didstopia.pdfsharp 文件夹中删除 Didstopia 包。

我不确定接下来要尝试什么。无论如何,是否可以从编译器中获取有关 为什么 它不喜欢包引用的更多信息?

I'm not sure what to even try next. Is there anyway to get more information out of the compiler about why it doesn't like the package reference?

我认为这是 nuget 包的问题 Didstopia.PDFSharp 1.0.0-beta8。在我这边,当我在 net standard 2.0 class 库项目中安装这个包时,我遇到了与您描述的相同的问题,对此感到很奇怪。

作为建议,请像这样删除<IncludeAssets>的内容:

<IncludeAssets></IncludeAssets>

该标签即将消耗nuget包内容,使用时无法引用dll内容。请参阅 this

此外, 由于这个问题更多是与软件包本身有关,而且它是测试版,预发布版本可能会有一些问题,我建议您可以联系 the author 并报告此问题。

希望对您有所帮助。