从 RazorPage 中的另一个项目引用 class

Referencing a class from another project in a RazorPage

我有一个 ASP .Net Core 3.1 项目,名为“MyProject.app”,使用 Razor Pages。该项目引用了另一个名为“Utils.lib”的项目(在同一解决方案中)。后者包含此 class:

namespace Utils.lib
{
    public static class PropertyUtils
    {
        public static void SomeMethod()
        {
        }
    }
}

现在 "MyProject.app" 我有一个剃须刀页面位于:

/Pages/Profile/Index.cshtml

我正在尝试像这样引用我的实用程序 "Utils.lib" class:

Utils.lib.PropertyUtils.SomeMethod()

但我得到的只是

The type or namespace name 'lib' does not exist in the namespace 'MyProject.app.Utils' (are you missing an assembly reference?)

我尝试使用 @using 指令向 _ViewImports.cshtml 添加命名空间,但它给出了相同的错误。

同时,我可以在主项目的任何 .cs 文件中自由使用该方法,但不能在任何 .cshtml 中使用该方法

我在主项目中也有这个 class:

namespace MyProject.app.Utils
{
    class SomeOtherUtilClass
    {
    }
}

我猜这与我命名命名空间的方式有关,但我不知道是什么。

我在这里错过了什么?为什么我不能在 RazorPages 中引用我的 classes?

所以,这是我的答案。如果添加这些 usings:

,即使在您的 C# 代码中也可以重现该问题
using MyProject.app
using Utils.lib

因为 MyProject.app 包含相同的命名空间,编译器无法找到您的 Utils.lib。

你有两种方法可以解决这个问题:

  1. 重命名命名空间
  2. 在您的剃刀页面中使用完整的命名空间路径,例如:
@MyProject.app.Utils.SomeUtilClass

@Utils.lib.SomeUtilClass

因此,您必须从 _ViewImports

中删除 @using MyProject.app