我经常看到一个奇怪的构建错误.有时在键入一些代码后,我们会收到以下构建错误. Class 'clsX' must implement 'Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs)' for interface System.Component
Class 'clsX' must implement 'Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs)' for interface System.ComponentModel.INotifyPropertyChanged'.
和
'PropertyChanged' cannot implement 'PropertyChanged' because there is no matching event on interface 'System.ComponentModel.INotifyPropertyChanged'.
那些错误永远不应该在一起!通常我们可以忽略异常并构建解决方案,但通常这个bug会阻止我们的构建. (使用编辑和继续这很多很烦人)
我们在一个大解决方案中使用Vb.net和c#混合.
删除PropertyChanged事件并重新输入相同的代码!有时修复此问题.
题:
有没有其他人看到这个问题,并有一些建议如何预防他?
我们使用的代码生成器会导致此错误浮出水面,但只是手动编辑某些文件也会触发此异常.使用各种设置在多台计算机上发生此错误.
有人在 here讨论了同样的问题.听起来这个版本有一个问题,就是选择旧版本的二进制文件.我会按顺序尝试以下方法:>验证所有程序集引用在Visual Studio解决方案中尽可能使用项目引用.
>如果并发项目构建存在一些奇怪的文件锁定问题,请禁用构建并行化.转到工具 – >选项,项目和解决方案 – >构建并运行,然后将“parrellel项目构建的最大数量”设置为1.不是最佳解决方案,但它可能有助于缩小问题范围.
>如果锁定某个文件导致程序集无法正确重建,请禁用Hosting Process.对于C#项目,请转到“项目属性”,“调试”选项卡,然后取消选中“启用Visual Studio宿主过程”.对于VB.NET项目,您需要卸载项目,编辑项目文件,并添加< UseVSHostingProcess> false< / UseVSHostingProcess>到每个配置的PropertyGroup.同样,不是最好的解决方案,但你可能不会注意到差异.
>最后,尝试做一个Clean Build来尝试解决它发生的问题(我知道这不是一个修复,但它很容易做到),也是Rebuild may be slightly different than Clean + Build所以如果前者不起作用的话尝试后者.