Windows Phone 8.1 (WinRT) 上的 AutoMapper 5.1.1 MethodAccessException

AutoMapper 5.1.1 MethodAccessException on Windows Phone 8.1 (WinRT)

我有 PCL 我使用 AutoMapper 5.1.1 代码:

var mapperConfig = new MapperConfiguration(cfg =>
{
    cfg.AddProfile<TileProfile>();
    cfg.AddProfile<PictureProfile>();
    ...
});

var mapper = mapperConfig.CreateMapper();

与 WinForms 配合使用时效果很好,但是当我将我的库与 Windows Phone 8.1 (WinRT) 一起使用时,我在 MapperConfiguration 构造函数中出现异常:

System.MethodAccessException was unhandled by user code
  HResult=-2146233072
  Message=Attempt by security transparent method 'AutoMapper.Profile..ctor()' to access security critical method 'System.Collections.Concurrent.ConcurrentDictionary`2<System.__Canon,System.__Canon>..ctor()' failed.
  Source=AutoMapper
  StackTrace:
       at AutoMapper.Profile..ctor()
       at AutoMapper.Configuration.MapperConfigurationExpression..ctor()
       at AutoMapper.MapperConfiguration.Build(Action`1 configure)
       at AutoMapper.MapperConfiguration..ctor(Action`1 configure)
  InnerException: 

我还创建了空白 Windows Phone 8.1 项目以仅使用 Automapper nuget 包和此代码进行测试:

...
public MainPage()
{
    this.InitializeComponent();

    var mapperConfig = new MapperConfiguration(cfg => {});
}
...

结果相同。 有人对这个问题有经验吗?在我看来,这是 Automapper 中的一些 bug/internal 问题。谢谢

过了一段时间我找到了解决办法。这确实是 AutoMpper 和 WP8.1 的技术问题。

问题将在下一版 AutoMapper 中解决。

直到 AutoMapper 的新版本可以通过从源代码重新编译 AutoMapper 并从 AutoMapper AssemblyInfo.cs 中删除 AllowPartiallyTrustedCallers 属性来解决问题。

更多信息:https://github.com/AutoMapper/AutoMapper/issues/1685