Я работаю над приложением WPF, ориентированным на .NET 8, и получаю огромное количество ошибок XAML, например:
XDG0008: имя «XYZ» не существует в пространстве имен
XDG0001: ресурс "XYZ" не удалось разрешить
MC3037: отсутствует пространство имен Xml, сборка или пространство имен Clr
XDG0006: невозможно найти тип в пространстве имен clr
плюс случайные ошибки несовместимости типов:
[Ошибка (активная) MC3037 Отсутствует XmlNamespace, Assembly или ClrNamespace в инструкции сопоставления. Строка 442, позиция 61. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 442
Ошибка XDG-0001 Ресурс «RoleMargin» не может быть разрешен. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 337
Ошибка XDG-0001 Ресурс «InvBoolVis» не удалось разрешить. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 439
Ошибка XDG-0001 Ресурс «InvBoolVis» не удалось разрешить. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 519
Ошибка XDG-0001 Ресурс «CountVis» не может быть разрешен. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 259
Ошибка XDG-0001 Ресурс «CountVis» не может быть разрешен. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 333
Ошибка XDG-0001 Ресурс «BoolVis» имеет несовместимый тип. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 47
Ошибка XDG-0001 Ресурс «BoolVis» имеет несовместимый тип. AMV.App C:\Users\barto\source\AMV_project\AMV\AMV.App\Views\MainWindow.xaml 204
Примеры
Имя «ZeroToVisibilityConverter» не существует в пространстве имен "clr-namespace:AMV.Converters"
Имя "MainViewModel" не существует в пространстве имен "clr-namespace:AMV.ViewModels"
Имя "Conversation" не существует в пространстве имен "clr-namespace:AMV.Models"
Ресурс "BoolVis" имеет несовместимый тип
Ресурс "RoleMargin" может не может быть разрешено
Также:
CS1631 Невозможно получить значение в теле предложения catch
Важные детали
- ВСЕ классы (конвертеры, модели представления, модели и т. д.) объявляются как public
- Пространства имен в коде соответствуют структуре папок
- Я попробовал оба варианта:
и
Код: Выделить всё
xmlns:conv="clr-namespace:AMV.Converters"Код: Выделить всё
xmlns:conv="clr-namespace:AMV.Converters;assembly=AMV" - Проект собирается частично, но дизайнер XAML и среда выполнения жалуются.
- Ресурсы определяются (или, по крайней мере, должны быть) в ResourceDictionaries.
- Я также использую объединенные словари (MessageTemplates.xaml и т. д.)
- Чистящий раствор ()
Код: Выделить всё
dotnet clean - Пересобрать все
- Удалить bin и obj
- Перезапустить Visual Studio
- Проверить опечатки пространства имен более 10 раз
- Убедиться, что классы общедоступны
- Переместить классы между проектами
- Добавление/удаление сборка= в пространствах имен XAML
- Проверка действия сборки (страница, ресурс и т. д.)
- Проверка включения файлов в .csproj
- Воссоздание некоторых конвертеров с нуля
- Руганство (не помогло)
На данный момент я подозреваю одно из следующих:
- Странности .NET 8 + WPF
- Неработающие ссылки на проекты
- Несоответствие имени сборки (против AMV.App?)
Код: Выделить всё
AMV - XAML не видит скомпилированный код программной части
- ResourceDictionary загружается неправильно
- Что-то фундаментально нарушено в структуре проекта
Вопрос
Что может привести к тому, что XAML не видит НИКАКИХ типов из моих собственных пространств имен, даже если:
- классы существуют
- являются общедоступными
- пространства имен правильные
- сборки проекта (частично)
На данный момент я действительно не знаю, что делать с этим проектом.