【问题标题】:Automapper 3.0 - This type is not supported on this platform IMapperRegistryAutomapper 3.0 - 此平台不支持此类型 IMapperRegistry
【发布时间】:2013-08-29 02:54:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: automapper notsupportedexception automapper-3


    【解决方案1】:

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

    var useless = new ListSourceMapper()
    

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

    【讨论】:

    • 谢谢你,我也必须这样做。 @JimmyBogard 仅供参考,以防这些数据有帮助。
    • 愚蠢的是你必须做这种事情。但令人讨厌的是,它对我有用。谢谢!
    • 我同意这是一个蹩脚的修复,但我所有的测试在添加后又开始通过,所以它可以工作。
    【解决方案2】:

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

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

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

    【讨论】:

    • 是的,似乎缺少对 AutoMapper.Net4 程序集的引用。我的项目在 VS2012 中运行良好(无论是否调试),但是当不独立执行时,我们用于将应用程序复制到执行环境的脚本忘记将新程序集 AutoMapper.Net4.dll 复制到应用程序文件夹。
    • 在我看来,这两个程序集应该在 AutoMapper 构建中组合,因为我会收集很多人在“服务层”程序集中使用 AutoMapper,而不是在他们的 Web probject 中使用,这会显示问题。这可能吗?我不是一个“参考纳粹”,但需要在上游依赖项中添加“未使用”的自动映射器似乎有更好的解决方案。
    • 对我来说 - 我必须将 Automapper 安装到我的单元测试项目中,并且我的单元测试再次工作。 HTH
    • @jimmy-bogard MsTest 仍然使用此方法失败。我不得不在另一个答案中使用显式引用来使 MsTest 正常运行。
    • 使用 AM 3.1.1,我在 R# testrunner 和 MS Test Explorer 中的单元测试中仍然存在问题。删除 *.sln.DotSettings.user 和 *.suo 修复它。
    【解决方案3】:

    我在创建的一些 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 在注入方面表现不佳...

    【讨论】:

      【解决方案4】:

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

      Update-Package AutoMapper -Version 3.1.1

      【讨论】:

        【解决方案5】:

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

        原来我需要使用Visual Studio Test Runner

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-29
          • 1970-01-01
          • 1970-01-01
          • 2021-01-05
          相关资源
          最近更新 更多