我在工作VS2010中使用,作为前进的测试我安装VS2012。
在此步骤之后,所有正确的项目在停止工作之前(已编译或仍由VS2010构建)。
十几个地方出现异常:System.Security.VerificationException。 此异常也来自.NET 3.5或.NET 4上的库。 它在XAMLs InitializeComponents等中出现异常
这是什么? 为什么安装新框架会破坏所有现有项目?
如何在不擦除VS2012和.NET 4.5的情况下解决它?
感谢您的建议。
答案 0 :(得分:1)
问题的根源(仅影响32位)是,如果构造函数在调用base / this构造函数之前有任何程序流(在IL级别),则代码将不正确地验证失败。 WPF中使用了一些相对常见的类型,它们在调用base / this的参数中有?:
个操作,因此您根本无法使用这些特定的构造函数。我只看到它在Lazy和ObservableCollection上失败了。这两种类型都有一些不包含流的构造函数,因此解决方法是更改构造函数调用以使用无参数版本。另一种情况(使用FluentValidation显示的情况)是C#编译器在构造函数中有lambda时插入流。解决这个问题的方法是改变lambda的实际方法。
如果我的解释并不明显,我们(CLR团队)会意识到这个问题,并且正在积极研究解决方案。
答案 1 :(得分:0)
我得到了同样的例外,并将其缩小为使用FluentValidation的单元测试。事实证明,我的测试项目构建为x86,需要x64。
要解决此问题,请右键单击您的项目,然后选择“属性”。在左侧窗格中选择" Build"并设置"平台目标:"到"任何CPU"
答案 2 :(得分:0)
您是否使用FluentValidation.dll的引用?如果是,请看看我昨天创建的这篇文章。这有助于VerificationException problem