.net FluentValidation 3.4.6破坏运行时验证异常

.net FluentValidation 3.4.6破坏运行时验证异常,.net,fluentvalidation,verificationexception,.net,Fluentvalidation,Verificationexception,我使用的是FluentValidation 3.4.6,我项目的目标框架是.NET4。我已经彻底检查了我的解决方案,以确保没有对FluentValidation旧版本的引用 我相信这个版本的FluentValidation解决了.NET4.5中引入的反射错误,但是我仍然得到了一个VerificationException,如下所述 此时将引发VerificationException: MyValidator : AbstractValidator<MyObj> ctor {

我使用的是FluentValidation 3.4.6,我项目的目标框架是.NET4。我已经彻底检查了我的解决方案,以确保没有对FluentValidation旧版本的引用

我相信这个版本的FluentValidation解决了.NET4.5中引入的反射错误,但是我仍然得到了一个VerificationException,如下所述

此时将引发VerificationException:

MyValidator : AbstractValidator<MyObj>

ctor {
     RuleFor(x => x.SomeProperty).Equal(true);
}

at FluentValidation.Resources.LocalizedStringSource.CreateFromExpression(Expression`1 expression, IResourceAccessorBuilder resourceProviderSelectionStrategy) in c:\projects\FluentValidation\src\FluentValidation\Resources\LocalizedStringSource.cs:line 66
at FluentValidation.Validators.PropertyValidator..ctor(Expression`1 errorMessageResourceSelector) in c:\projects\FluentValidation\src\FluentValidation\Validators\PropertyValidator.cs:line 46
at FluentValidation.Validators.EqualValidator..ctor(Object valueToCompare, IEqualityComparer comparer) in c:\projects\FluentValidation\src\FluentValidation\Validators\EqualValidator.cs:line 37
at FluentValidation.DefaultValidatorExtensions.Equal[T,TProperty](IRuleBuilder`2 ruleBuilder, TProperty toCompare, IEqualityComparer comparer) in c:\projects\FluentValidation\src\FluentValidation\DefaultValidatorExtensions.cs:line 143
at MyValidator..ctor() in MyValidator.cs:line 22
MyValidator:AbstractValidator
执行器{
RuleFor(x=>x.SomeProperty).Equal(true);
}
在c:\projects\FluentValidation\src\FluentValidation\Resources\LocalizedStringSource.CreateFromExpression(表达式`1 Expression,IResourceAccessorBuilder resourceProviderSelectionStrategy)中的FluentValidation.Resources.LocalizedStringSource
在c:\projects\FluentValidation\src\FluentValidation\Validators\PropertyValidator.cs中的fluentvalidator.Validators.PropertyValidator..ctor(表达式`1 errorMessageResourceSelector):46行
在c:\projects\FluentValidation\src\FluentValidation\Validators\EqualValidator.cs中的FluentValidator..ctor(对象值比较,IEqualityComparer比较程序)处:第37行
在c:\projects\FluentValidation\src\FluentValidation\DefaultValidatorExtensions.Equal[T,TProperty](IRuleBuilder`2 ruleBuilder,TProperty to compare,IEqualityComparer comparer comparer)的c:\projects\FluentValidation\DefaultValidatorExtensions.cs:第143行
在MyValidator.cs中的MyValidator..ctor()处:第22行

我能够在调试器外部运行,并最终将其缩小到内部跟踪。如果您在3.4.6中遇到此问题,请禁用intelli trace。

我将Intellitrace设置为“仅Intellitrace事件”,这为我在VS2010中防止了此问题。

我似乎还通过将
FluentValidation*
添加到Intellitrace设置中排除的模块列表中来解决此问题(同时保留事件和调用信息)。这是在使用FV.NET的3.4.6版。

我们也有这样一个“破坏运行时验证异常的稳定性”,事实上FluentValidation 3.4.6包含一个修复程序,因此它在理论上应该可以工作。您应该仔细检查是否确实引用了正确的DLL…相信我已经这样做了,packages.config、*.csproj从顶级解决方案文件夹中删除了所有FluentValidation.dll。。。还是不走运