2013-08-02 46 views
0

我刚刚安装PostSharp 3.0.32.0例外,进入我的.NET 4.5的WPF解决方案,而我得到以下异常:PostSharp与Caliburn.Micro投掷构建

Error 13 Unhandled exception (3.0.32.0, 32 bit, CLR 4.5, Release): PostSharp.Sdk.CodeModel.BindingException: Cannot find a method named 'NotifyOfPropertyChange' with signature '(string) : void' in scope 'Caliburn.Micro.Conductor`1::Collection::OneActive' (module = 'Caliburn.Micro.dll'). 
    at PostSharp.Sdk.CodeModel.Collections.MethodDefDeclarationCollection.GetMethod(String name, IMethodSignature signature, BindingOptions bindingOptions) 
    at PostSharp.Sdk.CodeModel.MethodRefDeclaration.GetMethodDefinition(BindingOptions bindingOptions) 
    at PostSharp.Sdk.Extensibility.Tasks.IndexGenericInstancesTask.Execute() 
    at PostSharp.Sdk.Extensibility.Project.ExecutePhase(String phase) 
    at PostSharp.Sdk.Extensibility.Project.Execute() 
    at PostSharp.Hosting.PostSharpObject.ExecuteProjects() 
    at PostSharp.Hosting.PostSharpObject.InvokeProject(ProjectInvocation projectInvocation) C:\Projects\nextgen\NextGen.Client\POSTSHARP NextGen.Client 

我们正在使用Caliburn.Micro 1.5.2与Autofac。我们也使用PropertyChanged.Fody和Validar.Fody。

我已经创建了一些基本的方面并应用了它们,但之后又删除了它们。除非我在我的WPF项目上禁用PostSharp,否则会出现该错误。

我试图复制它在一个简单的示例项目中创建Caliburn.Micro.Start(修改只是稍微使用OneActive指挥),PostSharp和PropertyChanged.Fody安装,但无济于事 - 建立没有问题。

有没有人跑过这个问题?

干杯,

安德鲁

+0

如果禁用fody,是否会发生同样的错误? – Simon

+0

如果我删除PropertyChanged weaver,问题就会消失。但是,在我的示例项目中,我已将PropertyChanged weaver与PostSharp一起启用,并且不会遇到同样的问题。 –

+0

对不起,我没有时间去为你追逐一个repro Simon - 在我的WPF项目中有一些特定的东西导致它,但是我的基本repro不会触发相同的行为。 –

回答

0

我打算通过在自己的程序集中隔离PostSharp代码来解决这个问题。

1

弄清楚为什么postsharp正在寻找在首位的NotifyPropertyChanged方法。富迪应该是那样做的人。您是否配置了PostSharp以执行NotifyPropertyChanged实现以及Fody?

我的猜测是问题在于使用2个IL重写者,他们并没有在一起玩。我将删除PostSharp并仅使用Fody。

+0

没有,postharp的NPC模块只有'终极版',我使用的是免费版。 Fody只意味着我需要使用Mono.Cecil自己重写IL,这比使用PostSharp编写简单的方面要花费更多的时间。 –

+0

请注意,在星期一免费版的行为就像专业版https://twitter.com/gfraiteur/status/207722639383470080 – Simon