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

38

我将我的项目升级到使用Automapper 3.0.0,现在我的TFS构建未成功。错误如下:

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

有没有人能帮助我解决这个问题。 同时,我将回滚到之前的版本,因为那个版本似乎工作正常。

5个回答

38
我们的构建服务器遇到了同样的问题。看起来MsTest会删除它认为不必要的DLL(注意:这个说法只是一个有根据的猜测)。为了解决这个问题,需要在AutoMapper.Net4.dll中显式调用一些内容。例如,使用ListSourceMapper类:
var useless = new ListSourceMapper()

将这段代码添加到所有项目共享的项目中,对我们来说解决了问题。放置这行代码的位置可能有所不同。


谢谢,我也需要这样做。@JimmyBogard,如果这些数据有用的话,请知悉。 - Josh
1
真是愚蠢,你不得不做这种事情。但令人恼火的是,它对我起作用了。谢谢! - demoncodemonkey
我同意这是一个简陋的修复方法,但在添加了它之后,我的所有测试都开始通过了,所以它可行。 - Colin

28

请确保在应用程序中添加对AutoMapper和AutoMapper.Net4程序集的引用(或添加NuGet软件包引用)。 Visual Studio有一个问题,它不会复制它认为没有使用的引用。

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

并且核心引用了AutoMapper,请确保在UI中也添加对这两个程序集的引用。 NuGet会自动执行此操作,但是MSBuild将不会将所有引用从Core复制到UI。最简单的方法是在UI中添加AutoMapper软件包引用。


是的,似乎缺少对AutoMapper.Net4程序集的引用。我的项目在VS2012中执行良好(调试或不调试),但在独立执行时却不行,我们的脚本用于将应用程序复制到执行环境中,忘记将新的AutoMapper.Net4.dll程序集复制到应用程序文件夹中。 - David Oliván
4
在我看来,这似乎应该将这两个程序集合并到 AutoMapper 构建中,因为我想许多人在“服务层”程序集中使用 AutoMapper 而不是在 Web 项目中使用,这会导致问题。这可行吗?我不太在意“引用纳粹”,但需要在上游依赖项中添加未使用的 AutoMapper 看起来可能有更好的解决方案。 - John Culviner
3
对我而言,我需要在我的单元测试项目中安装Automapper包,这样我的单元测试就能再次工作了。希望对你有所帮助。 - Pure.Krome
2
@jimmy-bogard,使用此方法仍然无法通过MsTest测试。我不得不使用其他答案中的显式引用来使MsTest正常工作。 - CodeMonkeyKing
使用 AM 3.1.1 版本时,我在 R# 测试运行器和 MS Test Explorer 中仍然遇到了单元测试问题。删除 *.sln.DotSettings.user 和 *.suo 可以解决这个问题。 - Martijn B

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两个文件。在将DeploymentItem属性添加到你的测试类之前,你不会在TestResults[MyLatestTestRun]文件夹中看到AutoMapper.Net4.dll。但是添加属性后,你就会看到它了。
MSTest与注入不兼容...

1

对我来说,升级到AutoMapper 3.1.1解决了这个问题。

Update-Package AutoMapper -Version 3.1.1


0

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

后来发现我需要使用Visual Studio测试运行器

我在这篇博客文章中找到了更多信息。

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

这对我很有效。我不需要使用上面博客中的PowerShell脚本


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接