我正在Windows 7 上使用AutoMapper.NET 4.0
开发应用程序。今天我从一台新的 Windows 8 机器获取源代码,构建然后运行该应用程序,它抛出了我:SVN
InvalidProgramException:公共语言运行时检测到无效程序
我重建了源代码,它在所有其他三台 Windows 7 机器上运行良好。我想这对 Windows 8 很重要。我编写了以下小型控制台应用程序。我在 Windows 8 上构建了源代码,它在 Windows 7 上运行良好,但在 Windows 8 上运行良好。所以这与 Windows 8 上的运行时有关。似乎只是枚举类型有问题,其基础类型不是默认值类型,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