Tag: dynamicproxy

System.InvalidProgramException在Microsoft安全更新MS13-004之后在MSTest中执行unit testing时

在2013年1月8日应用Microsoft安全更新http://technet.microsoft.com/en-us/security/bulletin/ms13-004后,我们已经开始在我们的构建服务器和本地的CI构建中遇到故障在我们的开发盒上运行测试。 我们得到一个System.InvalidProgramException:公共语言运行时检测到一个无效的程序 。 这仅在使用使用Castle Windsor DynamicProxy的MSTest运行测试时才会发生,尽管我不相信DynamicProxy在这里有问题。 下面将生成一个生成exception的示例代码。 [TestMethod] public void ShouldBeAbleToGenerateADynamicProxyForAnObject() { var container = new WindsorContainer(); container.Register(Component.For()); container.Register(Component.For() .Instance(new TestDependency(“Called from test framework.”)) .LifeStyle.Transient); container.Register(Component.For() .ImplementedBy() .Interceptors(InterceptorReference.ForType()) .Anywhere .LifeStyle.Transient); var service = container.Resolve(); Assert.AreEqual(“Called from test framework.”, service.MethodNumberOne()); } 这会生成一个堆栈跟踪,最终会在DynamicProxy中调用MixinData构造函数时抛出exception: Castle.DynamicProxy.MixinData..ctor(IEnumerable`1 mixinInstances)Castle.DynamicProxy.ProxyGenerationOptions.Initialize()Castle.DynamicProxy.Generators.InterfaceProxyWithTargetGenerator.GenerateCode(Type proxyTargetType,Type [] interfaces,ProxyGenerationOptions options)Castle.DynamicProxy.DefaultProxyBuilder。 CreateInterfaceProxyTypeWithTarget(Type interfaceToProxy,Type [] additionalInterfacesToProxy,Type targetType,ProxyGenerationOptions options)Castle.DynamicProxy.ProxyGenerator.CreateInterfaceProxyTypeWithTarget(Type interfaceToProxy,Type [] […]