Подтвердить что ты не робот

Automapper 3.0 - этот тип не поддерживается на этой платформе IMapperRegistry

Я обновил свой проект, чтобы использовать Automapper 3.0.0, и теперь моя сборка TFS не преуспевает. Ошибка следующая:

"... System.PlatformNotSupportedException: System.PlatformNotSupportedException: этот тип не поддерживается на этой платформе IMapperRegistry."

Есть ли кто-нибудь, кто может помочь мне решить эту проблему. Между тем, я собираюсь вернуться к предыдущей версии, так как, похоже, она работает нормально.

4b9b3361

Ответ 1

У нас была такая же проблема на нашем сервере сборки. Кажется, MsTest удаляет библиотеки DLL, которые считаются ненужными (примечание: это утверждение - только образованное предположение). Чтобы исправить это, добавьте явный вызов в файл AutoMapper.Net4.dll. Например, с классом ListSourceMapper:

var useless = new ListSourceMapper()

Добавление этого в проект, который используется всеми другими проектами, исправил его для нас. Где поместить эту строку кода может отличаться.

Ответ 2

Убедитесь, что вы добавили ссылку (или добавили ссылку на пакет NuGet) в приложение как для AutoMapper, так и для сборки AutoMapper.Net4 в своем основном приложении. У Visual Studio есть проблема с копированием ссылок, что он не будет копировать ссылки, которые, по его мнению, не используются.

Например, если у вас есть проекты: - Ядро - UI

И основные ссылки AutoMapper, убедитесь, что вы добавили ссылку в пользовательский интерфейс, а также в сборки BOTH. NuGet делает это автоматически, но MSBuild НЕ будет копировать все ссылки от Core to UI. Самый простой способ исправить это - просто добавить ссылку на пакет AutoMapper в пользовательском интерфейсе.

Ответ 3

У меня была такая же проблема с некоторыми тестами интеграции mstest, которые я создал.

Я бы рекомендовал использовать атрибут DeploymentItem в вашем тестовом классе вместо прямой ссылки в коде. Например, это то, что у меня есть:

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

Вам также необходимо добавить ссылку, как указано выше, с помощью nuget, чтобы автоматизировать в вашем тестовом проекте.

Чтобы устранить эту проблему, просмотрите каталог bin вашего проекта mstest. Вы должны увидеть как Automapper.dll, так и AutoMapper.Net4.dll, если у вас есть автопарпер, упомянутый в проекте. Перед добавлением атрибута DemploymentItem в ваш тестовый класс вы не увидите AutoMapper.Net4.dll в своей папке TestResults [MyLatestTestRun]. Но добавьте атрибут, и вы это сделаете.

MSTest не очень хорошо работает с инъекцией...

Ответ 4

Обновление для AutoMapper 3.1.1 исправило эту проблему для меня

Update-Package AutoMapper -Version 3.1.1

Ответ 5

У меня была такая же проблема, когда Team City запускал MSTEST и не нашел разрешения.

Оказывается, мне нужно было использовать Visual Studio Test Runner.

Я нашел дополнительную информацию в этом сообщении в блоге.

В Team City 8.1 есть этап сборки для тестов VSTest.Console.

Это сработало для меня. Мне не нужно было использовать PowerShell script в блоге выше.