После изменения пространства имен в файлах UserControl файлы g.cs получают ошибки
Я скопировал три класса из другого проекта WPF, а затем изменил их пространства имен.
Теперь, когда я запускаю проект, я получаю ошибки в файлах .g.cs, которые говорят, что пространство имен неверно. Я меняю это пространство имен, но когда я компилирую и запускаю снова, файлы ".g.cs" восстанавливаются и перезаписываются старой версией пространства имен, и я снова получаю ошибку.
Каковы файлы и , как я могу заставить их быть регенерированными из текущих файлов вместо некоторого кеша, который, очевидно, где-то находится?
Я удалил каталоги \bin и\obj и перестроил, но все равно получаю ошибки.
Ответы
Ответ 1
Файл .g.cs создается из файла .xaml. Вам необходимо изменить атрибут x: class= в вашем .xaml файле, чтобы он соответствовал новому классу класса с именем пространства имен; то при следующем компиляции корректно генерируется .g.cs. (Не изменяйте вручную файл .g.cs - вы только скомпрометируете себя.)
Например, если вы ранее имели это в своем .cs:
namespace Foo {
class Bar { ...
и это в вашем .xaml:
<UserControl x:Class="Foo.Bar" ...
И затем вы изменили пространство имен:
namespace Baz {
class Bar { ...
Затем вам нужно будет изменить ваш .xaml файл на:
<UserControl x:Class="Baz.Bar" ...
Ответ 2
Я вижу, что это старый поток, но поскольку пользователи все еще иногда сталкиваются с этой проблемой, я подумал, что я бы выбрал еще одну возможную причину. Если у вас есть xmlns: xx пространства имен в вашем xaml, который вы пренебрегли обновлением при смене пространства имен, это также приведет к недопустимому использованию инструкции в файле g.cs.
Ответ 3
Я нашел другой способ решить эту проблему, удалив папку "obj" и перестроив ее.
Ответ 4
Я определил ярлыки пространства имен XML в моей AssemblyInfo.cs
[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")]
где старое пространство имен все еще присутствовало.
Поиск по всем моим *.xaml файлам явно не помог...
После исправления ярлыков ошибка немедленно исчезла.
Ответ 5
Вы обновили пространство имен класса в атрибуте x:Class
на UserControl
в XAML тоже?
В противном случае вы попытались перестроить проект?