Ссылка на класс из другого проекта в RazorPage - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть ASP. Net Core 3.1 проект с именем " MyProject.app ", использующий Razor Pages. Этот проект ссылается на другой (в том же решении), который называется " Utils.lib ". Последний содержит этот класс:

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

Теперь в «MyProject.app» у меня есть страница бритвы, которая находится под:

/Pages/Profile/Index.cshtml

И я пытаюсь сослаться на мой Утилита "Utils.lib" класс там, как это:

Utils.lib.PropertyUtils.SomeMethod()

Но все, что я получаю, это

Тип или имя пространства имен 'lib' не существует в пространстве имен 'MyProject .app.Utils '(вам не хватает ссылки на сборку?)

Я попытался добавить пространство имен в _ViewImports.cs html, с помощью директивы @using, но выдает ту же ошибку.

В то же время я могу свободно использовать этот метод в любом из моих файлов .cs основного проекта, но не в любом .cs html

Также у меня есть этот класс в основном проект:

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

Я предполагаю, что это как-то связано с тем, как я назвал свои пространства имен, но я не могу понять, что.

Чего мне здесь не хватает? Почему я не могу сослаться на мои классы в RazorPages?

1 Ответ

1 голос
/ 10 февраля 2020

Итак, вот мой ответ. Вы сможете воспроизвести проблему даже в своем c# коде, если добавите эти usings:

using MyProject.app
using Utils.lib

Поскольку MyProject.app содержит то же пространство имен, компилятор не может найти ваш Utils.lib.

У вас есть два способа решения этой проблемы:

  1. Переименование пространств имен
  2. Используйте на своих страницах бритвы полные пути пространства имен, такие как:
@MyProject.app.Utils.SomeUtilClass

или

@Utils.lib.SomeUtilClass

Итак, вы должны удалить @using MyProject.app из _ViewImports

...