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

荒凉一梦 提交于 2019-12-05 08:30:18

问题


I updated my project to use Automapper 3.0.0 and now my TFS build is not succeeding. The error is the following:

"...System.PlatformNotSupportedException: System.PlatformNotSupportedException: This type is not supported on this platform IMapperRegistry."

Is there anyone that can help me resolve this issue. In the mean time, I am going to revert to previous version since that one seems to work fine.


回答1:


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.




回答2:


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.




回答3:


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...




回答4:


Updating to AutoMapper 3.1.1 fixed this issue for me

Update-Package AutoMapper -Version 3.1.1




回答5:


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.



来源:https://stackoverflow.com/questions/18447148/automapper-3-0-this-type-is-not-supported-on-this-platform-imapperregistry

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