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 属性来解决问题。
我有 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 属性来解决问题。