未找到自定义C#属性的命名空间

未找到自定义C#属性的命名空间,c#,attributes,asp.net-core-3.1,C#,Attributes,Asp.net Core 3.1,我们有一个作为json从网页传递的模型,并在控制器中使用模型构建来解析.NETCore3.1服务器中的属性。我们希望用一个自定义属性来修饰该模型的一些属性,以便“helper”方法可以对控制器中的指定属性执行转换 当我们的模型上没有属性时,一切都可以编译并正常工作 我们已经为此模型创建了一个类(LoginModel),并用自定义属性[Courier]装饰了一个属性 namespace THO.Demo.API.Models { public class LoginModel {

我们有一个作为json从网页传递的模型,并在控制器中使用模型构建来解析.NETCore3.1服务器中的属性。我们希望用一个自定义属性来修饰该模型的一些属性,以便“helper”方法可以对控制器中的指定属性执行转换

当我们的模型上没有属性时,一切都可以编译并正常工作

我们已经为此模型创建了一个类(LoginModel),并用自定义属性[Courier]装饰了一个属性

namespace THO.Demo.API.Models
{

    public class LoginModel
    {
        public string Email { get; set; }
        [Courier(foo: "secret")]
        public string Secret { get; set; }
        [Courier]
        public string PIN { get; set; }
    }
}
我们已经为自定义属性创建了一个类

namespace THO.Demo.API.Models
{
    [AttributeUsage(AttributeTargets.Property)]
    public class CourierAttribute : System.Attribute
    {
        private string foobar;
        public CourierAttribute(string foo)
        {
            foobar = foo;
        }

        public CourierAttribute() { }
    }
}
当我尝试构建我们的项目时,会出现以下错误:

错误CS0246无法找到类型或命名空间名称“CourieratAttribute” 被找到(是否缺少using指令或程序集引用?)

错误CS0246找不到类型或命名空间名称“Courier” (是否缺少using指令或程序集引用?)

这两个文件“并排”在同一个项目和同一名称空间中。我尝试过将属性命名为“MyCustomAttribute”,但遇到了相同的问题。当(在VS2019中)我单击该属性时,我会看到一个引用并可以“跳转”到它,因此看起来至少VS知道它们在那里,但项目不会编译


有什么想法吗?谢谢。

我们组织项目的方法是将所有模型({projectRoot}/models)保存在一个文件夹和名称空间中。我们还为“Attributes”({projectRoot}/Attributes)创建了一个文件夹,将属性类放在其中。当我将“LoginModel”从Models文件夹移到项目的根文件夹中时,编译器能够找到属性(即使我们将attribute类保留在它自己的文件夹中)。这毫无意义,因为我们所做的只是移动文件。我们没有更改名称空间。这似乎是一个变通办法,但它确实打破了我们的项目组织。(顺便说一句,当我们没有用属性修饰的属性时,模型会被找到并正确编译)。 更新-“未找到”问题存在于一个单独的项目(oops)中,该项目带有到LoginModel的链接。仔细查看eaxact错误消息并添加到属性类的链接后,一切正常


经验教训-仔细检查确切的错误消息。

我们组织项目的方法是将所有模型({projectRoot}/models)保存在文件夹和命名空间中。我们还为“Attributes”({projectRoot}/Attributes)创建了一个文件夹,将属性类放在其中。当我将“LoginModel”从Models文件夹移到项目的根文件夹中时,编译器能够找到属性(即使我们将attribute类保留在它自己的文件夹中)。这毫无意义,因为我们所做的只是移动文件。我们没有更改名称空间。这似乎是一个变通办法,但它确实打破了我们的项目组织。(顺便说一句,当我们没有用属性修饰的属性时,模型会被找到并正确编译)。 更新-“未找到”问题存在于一个单独的项目(oops)中,该项目带有到LoginModel的链接。仔细查看eaxact错误消息并添加到属性类的链接后,一切正常


吸取的教训-仔细检查确切的错误消息。

您是否尝试过清理解决方案并重建,以及重新启动VS?这通常是由于VS中检测到错误的脏代码。请尝试清理项目,关闭Visual Studio,删除
.VS
隐藏文件夹,打开Visual Studio,再次重建项目。我关闭了VS 2019,执行了清理解决方案,执行了重建解决方案,但没有任何乐趣。我仍然会遇到同样的两个错误。我返回到命令行。我关闭了VS,做了一次网络清理。做了一个dotnet构建。同样的错误…:(检查两个项目是否针对同一个.net Framework,如果不是,它们会变得彼此不可见。您是否尝试过清理解决方案和重建,以及重新启动VS?这通常是由于VS中检测到错误的脏代码所致。请尝试清理项目,关闭Visual Studio,删除
。VS
隐藏文件夹,打开Visual Studio,重建e项目。我关闭了VS 2019,做了一个干净的解决方案,做了一个重建解决方案,没有任何乐趣。我仍然得到同样的两个错误。我返回到命令行。我关闭了VS,做了一个dotnet Clean。做了一个dotnet build。同样的错误…:(检查两个项目是否针对相同的.net Framework,如果不是,它们会变得彼此不可见。