2013-08-26 1 views
38

Automapper 3.0.0을 사용하도록 프로젝트를 업데이트 했으므로 TFS 빌드가 성공하지 못했습니다.Automapper 3.0 -이 유형은이 플랫폼에서 지원되지 않습니다. IMapperRegistry

"... System.PlatformNotSupportedException : System.PlatformNotSupportedException :이 유형이 플랫폼 IMapperRegistry에서 지원되지 않습니다."이 오류는 다음과 같다

날이 문제를 해결하는 데 도움이 될 수 있습니다 사람이있다. 잠시 후 이전 버전으로 되돌릴 것입니다.

답변

28

기본 응용 프로그램의 AutoMapper 및 AutoMapper.Net4 어셈블리에 대한 참조를 추가하거나 NuGet 패키지 참조를 추가하십시오. Visual Studio에는 사용되지 않는 참조를 복사하지 않는 참조 복사에 문제가 있습니다. 예를 들어

, 당신은 사업이있는 경우 : - 코어 - UI를

그리고 코어 AutoMapper, 당신은 BOTH 어셈블리뿐만 아니라 UI에 대한 참조를 추가해야합니다 참조합니다. NuGet은이 작업을 자동으로 수행하지만 MSBuild는 Core에서 UI 로의 모든 참조를 복사하지 않습니다. 이 문제를 해결하는 가장 쉬운 방법은 UI에 AutoMapper 패키지 참조를 추가하는 것입니다.

+0

그래, AutoMapper.Net4 어셈블리에 대한 참조의 부족 것으로 보인다. 내 프로젝트는 VS2012 (디버깅 여부에 관계없이)에서 잘 실행되지만 독립 실행 형이 아닌 경우 스크립트를 실행 환경에 복사하는 데 사용되어 새로운 어셈블리 인 AutoMapper.Net4.dll을 app 폴더에 복사하는 것을 잊어 버립니다. –

+4

AutoMapper 빌드에서 두 어셈블리를 결합해야하는 것처럼 보입니다. 많은 사람들이 AutoMapper를 '서비스 계층'어셈블리에 사용하고 웹 probject에서 문제를 명시하지는 않습니다. 이것이 가능한가? 나는 'reference nazi'가별로 없지만 업스트림 종속성에 "사용되지 않는"automapper를 추가해야하는 것이 더 나은 해결책이 될 것처럼 보입니다. –

+3

저를 위해서 - Automapper를 유닛 테스트 프로젝트에 설치하고 유닛 테스트를 다시해야했습니다. HTH –

38

빌드 서버에서 동일한 문제가 발생했습니다. MsTest는 불필요한 것으로 간주되는 DLL을 제거한 것처럼 보였습니다 (참고 :이 주장은 교육을받은 추측에 불과합니다). 이 문제를 해결하려면 AutoMapper.Net4.dll의 항목에 명시 적으로 호출하십시오. 클래스 ListSourceMapper와 인스턴스의 경우 : 다른 모든 프로젝트에서 공유 프로젝트에이 추가

var useless = new ListSourceMapper() 

우리를 위해 그것을 해결했습니다. 이 코드 줄은 어디에서 다를 수 있습니다.

+0

고마워요. 나는 이것도해야만했습니다. @JimmyBogard 참고로이 데이터가 도움이됩니다. – Josh

+1

바보 같은 짓을해야만합니다. 그러나 고의적으로, 그것은 나를 위해 일했다. 감사! – demoncodemonkey

+0

필자는 이것이 불충분 한 수정이지만 모든 추가 테스트가 추가 된 후에 다시 시작하기에 동의합니다. – Colin

2

제가 만든 mstest 통합 테스트에서 동일한 문제가있었습니다.

코드의 직접 참조 대신 테스트 클래스에서 DeploymentItem 특성을 사용하는 것이 좋습니다. 테스트 프로젝트에 automapper하는 nuget를 사용하여, 위에서 언급 한 바와 같이

[TestClass] 
[DeploymentItem("Unity.config")] 
[DeploymentItem("EntityFramework.SqlServer.dll")] 
**[DeploymentItem("AutoMapper.Net4.dll")]** 
public class MyFancyIntegrationTests 
{ 

당신은 또한 참조를 추가해야합니다 예를 들어, 내가 가진 것입니다.

문제를 해결하려면 mstest 프로젝트의 bin 디렉토리를보십시오. Autoapper가 프로젝트에서 참조되는 경우 Automapper.dll과 AutoMapper.Net4.dll이 모두 표시되어야합니다. DemploymentItem 특성을 테스트 클래스에 추가하기 전에 TestMemer.Net4.dll이 TestResults [MyLatestTestRun] 폴더에 표시되지 않습니다. 그러나 속성을 추가하면됩니다.

0

MSTEST 사출 잘 재생되지 않습니다

... 나는 MSTEST을 실행하는 팀 시티를 사용하여 동일한 문제가 있었다 더 해상도를 찾을 수 없습니다.

나는 Visual Studio Test Runner을 사용해야한다고 밝혀졌습니다.

더 자세한 정보는 in this blog post입니다.

Team City 8.1에는 VSTest.Console Test를위한 빌드 단계가 있습니다.

이것은 나를 위해 일했습니다. 위의 블로그에서 PowerShell script을 사용할 필요가 없었습니다. AutoMapper 3.1.1에

1

업데이트 나를 위해이 문제를 해결

Update-Package AutoMapper -Version 3.1.1

관련 문제