安装VS 2012后出现System.Security.VerificationException

时间:2012-08-16 08:21:20

标签: .net

我在工作VS2010中使用,作为前进的测试我安装VS2012。

在此步骤之后,所有正确的项目在停止工作之前(已编译或仍由VS2010构建)。

十几个地方出现异常:System.Security.VerificationException。 此异常也来自.NET 3.5或.NET 4上的库。 它在XAMLs InitializeComponents等中出现异常

这是什么? 为什么安装新框架会破坏所有现有项目?

如何在不擦除VS2012和.NET 4.5的情况下解决它?

感谢您的建议。

3 个答案:

答案 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