2013-08-26 14 views
38

Zaktualizowałem mój projekt do używania Automapper 3.0.0, a teraz moja kompilacja TFS nie działa. Błąd jest następujący:Automapper 3.0 - Ten typ nie jest obsługiwany na tej platformie IMapperRegistry

... System.PlatformNotSupportedException: System.PlatformNotSupportedException: Ten typ nie jest obsługiwany na tej platformie IMapperRegistry.”

Czy jest ktoś, że może mi pomóc rozwiązać ten problem. W międzyczasie zamierzam powrócić do poprzedniej wersji, ponieważ wydaje się, że działa dobrze.

Odpowiedz

28

Upewnij się, że dodajesz odniesienie (lub dodajesz odwołanie do pakietu NuGet) w aplikacji zarówno do AutoMapera, jak i do zestawu AutoMapper.Net4 w głównej aplikacji. Visual Studio ma problem z kopiowaniem odniesień, że nie będzie kopiować odniesień, których nie sądzi, że są używane.

Na przykład, jeśli masz projekty: - Core - UI

i Core odwołuje AutoMapper, upewnij się dodać odwołanie w interfejsie użytkownika, jak również dla obu zespołów. NuGet robi to automatycznie, ale MSBuild NIE skopiuje wszystkich odniesień z Core do interfejsu użytkownika. Najprostszym sposobem rozwiązania tego problemu jest proste dodanie odwołania do pakietu AutoMapper w interfejsie użytkownika.

+0

Tak, wydaje się, że brak odniesienia do montażu AutoMapper.Net4. Mój projekt działa poprawnie w VS2012 (debugowanie lub nie), ale podczas wykonywania samodzielnego nie, nasz skrypt używany do kopiowania aplikacji do środowiska wykonawczego zapomnij skopiować nowy zespół AutoMapper.Net4.dll do folderu aplikacji. –

+4

Wydaje mi się, że oba zespoły powinny być połączone w kompilacji AutoMapper, ponieważ chciałbym zebrać wiele osób używających AutoMappera w zestawach "warstwy serwisowej", a nie w ich sieciowym projekcie, który zamanifestowałby problem. czy to możliwe? Nie jestem "referencyjnym nazi", ale potrzeba dodania "nieużywanego" automappera w zależnościach od źródeł wydaje się, że może być lepsze rozwiązanie. –

+3

Dla mnie - musiałem zainstalować pakiet Automapper do mojego projektu testu jednostkowego i moje testy jednostkowe znów działały. HTH –

38

Mieliśmy ten sam problem na naszym serwerze budowania. MsTest wydawał się usuwać biblioteki DLL uważane za niepotrzebne (uwaga: to twierdzenie jest tylko wykształconym domysłem). Aby to naprawić, dodaj jawne wywołanie do czegoś w AutoMapper.Net4.dll. Na przykład, z ListSourceMapper Klasa:

var useless = new ListSourceMapper() 

Dodając to do projektu, który jest wspólny dla wszystkich innych projektów ustalone to dla nas. Gdzie umieścić ten wiersz kodu może się różnić.

+0

Dzięki za to, musiałem to również zrobić. @JimmyBogard FYI na wypadek, gdyby te dane pomogły. – Josh

+1

Głupi, że musisz robić tego rodzaju rzeczy. Ale denerwująco, zadziałało to dla mnie. Dzięki! – demoncodemonkey

+0

Zgadzam się, że jest to lame fix, ale wszystkie moje testy zaczęły przekazywać ponownie po dodaniu tego, więc to działa. – Colin

2

Miałem ten sam problem z kilkoma utworzonymi przeze mnie testami integracji.

Polecam używanie atrybutu DeploymentItem na twojej klasie testowej zamiast bezpośredniego odniesienia w kodzie. Na przykład to, co mam:

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

Należy również dodać odwołanie, jak wspomniano powyżej, stosując Nuget, aby automapper w projekcie badawczym.

Aby rozwiązać ten problem, należy przejrzeć katalog bin twojego projektu mstest. Powinieneś zobaczyć zarówno Automapper.dll, jak i AutoMapper.Net4.dll, jeśli masz automapper, do którego się odwołujesz w projekcie. Przed dodaniem atrybutu DemploymentItem do klasy testowej, nie zobaczysz pliku AutoMapper.Net4.dll w folderze TestResults [MyLatestTestRun]. Dodaj atrybut, a ty to zrobisz.

MSTest nie gra dobrze z wtryskiem ...

0

miałem ten sam problem przy użyciu zespołu Miasto uruchomić MSTest i nie znalazł rozwiązania.

Okazuje się, że muszę użyć Visual Studio Test Runner.

Znalazłem więcej informacji in this blog post.

W Team City 8.1 jest krok budowania testów VSTest.Console.

To zadziałało dla mnie. Nie musiałem korzystać z PowerShell script na powyższym blogu.

1

Aktualizacja do AutoMapper 3.1.1 ustalony ten problem dla mnie

Update-Package AutoMapper -Version 3.1.1

Powiązane problemy