代码之家  ›  专栏  ›  技术社区  ›  rwpk9

CS0433“ProjectA”和“ProjectB”中存在类型“type”

  •  -2
  • rwpk9  · 技术社区  · 2 年前

    我有一个用.NET Framework 4.7(c#)制作的解决方案,其中我们有两个项目,它们在相同的命名空间中包含相同的分部类,这些项目打包在 nupkg

    从现在起,我们将遵循以下逻辑:

    • 项目A:具有分部类的一部分,并引用项目B
    • 项目B:具有分部类的另一部分(代码自动生成)
    • 项目C:该项目具有 nupkg 被引用,但如果我们在编译时尝试调用上述类的任何属性,则会出现以下错误: CS0433 The type 'Config' exists in 'ProjectA, Version=1.2023.2.21, Culture=neutral, PublicKeyToken=null' and in 'ProjectB, Version=1.2023.2.21, Culture=neutral, PublicKeyToken=null'

    我已经尝试过:

    • 清洁和重建。
    • 删除并再次添加引用。
    • 删除多余和无用的引用。
    • 从Project C卸载NuGet并重新安装。

    以下是每个项目中相互冲突的代码片段:

    项目A:分部类配置

    namespace WhatIsWrong
    {
        using System;
        using System.Collections.Generic;
        using System.ComponentModel.DataAnnotations;
    
        public partial class Config
        {
        }
    }
    

    项目B:分部类配置

    namespace WhatIsWrong
    {
        using System;
        using System.Collections.Generic;
    
        public partial class Config
        {
            public string parameter { get; set; }
            public string value { get; set; }
        }
    }
    

    项目C

    public DbSet<WhatIsWrong.Config> Config { get; set; }
    

    更新:

    我已经认为分部类必须在同一个项目上,就像Jon和Damien在评论中指出的那样,但这个解决方案是由其他人创建的,应该是有效的,我想他的想法是两个项目都只有一个模型(没有错),但他也试着在两个项目中使用分部,最终导致了错误。

    1 回复  |  直到 2 年前
        1
  •  4
  •   Jon Skeet    2 年前

    项目A:具有分部类的一部分,并引用项目B
    项目B:具有分部类的另一部分(代码自动生成)

    偏类不是这样工作的。你得到的是两个项目中的两个类。

    分部类的每个部分都需要在同一个项目中,因为它们被编译在一起 类型

    分部类允许单个类型的代码分布在多个 文件 -但不是多个 项目