Automapper 3.0 - 此平台IMapperRegistry不支持此类型

时间:2013-08-26 14:59:27

标签: automapper notsupportedexception automapper-3

我更新了我的项目以使用 Automapper 3.0.0 ,现在我的TFS版本没有成功。错误如下:

... System.PlatformNotSupportedException:System.PlatformNotSupportedException:此平台上不支持此类型IMapperRegistry。

有没有人可以帮我解决这个问题。 与此同时,我将恢复到以前的版本,因为那个似乎工作正常。

5 个答案:

答案 0 :(得分:38)

我们的构建服务器上遇到了同样的问题。 MsTest似乎删除了它认为不必要的DLL(请注意:这种说法只是一种有根据的猜测)。要修复它,请在AutoMapper.Net4.dll中添加对某些内容的显式调用。例如,使用类ListSourceMapper:

var useless = new ListSourceMapper()

将此项添加到由所有其他项目共享的项目中为我们修复它。这行代码的位置可能会有所不同。

答案 1 :(得分:28)

确保在应用程序中向主应用程序中的AutoMapper和AutoMapper.Net4程序集添加引用(或添加NuGet包引用)。 Visual Studio在复制引用时遇到问题,它不会复制它认为没有使用的引用。

例如,如果您有项目: - 核心 - 用户界面

Core引用AutoMapper,确保在UI中添加引用以及BOTH程序集。 NuGet会自动执行此操作,但MSBuild不会将所有引用从Core复制到UI。解决此问题的最简单方法是在UI中添加AutoMapper包引用。

答案 2 :(得分:2)

我在创建的一些mstest集成测试中遇到了同样的问题。

我建议在测试类中使用DeploymentItem属性,而不是在代码中使用直接引用。例如,这就是我所拥有的:

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

如上所述,您还需要使用nuget向测试项目中的automapper添加引用。

要解决此问题,请查看mstest项目的bin目录。如果在项目中引用了automapper,则应该看到Automapper.dll和AutoMapper.Net4.dll。在将DemploymentItem属性添加到测试类之前,您不会在TestResults [MyLatestTestRun]文件夹中看到AutoMapper.Net4.dll。但添加属性,你会。

MSTest与注射效果不佳...

答案 3 :(得分:1)

更新到AutoMapper 3.1.1为我解决了这个问题

Update-Package AutoMapper -Version 3.1.1

答案 4 :(得分:0)

我使用Team City运行MSTEST时遇到了同样的问题,但没有找到任何解决方案。

事实证明我需要使用Visual Studio Test Runner

我找到了更多信息in this blog post

在Team City 8.1中,有一个VSTest.Console测试的构建步骤。

这对我有用。我不需要在上面的博客中使用PowerShell script