移动到Windows 8获取“InvalidProgramException:公共语言运行时检测到无效的程序”

时间:2012-09-03 14:08:59

标签: .net windows windows-7 windows-8

我正在Windows 7上使用AutoMapper开发.NET 4.0应用程序。今天我从SVN获取源代码到新的Windows 8计算机,构建然后运行应用程序,它引发了我:

  

InvalidProgramException:公共语言运行时检测到无效   程序

我重建源代码,它在所有其他三台Windows 7机器上运行良好。我想这对Windows 8很重要。我编写了以下小型控制台应用程序。我在Windows 8上构建了源代码,它在Windows 7上运行良好,但在Windows 8上运行不佳。所以它是关于Windows 8上运行时的东西。看起来只有一个错误的枚举类型,其底层类型不是默认值type,Int32。

谷歌搜索后,人们说这是关于JIT编译器,但我仍然不知道。我在Windows 7和Windows 8上都使用VS 2010目标.NET 4.0。在Windows 8中是否有任何更改?我正在阅读AutoMapper的源代码。我认为C#或CLI确实有问题。希望你能给出一些线索。感谢。

class Program
{
    enum PriorityModel  { High, Normal, Low }
    enum PriorityDto { High, Normal, Low }

    enum PriorityModel2 : byte { High, Normal, Low }
    enum PriorityDto2 : byte { High, Normal, Low }

    enum PriorityModel3 : short { High, Normal, Low }
    enum PriorityDto3 : short { High, Normal, Low }


    static void Main(string[] args)
    {
        Mapper.CreateMap<PriorityModel, PriorityDto>();  // OK
        Mapper.CreateMap<PriorityModel2, PriorityDto2>();  // [InvalidProgramException: Common Language Runtime detected an invalid program.]
        Mapper.CreateMap<PriorityModel3, PriorityDto3>();  // [InvalidProgramException: Common Language Runtime detected an invalid program.]

        Console.Read();
    }
}

异常堆栈跟踪:

[InvalidProgramException: Common Language Runtime detected an invalid program.]
   System.Runtime.CompilerServices.RuntimeHelpers._CompileMethod(IRuntimeMethodInfo method) +0
   System.Reflection.Emit.DynamicMethod.CreateDelegate(Type delegateType, Object target) +43
   System.Linq.Expressions.Compiler.LambdaCompiler.CreateDelegate() +81
   System.Linq.Expressions.Compiler.LambdaCompiler.Compile(LambdaExpression lambda, DebugInfoGenerator debugInfoGenerator) +205
   AutoMapper.DelegateFactory.CreateGet(FieldInfo field) +156
   AutoMapper.Internal.FieldGetter..ctor(FieldInfo fieldInfo) +60
   AutoMapper.ReflectionHelper.ToMemberAccessor(MemberInfo accessorCandidate) +124
   AutoMapper.TypeMapFactory.CreateTypeMap(Type sourceType, Type destinationType, IMappingOptions options, MemberList memberList) +269
   AutoMapper.ConfigurationStore.CreateTypeMap(Type source, Type destination, String profileName, MemberList memberList) +86
   AutoMapper.ConfigurationStore.CreateMap(String profileName, MemberList memberList) +45
   AutoMapper.ConfigurationStore.CreateMap() +13
   AutoMapper.Mapper.CreateMap() +51

0 个答案:

没有答案