После изменения пространства имен в файлах UserControl, файлы ... g.cs получают ошибки - PullRequest
17 голосов
/ 05 июня 2009

Я скопировал три класса из другого проекта WPF, а затем изменил их пространства имен .

Теперь, когда я запускаю проект, я получаю ошибок в файлах ".g.cs" , которые говорят, что пространство имен неверно. Я изменяю это пространство имен, но при повторной компиляции и запуске файлы «.g.cs» восстанавливаются и перезаписываются старой версией пространства имен, и я снова получаю сообщение об ошибке.

Что такое файлы и как я могу сделать так, чтобы они были регенерированы из текущих файлов вместо некоторого кэша, который он где-то явно хранит?

Я удалил каталоги \ bin и \ obj и перестроил, но все равно получил ошибки.

Ответы [ 6 ]

39 голосов
/ 05 июня 2009

Файл .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" ...
9 голосов
/ 29 сентября 2012

Другая возможная причина - если у вас есть xmlns:xx пространства имен в вашем xaml, которые вы забыли обновить при изменении пространства имен, то это также приведет к неверному оператору using в файле g.cs.

6 голосов
/ 19 марта 2013

Я нашел другой способ решить эту проблему, удалив папку 'obj' и перестроив ее.

3 голосов
/ 03 мая 2016

Я определил ярлыки пространства имен XML в моем AssemblyInfo.cs

[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")]

где старое пространство имен еще присутствовало. Поиск по всем моим * .xaml файлам, очевидно, не помог…

После исправления ярлыков ошибка сразу исчезла.

1 голос
/ 05 июня 2009

Обновили ли вы пространство имен класса в атрибуте x:Class на UserControl в XAML?

Если это не удалось, вы пытались перестроить проект?

0 голосов
/ 24 марта 2018

У меня была эта проблема и я пытался удалить папки obj и bin, но это не сработало. Наконец, он скомпилирован, когда я выбрал Project > Clean, а затем Project > Build. В моей системе должен быть какой-то кэш Visual Studio.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...