2013-08-26 43 views
38

Tôi đã cập nhật dự án của mình để sử dụng Automapper 3.0.0 và giờ việc xây dựng TFS của tôi không thành công. Các lỗi như sau:Automapper 3.0 - Loại này không được hỗ trợ trên nền tảng này IMapperRegistry

"... System.PlatformNotSupportedException: System.PlatformNotSupportedException: Đây là loại không được hỗ trợ trên nền tảng IMapperRegistry này."

Có ai có thể giúp tôi giải quyết vấn đề này. Trong thời gian đó, tôi sẽ hoàn nguyên về phiên bản trước vì phiên bản đó dường như hoạt động tốt.

Trả lời

28

Đảm bảo bạn thêm tham chiếu (hoặc thêm tham chiếu gói NuGet) trong ứng dụng của bạn vào cả Tự động lập bản đồ và AutoMapper.Net4 trong ứng dụng chính của bạn. Visual Studio có vấn đề với sao chép tài liệu tham khảo mà nó sẽ không sao chép tài liệu tham khảo mà nó không nghĩ rằng đang được sử dụng.

Ví dụ, nếu bạn có các dự án: - Core - UI

Và Lõi tham chiếu AutoMapper, hãy chắc chắn bạn thêm một tài liệu tham khảo trong giao diện người dùng cũng như để cả hai cụm. NuGet thực hiện điều này tự động, nhưng MSBuild sẽ KHÔNG sao chép tất cả các tham chiếu từ Core sang UI. Cách dễ nhất để khắc phục điều này là chỉ cần thêm tham chiếu gói AutoMapper trong giao diện người dùng.

+0

Yeah, có vẻ là một thiếu tài liệu tham khảo để lắp ráp AutoMapper.Net4. Dự án của tôi hoạt động tốt trong VS2012 (gỡ lỗi hay không) nhưng khi thực hiện độc lập không, kịch bản của chúng tôi được sử dụng để sao chép ứng dụng vào môi trường thực thi quên sao chép tập tin AutoMapper.Net4.dll mới vào thư mục ứng dụng. –

+4

Điều này trông giống như tôi cả hai hội đồng nên được kết hợp trong xây dựng AutoMapper như tôi sẽ thu thập rất nhiều người đang sử dụng AutoMapper trong 'lớp dịch vụ' hội đồng và không trong dự án web của họ mà sẽ biểu hiện vấn đề. Điều này có thể không? Tôi không nhiều của một 'tham khảo nazi' nhưng cần phải thêm automapper "không sử dụng" trong phụ thuộc thượng nguồn có vẻ như có thể có một giải pháp tốt hơn. –

+3

Đối với tôi - tôi phải cài đặt Automapper gói cho dự án thử nghiệm đơn vị của mình và các bài kiểm tra đơn vị của tôi đã hoạt động trở lại. HTH –

38

Chúng tôi đã gặp sự cố tương tự trên máy chủ xây dựng của chúng tôi. MsTest dường như loại bỏ các tệp DLL mà nó coi là không cần thiết (lưu ý: tuyên bố này chỉ là một phỏng đoán được giáo dục). Để khắc phục, hãy thêm một lời gọi rõ ràng vào một cái gì đó trong AutoMapper.Net4.dll. Ví dụ: với lớp ListSourceMapper:

var useless = new ListSourceMapper() 

Thêm vào dự án được chia sẻ bởi tất cả các dự án khác đã sửa nó cho chúng tôi. Nơi để đặt dòng mã này có thể khác nhau.

+0

Cảm ơn vì điều này, tôi cũng phải làm điều này. @JimmyBogard FYI trong trường hợp dữ liệu này giúp ích. – Josh

+1

Ngớ ngẩn là bạn phải làm điều này. Nhưng khó chịu, nó làm việc cho tôi. Cảm ơn! – demoncodemonkey

+0

Tôi đồng ý rằng đây là một sửa chữa không đáng tin cậy, nhưng tất cả các bài kiểm tra của tôi đã bắt đầu chuyển lại sau khi thêm, vì vậy nó hoạt động. – Colin

2

Tôi đã gặp vấn đề tương tự với một số thử nghiệm tích hợp mstest mà tôi đã tạo.

Tôi khuyên bạn nên sử dụng thuộc tính DeploymentItem trên lớp thử nghiệm thay vì tham chiếu trực tiếp trong mã. Ví dụ: đây là những gì tôi có:

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

Bạn cũng cần thêm tham chiếu, như đã đề cập ở trên, sử dụng nuget, để tự động hóa trong dự án thử nghiệm của bạn.

Để khắc phục sự cố này, hãy xem thư mục bin của dự án mstest của bạn. Bạn sẽ thấy cả Automapper.dll và AutoMapper.Net4.dll nếu bạn có automapper được tham chiếu trong dự án. Trước khi thêm thuộc tính DemploymentItem vào lớp thử nghiệm của bạn, bạn sẽ không thấy AutoMapper.Net4.dll trong thư mục TestResults [MyLatestTestRun] của bạn. Nhưng thêm thuộc tính và bạn sẽ.

MSTest không chơi tốt với hệ thống phun ...

0

tôi đã cùng một vấn đề sử dụng Team thành phố để chạy MSTest và không tìm thấy giải quyết.

Nó chỉ ra rằng tôi cần sử dụng Visual Studio Test Runner.

Tôi tìm thấy thêm thông tin in this blog post.

Trong Team City 8.1 có một bước xây dựng cho thử nghiệm VSTest.Console.

Điều này phù hợp với tôi. Tôi không cần sử dụng số PowerShell script trong blog ở trên.

1

Đang cập nhật để AutoMapper 3.1.1 cố định vấn đề này đối với tôi

Update-Package AutoMapper -Version 3.1.1