Automapper 3.0 - этот тип не поддерживается на этой платформе IMapperRegistry
Я обновил свой проект, чтобы использовать Automapper 3.0.0, и теперь моя сборка TFS не преуспевает. Ошибка следующая:
"... System.PlatformNotSupportedException: System.PlatformNotSupportedException: этот тип не поддерживается на этой платформе IMapperRegistry."
Есть ли кто-нибудь, кто может помочь мне решить эту проблему.
Между тем, я собираюсь вернуться к предыдущей версии, так как, похоже, она работает нормально.
Ответы
Ответ 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 в блоге выше.