38 votes

Automapper 3.0 - Ce type n'est pas pris en charge sur cette plateforme IMapperRegistry

J'ai mis à jour mon projet pour utiliser Automapper 3.0.0 et maintenant ma construction TFS n'aboutit pas. L'erreur est la suivante:

" ... System.PlatformNotSupportedException: Exception System.PlatformNotSupportedException: ce type n'est pas pris en charge sur cette plate-forme IMapperRegistry. "

Quelqu'un peut-il m'aider à résoudre ce problème? En attendant, je vais revenir à la version précédente car celle-ci semble bien fonctionner.

38voto

jni Points 341

Nous avons eu le même problème sur notre serveur de construction. MsTest semblait supprimer les DLL qu'il jugeait inutiles (remarque: cette affirmation n'est qu'une supposition éclairée). Pour résoudre ce problème, ajoutez un appel explicite à quelque chose dans AutoMapper.Net4.dll. Par exemple, avec la classe ListSourceMapper:

 var useless = new ListSourceMapper()
 

Ajouter ceci à un projet partagé par tous les autres projets nous l'a corrigé. Où mettre cette ligne de code peut varier.

28voto

Jimmy Bogard Points 8294

Assurez-vous d'ajouter une référence (ou ajouter un package NuGet de référence) dans votre application à la fois AutoMapper et la AutoMapper.Net4 assemblée dans l'application principale. Visual Studio a un problème avec la copie des références qu'il ne copie pas les références qu'il ne pense pas que l'on utilise.

Par exemple, si vous avez des projets: - Core - INTERFACE utilisateur

Et des références essentielles AutoMapper, assurez-vous d'ajouter une référence dans l'INTERFACE utilisateur ainsi que les DEUX assemblées. NuGet est ce que fait automatiquement, mais MSBuild PAS de copier toutes les références de Base de l'INTERFACE utilisateur. La façon la plus simple de résoudre ce problème est de simplement ajouter le AutoMapper paquet de référence dans l'INTERFACE utilisateur.

2voto

user1334903 Points 128

J'ai eu le même problème avec certains mstest tests d'intégration que j'ai créé.

Je vous conseille d'utiliser le DeploymentItem attribut sur votre classe de test au lieu d'une référence directe dans le code. Par exemple, c'est ce que j'ai:

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

Vous devez également ajouter une référence, comme mentionné ci-dessus, à l'aide de nuget, à automapper dans votre projet de test.

Pour résoudre ce problème, consulter le répertoire bin de votre mstest projet. Vous devriez voir les deux Automapper.dll et AutoMapper.Net4.dll si vous avez automapper référencé dans le projet. Avant l'ajout de la DemploymentItem attribut à votre classe de test, Vous ne verrez pas AutoMapper.Net4.dll dans votre TestResults[MyLatestTestRun] dossier. Mais ajouter l'attribut et vous.

MSTest ne joue pas bien avec injection...

1voto

Ross McNab Points 2995

La mise à jour vers AutoMapper 3.1.1 corrige ce problème pour moi

Update-Package AutoMapper -Version 3.1.1

0voto

D-Sect Points 148

J'ai eu le même problème à l'aide de l'Équipe de la Ville pour exécuter MSTEST et n'a trouvé aucune résolution.

Il s'avère que j'avais besoin d'utiliser le Visual Studio Test Runner.

J'ai trouvé plus d'informations dans cet article de blog.

Dans l'Équipe de la Ville 8.1 il y a une Étape de génération pour VSTest.Console De Tests.

Cela a fonctionné pour moi. Je n'ai pas besoin d'utiliser le script PowerShell dans le blog ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X