我有类似的代码
using FluentValidation;
public class FreeformValidator : AbstractValidator<Freeform>
{
public FreeformValidator() // <-- VerificationException on this line
{
RuleFor(ff => ff.Text).Must(BeLongEnough).WithMessage("Must be at least {0} characters.", ff => ff.MinLength);
}
}
由单元测试运行。在针对 .Net 4 的 VS 2010 下,单元测试运行良好。更新到 VS 2012 并以 .Net 4.5 为目标后,单元测试抛出
验证异常
操作可能会破坏运行时的稳定性。
异常对话框建议
确保您的应用程序没有加载类库的两个冲突版本。
AbstractValidator来自 FluentValidation。正在测试的项目和单元测试项目都参考 FluentValidation 3.3.1.0。这两个项目现在也以 .Net 4.5 为目标。
这两个项目都以 AnyCPU 为目标。该代码在 Windows 7 64 位上运行。
更新
这是单元测试代码
[TestMethod]
public void FreeformValidation_MinLength()
{
Freeform fa = new Freeform();
fa.Required = true;
fa.MinLength = 3;
fa.MaxLength = 10;
FreeformValidator fv = new FreeformValidator();
fa.Text = "AB";
ValidationResult results = fv.Validate(fa);
Assert.AreEqual(1, results.Errors.Count, "Expected MinLength to fail.");
Assert.AreEqual("Must be at least 3 characters.", results.Errors[0].ErrorMessage, "Expected MinLength to fail.");
}
更新 2
可能相关
安装 VS 2012 后的 System.Security.VerificationException
但是,将配置切换到 x86 并重新运行测试会导致相同的 Exception。
似乎不适用的类似问题
运行带有附加调试器的测试时,如何防止出现 VerificationException?
如果没有调试器,单元测试会以同样的方式失败,并且将 FluentValidator 添加到 IntelliTrace 排除列表没有帮助。
我没有强命名程序集,也没有 AllowPartiallyTrustedCallers 属性。
更新 3
PEVerify 发现测试项目的 DLL 或被测试的 DLL 都没有问题。