与原始代码相比,Nuget 包命名空间不同

Nuget package namespace is different compared to original code

我正在尝试为我的项目创建基础包。 我想将它们作为 NuGet 包导入。

运行前一切正常。导入自定义 nuget 包很好,引用很好(我猜)并且 Rider 不会抱怨。

在我的代码 运行 之后,我收到一个错误,其中包含以下内容:找不到版本为“1.0.0”的引用包“PACKAGENAME”并抛出 FileNotFoundException。 到目前为止,我得出的结论是,问题出在 NuGet 包命名空间内,我认为我是正确的。

将原始代码与编译后的代码进行比较后,命名空间不匹配。

原码:

namespace Base.Domain.Identity
{
    public class BaseUser<TKey> : IdentityUser<TKey>, IDomainEntityId<TKey>
        where TKey : IEquatable<TKey>
    {
        [MaxLength(64)] public string? PictureUrl { get; set; }
        [NotMapped]
        public string Name
        {
            get => UserName;
            set => UserName = value;
        }
    }
}

编译代码

#nullable enable
namespace Domain.Identity
{
  public class BaseUser<TKey> : IdentityUser<TKey>, IDomainEntityId<TKey> where TKey : IEquatable<TKey>
  {
    [MaxLength(64)]
    public string? PictureUrl { get; set; }

    [NotMapped]
    public string Name
    {
      get => this.UserName;
      set => this.UserName = value;
    }
  }
}

如您所见,命名空间不匹配。 到目前为止,我还没有找到一些脚本会声明应该切换名称空间的地方。

我还有另外 3 个具有相同根命名空间的包 例如 Base.SomeOtherPlace

nuspec 文件如下所示:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Api-Base-Domain</id>
    <version>1.0.0</version>
    <authors>Hannes</authors>
    <owners>Hannes</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Base libraries for asp-net api domain items</description>
    <releaseNotes>Release.</releaseNotes>
    <copyright>Copyright 2021</copyright>
    <tags>MyTag1</tags>
    <dependencies>
      <dependency id="Api-Base-Contracts" version="1.0.0"/>
    </dependencies>
  </metadata>
</package>

Api-Base-Contracts 是我的 Base.Contracts 包。 奇怪的是,只有 Base.Contracts 被正确编译。 该项目的 .nuspec 文件与 Base.Domain 几乎相同,除了依赖项,它具有 none.

我已尝试通过删除 obj 和 bin 文件夹重新加载这两个解决方案(基本解决方案和我使用 NuGet 包的解决方案)。 我正在为 NuGet 使用 dotnet 命令,因为我在 linux.

如何防止编译器更改命名空间?

显然问题出在缓存的 nuget 包上。 在开始构建这些包时,命名空间不同。

Nuget 包缓存在 home/.nuget/packages 中,所以我不得不手动删除那里的旧包。显然重建旧包并将它们导入 rider 不会重写缓存文件夹中的旧包。 所以要解决命名空间错误的大问题,我必须手动删除缓存的包。