38

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

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

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

4

5 回答 5

38

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

var useless = new ListSourceMapper()

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

于 2013-08-28T13:58:58.390 回答
28

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

例如,如果您有项目: - 核心 - UI

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

于 2013-08-26T17:35:52.097 回答
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 在注入方面表现不佳......

于 2013-10-31T22:25:30.737 回答
1

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

Update-Package AutoMapper -Version 3.1.1

于 2014-03-21T09:20:42.937 回答
0

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

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

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

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

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

于 2014-02-19T21:47:53.220 回答