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