Capgemini / Cauldron

C# Toolkit

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cauldron.Interception.Fody Problem

LaborJos opened this issue · comments

I am using Cauldron.Interception.Fody.
Problems occur after updating nuget to 2.1.0.
The Fody Version I use is v3.0.3.

Fody: The weaver assembly 'Cauldron.Interception.Fody, Version = 2.0.0.39, Culture = neutral, PublicKeyToken = null' references an out of date version of Mono.Cecil.dll. Expected strong name token of '1C-A0-91-87-7D-12-CA-03' but got '50 -CE-BF-1C-CE-B9-D0-5E '. The weaver needs to update to at least version 3.0 of FodyHelpers.

This is probably a problem with the FodyCecil version of this commit (56307f1).
There is currently no FodyCecil 2.5.0 on nuget.org.

image
image

The following error occurs when updating to the beta version.

2> Fody/Cauldron.Interception: -----------------------------------------------------------------------------
2> Fody/Cauldron.Interception: Cauldron Interception v3.0.0.3
2> Fody/Cauldron.Interception: Finding attributes took 0.0904ms
2> Fody/Cauldron.Interception: ----- Implementing decorator interceptors took 0.2049ms -----
2> Fody/Cauldron.Interception: Implementing interceptors in type VM.DAFUL.ViewModels.Pre.AppCore.BodyViewModel
2> Fody/Cauldron.Interception: Implementing interceptors in type VM.DAFUL.ViewModels.Pre.AppCore.DocumentViewModel1 2> Fody/Cauldron.Interception: ----- Implementing class wide property interceptors took 15.7087ms ----- 2> Fody/Cauldron.Interception: ----- Implementing field interceptors took 7.9735ms ----- 2> Fody/Cauldron.Interception: Suppressed - The property 'VM.DAFUL.ViewModels.Pre.IHasSourceViewModel.SourceType' is not intercepted by 'OperationSetAttribute' because of a rule. 2> Fody/Cauldron.Interception: Suppressed - The property 'VM.DAFUL.ViewModels.Pre.IHasSourceViewModel.Source' is not intercepted by 'OperationSetAttribute' because of a rule. 2> Fody/Cauldron.Interception: Suppressed - The property 'EntityFilterText' is not intercepted by 'OperationSetAttribute' because of a rule. 2> Fody/Cauldron.Interception: Suppressed - The property 'ChildrenSource' is not intercepted by 'OperationSetAttribute' because of a rule. 2> Fody/Cauldron.Interception: Suppressed - The property 'Categories' is not intercepted by 'OperationSetAttribute' because of a rule. 2> Fody/Cauldron.Interception: Suppressed - The property 'CanFiltering' is not intercepted by 'OperationSetAttribute' because of a rule. 2> Fody/Cauldron.Interception: Implementing property interceptors: DocumentViewModel1 VM.DAFUL.ViewModels.Pre.IHasSourceViewModel.SourceType Type
2> Fody/Cauldron.Interception: Implementing property interceptors: DocumentViewModel1 VM.DAFUL.ViewModels.Pre.IHasSourceViewModel.Source Object 2> Fody/Cauldron.Interception: Implementing property interceptors: DocumentViewModel1 Source TSource
2> Fody/Cauldron.Interception: Implementing property interceptors: DocumentViewModel1 SortTarget SortTarget 2> Fody/Cauldron.Interception: Implementing property interceptors: DocumentViewModel1 SortDirection SortDirection
2> Fody/Cauldron.Interception: Implementing property interceptors: DocumentViewModel1 Name String 2> Fody/Cauldron.Interception: ----- Implementing property interceptors took 638.5792ms ----- 2>MSBUILD : error : Fody: An unhandled exception occurred: 2>MSBUILD : error : Exception: 2>MSBUILD : error : Failed to execute weaver C:\Project\DAFUL\GCS_Base\DAFUL\Pre\packages\Cauldron.Interception.Fody.3.0.2-beta\Cauldron.Interception.Fody.dll 2>MSBUILD : error : Type: 2>MSBUILD : error : System.Exception 2>MSBUILD : error : StackTrace: 2>MSBUILD : error : at InnerWeaver.ExecuteWeavers() 2>MSBUILD : error : at InnerWeaver.Execute() 2>MSBUILD : error : Source: 2>MSBUILD : error : FodyIsolated 2>MSBUILD : error : TargetSite: 2>MSBUILD : error : Void ExecuteWeavers() 2>MSBUILD : error : Value cannot be null. 2>MSBUILD : error : Parameter name: parameters 2>MSBUILD : error : Type: 2>MSBUILD : error : System.ArgumentNullException 2>MSBUILD : error : StackTrace: 2>MSBUILD : error : at Cauldron.Interception.Cecilator.Coders.CoderBase.CreateParameters(Func2[] parameters)
2>MSBUILD : error : at Cauldron.Interception.Cecilator.Coders.Coder.Call(Method method, Func2[] parameters) 2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.<>c__DisplayClass44_0.<CreateSetterDelegate>b__26(Property property) 2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.<>c__DisplayClass44_0.<CreateSetterDelegate>g__CodeMe|0[T](Func2 fieldCode, Func2 propertyCode) 2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.<>c__DisplayClass44_0.<CreateSetterDelegate>b__6(Coder then) 2>MSBUILD : error : at Cauldron.Interception.Cecilator.Coders.Coder.If(Func2 booleanExpression, Func2 then) 2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.CreateSetterDelegate(Builder builder, Method setterDelegateMethod, BuilderType propertyType, Object value) 2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.CreatePropertySetterDelegate(Builder builder, PropertyBuilderInfo member, Method propertySetter) 2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.InterceptProperties(Builder builder, IEnumerable1 attributes)
2>MSBUILD : error : at Cauldron.Interception.Fody.ModuleWeaver.OnExecute()
2>MSBUILD : error : at Cauldron.Interception.Cecilator.WeaverBase.Execute()
2>MSBUILD : error : at InnerWeaver.ExecuteWeavers()
2>MSBUILD : error : Source:
2>MSBUILD : error : Cauldron.Interception.Cecilator
2>MSBUILD : error : TargetSite:
2>MSBUILD : error : System.Object[] CreateParameters(System.Func`2[Cauldron.Interception.Cecilator.Coders.Coder,System.Object][])
2>MSBUILD : error :
2> Fody: Finished Fody 762ms.
========== Build: 1 succeeded, 1 failed, 35 up-to-date, 0 skipped ==========

There is actually a bug in the property interceptor, where it might run into an exception if the property does not have a setter and a getter depending on the interceptor.
The Name property in DocumentViewModel1 might be missing a setter in this case.

"Name" has a setter.
As you said, there is a property in class that does not have a setter.

So this issue is also resolved in the next release version?
If not, please let us know the alternative.