我更新了我的项目以使用Automapper 3.0.0,现在我的 TFS 构建没有成功。错误如下:
“ ...System.PlatformNotSupportedException:System.PlatformNotSupportedException:此平台IMapperRegistry不支持此类型。 ”
有没有人可以帮我解决这个问题。同时,我将恢复到以前的版本,因为那个版本似乎工作正常。
我更新了我的项目以使用Automapper 3.0.0,现在我的 TFS 构建没有成功。错误如下:
“ ...System.PlatformNotSupportedException:System.PlatformNotSupportedException:此平台IMapperRegistry不支持此类型。 ”
有没有人可以帮我解决这个问题。同时,我将恢复到以前的版本,因为那个版本似乎工作正常。
我们在构建服务器上遇到了同样的问题。MsTest 似乎删除了它认为不必要的 DLL(注意:这种说法只是一个有根据的猜测)。要修复它,请在 AutoMapper.Net4.dll 中添加对某些内容的显式调用。例如,对于 ListSourceMapper 类:
var useless = new ListSourceMapper()
将此添加到由所有其他项目共享的项目中为我们修复了它。这行代码的放置位置可能会有所不同。
确保在应用程序中向主应用程序中的 AutoMapper 和 AutoMapper.Net4 程序集添加引用(或添加 NuGet 包引用)。Visual Studio 在复制引用时遇到问题,它不会复制它认为没有被使用的引用。
例如,如果您有项目: - 核心 - UI
并且 Core 引用 AutoMapper,确保在 UI 中添加对两个程序集的引用。NuGet 会自动执行此操作,但 MSBuild 不会将所有引用从 Core 复制到 UI。解决此问题的最简单方法是在 UI 中简单地添加 AutoMapper 包引用。
我创建的一些 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 在注入方面表现不佳......
更新到 AutoMapper 3.1.1 为我解决了这个问题
Update-Package AutoMapper -Version 3.1.1
我在使用 Team City 运行 MSTEST 时遇到了同样的问题,但没有找到解决办法。
事实证明,我需要使用Visual Studio Test Runner。
我在这篇博文中找到了更多信息。
在 Team City 8.1 中有一个 VSTest.Console 测试的构建步骤。
这对我有用。我不需要使用上面博客中的PowerShell 脚本。