У меня есть библиотека компонентов Blazor, которая содержит несколько классов и компонентов Blazor.

Я пытаюсь сослаться на компонент Blazor из обычного класса C#, но у меня возникают странности.

Если я ссылаюсь на него там, где я ожидаю, все компилируется и работает нормально.

ModalDialogResult result = await ShowDialogAsync<LiquidTechnologies.Blazor.ModalDialog.Components.MessageBoxForm>(title, options, parameters);

Но он сообщает об ошибке intellisense

CS0234 Имя типа или пространства имен «MessageBoxForm» не существует в пространстве имен «LiquidTechnologies.Blazor.ModalDialog.Components» (вам не хватает ссылки на сборку?)

Его также не удалось собрать в среде непрерывной интеграции GitHub (с той же ошибкой intellisense).

Если я использую имя класса, которое находит intellisense (__generated__MessageBoxForm), я не могу создать его в Visual Studio 2019.

enter image description here

Арррррр...

Проект находится на GitHub по адресу blazor-modal-dialog. Проблема заключается в файле blazor-modal-dialog/src/LiquidTechnologies.Blazor.ModalDialog/Services/ModalDialogService.cs

Похоже на https://github.com/aspnet/AspNetCore/issues/12446.

1
Sprotty 29 Ноя 2019 в 19:37
Я просмотрел ваш код, но не смог найти пространство имен Components?
 – 
Quango
29 Ноя 2019 в 20:23
Извините, я новичок в git, я пробовал кое-что и не запустил свои последние обновления (я переименовал страницы в компоненты).
 – 
Sprotty
29 Ноя 2019 в 22:49
1
Первое, что я бы попробовал, это чистое решение, закомментировать ваш код, который не работает, и попытаться собрать - посмотреть, есть ли другие ошибки, вызывающие его.
 – 
Quango
30 Ноя 2019 в 10:03
Я думаю, что это ошибка в инструментах VS blazor, возможно, потому, что я запускаю некоторый код Microsoft Preview. Мне удалось собрать его в GitHub, используя runs-on: windows-latest в YAML. См. github.com/aspnet/AspNetCore/issues/15069.
 – 
Sprotty
30 Ноя 2019 в 11:51

2 ответа

Когда вы перемещаете или переименовываете компонент, в Blazor возникает ошибка (очень раздражающая), которая все еще не устранена на момент написания этой статьи. Чтобы решить, в первую очередь попробуйте очистить решение и выполнить перестроение решения (сборки недостаточно, перестроение обязательно). Иногда вам также потребуется вручную удалить папки obj и bin проекта Blazor перед перестроением решения, и в качестве последней попытки попробуйте закрыть и перезапустить Visual Studio, а затем перестроить решение. Это должно решить проблему. В противном случае может быть какая-то другая причина, например, вы что-то пишете с ошибкой или опускаете использование пространства имен.

2
Nicolò Carandini 5 Апр 2020 в 02:32

Похоже, вам нужно указать пространство имен в компоненте MessageBoxForm

@namespace LiquidTechnologies.Blazor.ModalDialog.Components

И импортируйте его в ModalDialogService

using LiquidTechnologies.Blazor.ModalDialog.Components;
0
mojorisinify 13 Сен 2022 в 22:23