2012-10-12 8 views
2

FluentValidation 3.4.6을 사용하고 있습니다. 내 프로젝트의 대상 프레임 워크는 .net 4입니다. FluentValidation의 이전 버전에 대한 참조가 없는지 확인하기 위해 솔루션을 철저히 검사했습니다. .FluentValidation 3.4.6 런타임 VerificationException을 불안정하게합니다.

: http://elegantcode.com/2012/08/23/net-4-5-operation-could-destabilize-the-runtime-yikes/

대한 VerificationException이 시점에서 발생합니다 여기에 설명 된대로

그러나 나는 내가 여전히 대한 VerificationException 받고 있어요, FluentValidation이 버전은 해결 방법 .NET 4.5에 도입 된 반사 버그를 가지고 있다고 생각합니다

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 
+0

우리는 또한이 "Destabilize the runtime VerificationException"을 가지며 사실 FluentValidation 3.4.6에는 수정본이 포함되어 있으므로 이론적으로 작동해야합니다. 당신은 정말로 정확한 dll을 참조하는지 다시 한번 확인해야합니다 ... – nemesv

+0

내가 해낸 것을 package.config, * .csproj라고하고, 최상위 솔루션 폴더에서 FluentValidation.dll을 모두 삭제했습니다. 여전히 운이 없음 – KierenH

답변

1

디버거 외부에서 실행할 수 있었고 결국 인텔리 트레이스로 범위를 좁혔습니다. 3.4.6에서이 문제가 발생하면 intelli-trace를 비활성화하십시오.

2

"IntelliTrace 이벤트 전용"으로 Intellitrace를 설정 했으므로 VS2010에서이 문제를 방지 할 수 있습니다.

+0

수정 VS2012에서도 마찬가지입니다. – Mrchief

0

또한이 문제를 해결하기 위해 intellitrace 설정에서 제외 된 모듈 목록에 FluentValidation*을 추가하는 것으로 보였습니다 (이벤트 및 호출 정보를 모두 유지하면서). 이것은 FV.NET 버전 3.4.6을 사용하고있었습니다.