我更新了我的项目以使用Automapper 3.0.0,现在我的TFS构建没有成功。错误如下:
"…System.PlatformNotSupportedException:System.PlatformNotSupported Exception:此平台IMapperRegistry不支持此类型。"
有谁能帮我解决这个问题吗。同时,我将恢复到以前的版本,因为那个版本似乎很好用。
我们在构建服务器上遇到了同样的问题。MsTest似乎删除了它认为不必要的DLL(注意:这只是一个有根据的猜测)。要修复它,请在AutoMapper.Net4.dll中添加一个显式调用。例如,使用类ListSourceMapper:
var useless = new ListSourceMapper()
将此添加到所有其他项目共享的项目中为我们修复了它。将这行代码放在哪里可能会有所不同。
确保在应用程序中向主应用程序中的AutoMapper和AutoMapper.Net4程序集添加引用(或添加NuGet包引用)。Visual Studio在复制引用时遇到问题,它不会复制它认为没有使用的引用。
例如,如果您有项目:-核心-UI
并且Core引用AutoMapper,请确保在UI中也向BOTH程序集添加引用。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时遇到了同样的问题,但没有找到解决方案。
事实证明,我需要使用VisualStudioTestRunner。
我在这篇博客文章中找到了更多信息。
在TeamCity8.1中,有一个VSTest.Console测试的构建步骤。
这对我很有效。我不需要在上面的博客中使用PowerShell脚本。