我从另一个WPF项目中复制了三个类,然后更改了它们的名称空间。
现在,当我运行项目时,我在“.g.cs”文件中出现错误,表示命名空间不正确。我更改了这个命名空间,但是当我再次编译并运行时,“.g.cs”文件被重新生成并被旧命名空间版本覆盖,我再次收到错误。
有哪些文件和如何从当前文件中重新生成它们而不是某些显然存在于某处的缓存?
我删除了\ bin和\ obj目录并重建但仍然出错。
答案 0 :(得分:38)
.g.cs文件是从.xaml文件生成的。您需要更改.xaml文件中的x:class =属性以匹配新的名称空间限定的类名;那么.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" ...
答案 1 :(得分:9)
另一个可能的原因是,如果你的xaml中有任何xmlns:xx
命名空间,你在更改命名空间时忽略了更新,那么这也会导致g.cs文件中的using语句无效。
答案 2 :(得分:6)
我找到了另一种解决方法,删除你的'obj'文件夹并重建。
答案 3 :(得分:3)
我在AssemblyInfo.cs中定义了XML命名空间快捷方式
[assembly: XmlnsDefinition("http://www.example.com/wpf", "MyCorp.Wpf.OldNamespace")]
旧命名空间仍然存在。 搜索我的所有* .xaml文件显然没有帮助......
修正快捷方式后,错误立即消失。
答案 4 :(得分:1)
您是否也在XAML中x:Class
的{{1}}属性中更新了该类的命名空间?
如果做不到,你试过重建项目吗?
答案 5 :(得分:0)
我遇到此问题并尝试删除obj
和bin
文件夹,但这不起作用。当我选择Project > Clean
然后Project > Build
时,它最终编译完成。我的系统上必须有一些Visual Studio缓存。