PostSharp с Caliburn.Micro выдает исключение при сборке

Я только что установил PostSharp 3.0.32.0 в свое решение .net 4.5 WPF и получаю следующее исключение:

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.

Я создал некоторые базовые аспекты и применил их, но с тех пор удалил их. Ошибка появляется, если я не отключу PostSharp в своем проекте WPF.

Я попытался воспроизвести его в простом примере проекта, созданном с помощью Caliburn.Micro.Start (лишь слегка измененного для использования проводника OneActive), установленных PostSharp и PropertyChanged.Fody, но безрезультатно — он строится без проблем.

Кто-нибудь сталкивался с этой проблемой раньше?

Ваше здоровье,

Андрей


person Andrew Best    schedule 02.08.2013    source источник
comment
Возникает ли такая же ошибка, если вы отключите fody?   -  person Simon    schedule 02.08.2013
comment
Если я удалю ткач PropertyChanged, проблема исчезнет. Однако в моем примере проекта у меня включена функция propertyChanged weaver вместе с PostSharp, и у меня не возникает такой проблемы.   -  person Andrew Best    schedule 02.08.2013
comment
Извините, у меня нет времени искать репродукцию для вас, Саймон - в моем проекте WPF есть что-то конкретное, что вызывает это, но моя базовая репродукция не вызывает такого же поведения.   -  person Andrew Best    schedule 02.08.2013
comment
в своем отдельном проекте вы использовали проводник‹T›?   -  person Simon    schedule 02.08.2013
comment
Да, я построил ту же базовую настройку, что и проблемный проект.   -  person Andrew Best    schedule 02.08.2013
comment
Вот пример проекта   -  person Andrew Best    schedule 02.08.2013
comment
Андрей. этот проект предназначен для воспроизведения проблемы. на моей машине компилируется.   -  person Simon    schedule 02.08.2013
comment
Нет, извини, Саймон, это проект, в котором я пытался воспроизвести проблему, но не смог, я просто предоставил его для полноты - это та же базовая установка, что и проблемный проект. На данный момент я использую Fody в своем клиентском проекте WPF и PostSharp в отдельном проекте библиотеки классов в одном и том же решении - их изоляция друг от друга решила мою проблему на данный момент.   -  person Andrew Best    schedule 05.08.2013
comment
Если есть что-то, что вы хотели бы от проблемного проекта, я был бы рад предоставить это, я просто не могу предоставить сам проект.   -  person Andrew Best    schedule 05.08.2013
comment
это только по понедельникам бывает? twitter.com/gfraiteur/status/207722639383470080   -  person Simon    schedule 05.08.2013
comment
Я могу подтвердить, что это происходит по понедельникам и средам. Я должен буду вернуться к вам насчет остальных дней, хотя.   -  person Andrew Best    schedule 07.08.2013


Ответы (2)


Выясните, почему postsharp ищет метод NotifyPropertyChanged в первую очередь. Фоди должен быть тем, кто делает это. Вы настроили PostSharp для реализации NotifyPropertyChanged так же, как и для Fody?

Я предполагаю, что проблема заключается в использовании двух переписчиков IL, и они не работают вместе. Я бы удалил PostSharp и использовал только Fody.

person Robert Wagner    schedule 02.08.2013
comment
Нет, модуль NPC postsharp поставляется только с «максимальной» версией, я использую бесплатную версию. Фоди имеет в виду только то, что мне нужно самому переписать IL с помощью Mono.Cecil, что займет гораздо больше времени, чем написание простых аспектов с помощью PostSharp. - person Andrew Best; 02.08.2013
comment
обратите внимание, что по понедельникам бесплатная версия работает так же, как и профессиональная версия > - person Simon; 05.08.2013

В данном случае я собираюсь решить проблему, изолировав код PostSharp в собственной сборке.

person Andrew Best    schedule 02.08.2013