Capgemini / Cauldron

C# Toolkit
MIT License
76 stars 18 forks source link

Cauldron.Interception.Fody Problem #57

Closed LaborJos closed 6 years ago

LaborJos commented 6 years ago

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 (https://github.com/Capgemini/Cauldron/commit/56307f15491e1af51d35e189e8bc60a9ff20e031). There is currently no FodyCecil 2.5.0 on nuget.org.

image image

reflection-emit commented 6 years ago

Hi,

There are some changes in Fody >= 3.0.0 ... Version 2.0 of Cauldron is not compatible with it. Please use the Cauldron.Interception.Fody 3.0.2-beta instead.

I will try my best to have a stable release this month. For the mean time, please use the beta.


Firma: Capgemini Deutschland GmbH Aufsichtsratsvorsitzender: Antonio Schnieder • Geschäftsführer: Dr. Michael Schulte (Sprecher) • Jost Förster • Dr. Peter Lempp • Dr. Volkmar Varnhagen

Amtsgericht Berlin-Charlottenburg, HRB 98814 This message contains information that may be privileged or confidential and is the property of the Capgemini Group. It is intended only for the person to whom it is addressed. If you are not the intended recipient, you are not authorized to read, print, retain, copy, disseminate, distribute, or use this message or any part thereof. If you receive this message in error, please notify the sender immediately and delete all copies of this message.

LaborJos commented 6 years ago

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 ==========

reflection-emit commented 6 years ago

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.

LaborJos commented 6 years ago

"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.

reflection-emit commented 6 years ago

The issue will be resolved in version 3.0.4 ... for now you could make Cauldron ignore the property.