Automapper 3.0 - This type is not supported on this platform IMapperRegistry

我的梦境 提交于 2019-12-03 22:03:16
jni

We had the same issue on our build server. MsTest seemed to remove DLLs it deemed unnecessary (note : this claim is only an educated guess). To fix it, add an explicit call to something in AutoMapper.Net4.dll. For instance, with the class ListSourceMapper :

var useless = new ListSourceMapper()

Adding this to a project which is shared by all other projects fixed it for us. Where to put this line of code may vary.

Make sure you add a reference (or add a NuGet package reference) in your application to both AutoMapper and the AutoMapper.Net4 assembly in your main application. Visual Studio has a problem with copying references that it won't copy references that it doesn't think are being used.

For example, if you have projects: - Core - UI

And Core references AutoMapper, make sure you add a reference in UI as well to BOTH assemblies. NuGet does this automatically, but MSBuild will NOT copy all references from Core to UI. The easiest way to fix this is to simply add the AutoMapper package reference in UI.

I had the same issue with some mstest integration tests I created.

I would recommend using the DeploymentItem attribute on your test class instead of a direct reference in code. For example, this is what I have:

[TestClass]
[DeploymentItem("Unity.config")]
[DeploymentItem("EntityFramework.SqlServer.dll")]
**[DeploymentItem("AutoMapper.Net4.dll")]**
public class MyFancyIntegrationTests
{

You also need to add a reference, as mentioned above, using nuget, to automapper in your test project.

To troubleshoot this, view the bin directory of your mstest project. You should see both Automapper.dll and AutoMapper.Net4.dll if you have automapper referenced in the project. Prior to adding the DemploymentItem attribute to your test class, You won't see AutoMapper.Net4.dll in your TestResults[MyLatestTestRun] folder. But add the attribute and you will.

MSTest does not play well with injection...

Updating to AutoMapper 3.1.1 fixed this issue for me

Update-Package AutoMapper -Version 3.1.1

I had the same problem using Team City to run MSTEST and found no resolution.

It turns out that I needed to use the Visual Studio Test Runner.

I found more information in this blog post.

In Team City 8.1 there is a Build Step for VSTest.Console Tests.

This worked for me. I did not need to use the PowerShell script in the blog above.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!