2016-02-15 15 views
14

Tôi đang thực hiện một số thay đổi trong ứng dụng web asp.Net MVC5, trong đó tôi đã sử dụng typelite để tạo các định nghĩa .ts từ các lớp C#). Đối với một số lý do bây giờ tôi đã có lỗi này khi thực hiện các T4:Biên dịch chuyển đổi: Loại 'Đối tượng' được định nghĩa trong một assembly không được tham chiếu

chuyển đổi Biên soạn: Loại 'Object' được định nghĩa trong một hội đồng đó không được tham chiếu. Bạn phải thêm tham chiếu đến assembly 'mscorlib, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'.

và cảnh báo này:

Biên soạn chuyển đổi: Giả sử tham khảo lắp ráp 'mscorlib, Version = 1.0.3300.0, Culture = trung tính, PublicKeyToken = b77a5c561934e089' được sử dụng bởi 'EnvDTE' phù hợp với bản sắc 'mscorlib, Phiên bản = 4.0.0.0, Văn hóa = trung lập, PublicKeyToken = b77a5c561934e089' của 'mscorlib', bạn có thể cần cung cấp chính sách thời gian chạy Mair.Tracking.Web

Tôi đoán đó là một cái gì đó liên quan đến phiên bản EnvDTE được sử dụng bởi TypeLite và tham chiếu đến mscorlib EnvDTE sử dụng. Tôi có nên thêm một bindingRedirect trong web.config không?

Tôi đang sử dụng VS2015 với Update2 CTP.

+2

Tôi không sử dụng typelite nhưng tôi cũng nhận được cảnh báo mscorlib kể từ khi tôi cập nhật VS2015 thành CTP 2. – Akinzekeel

+1

Tôi đã tìm thấy câu hỏi của bạn và đã đọc suy nghĩ "hoàn hảo - chính xác cùng một tình huống như tôi" ngay xuống phiên bản VS2015, vv Sau đó, nỗi buồn khi tôi không thấy câu trả lời. Tôi đoán đó là Update 2 CTP do lỗi. Tôi sẽ cài đặt Update 2 RC trong thời gian vài giờ để báo cáo lại với câu trả lời nếu điều đó giúp –

+0

cảm ơn Ian, không biết Update2 RC đã ra – qwertoyo

Trả lời

10

tôi có thể xác nhận rằng thư viện lớp xách tay kết hợp với T4 mẫu gây ra vấn đề này trong Visual Studio 2015 Update 2. Tôi đã không thể tìm thấy giải pháp tốt hơn sau đó nhắm mục tiêu lại TypeLITE đến khung công tác .NET đầy đủ.

Từ gói phiên bản 1.8.0 TypeLITE nuget chứa một bản sao của thư viện nhắm mục tiêu khung .NET đầy đủ. Nếu dự án của bạn nhắm mục tiêu đầy đủ .NET framework, việc lắp ráp TypeLITE chính xác được chọn trong khi cài đặt và mọi thứ hoạt động tốt trong Visual Studio 2015 Update 2. Thật không may nếu dự án của bạn nhắm vào PCL, bạn sẽ không may mắn với Visual Studio 2015 Update 2. Tôi tìm kiếm giải pháp tốt hơn.

+1

@mythz nên được thông báo về điều này cho ServiceStack cũng như –

+3

Vui lòng thử cài đặt KB3151378 cho Bản cập nhật VS 2015 2. – SvenAelterman

1

Cụ thể cho TypeLite, tôi đã mở bản sao của nó (khá lỗi thời nhưng tôi đã tinh chỉnh nó cho phù hợp với nhu cầu của tôi) và dừng nó lại là thư viện di động. Điều đó đã được thực hiện theo các bước tại https://stackoverflow.com/a/23135170/1053381. Bây giờ nó không phải là một thư viện di động tôi có thể thực hiện mẫu T4 của tôi một lần nữa.

Tôi có nhiều mẫu T4 khác trong giải pháp sử dụng ImmutableObjectGraph (tìm kiếm GitHub) và chúng chạy tốt mặc dù nó cũng sử dụng thư viện di động. Tôi đã không đào sâu vào các chi tiết cụ thể nhưng tôi đã học được rằng mscorlib 2.0.5.0 được liên kết với các thư viện di động, vv và thực sự chúng ta không cần phải có TypeLite để di chuyển.

Hy vọng điều này sẽ giúp người khác.

Ngoài ra còn có một vấn đề Connect mở tại https://blogs.msdn.microsoft.com/visualstudio/2016/03/03/visual-studio-2015-update-2-rc/ vì đây vẫn là một hồi quy trong VS2015 Cập nhật 2.

+1

Cảm ơn! Điều này làm việc cho tôi (cảnh báo vẫn còn hiện diện nhưng lỗi đã biến mất và nó chạy thành công). Đối với những người khác theo cách này, bạn có thể tải xuống phiên bản mới nhất của TypeLite từ đây: https://bitbucket.org/LukasKabrt/typelite/downloads. Chỉ có một dự án tôi cần để chuyển đổi và nó được gọi là "TypeLite.Net4". Một "TypeLite" khác đã là một thư viện lớp.Bước cuối cùng là gỡ cài đặt gói nuget TypeLite khỏi dự án của bạn và thêm một tham chiếu đến các dll mới được biên dịch. –

+0

Vui vì nó đã giúp người khác ra ngoài :) –

0

Tôi đã cài đặt phiên bản đầy đủ của TypeLite 1.5.1 (Ứng dụng web thông thường .Net Phiên bản đầy đủ 4.5.1) và cập nhật đơn giản lên 1.8.1 đã giúp giải quyết vấn đề. Vì vậy, tôi nên nói rằng VS 2015 Update2 RC và Update2 RTM không hoạt động với phiên bản FULL của TypeLite cũng như với PORTABLE (có, phiên bản 1.5.1 đã có phiên bản di động)

7

Nhờ Ian Yates để mở mục Kết nối.

Microsoft phát hành lại KB3151378 vào ngày 4 tháng 5 năm 2016. Tôi có thể xác nhận rằng bản cập nhật này giải quyết vấn đề khi các mẫu T4 được sử dụng với các tệp EDMX. Thật không may tôi không sử dụng TypeLite, vì vậy tôi không thể xác nhận rằng nó giải quyết vấn đề của OP, mặc dù tôi sẽ nghi ngờ nó.

Từ trang KB:

Vấn đề 6:

Trong mẫu T4, lỗi xảy ra khi bạn tham khảo một hội đồng được xây dựng cho một phiên bản của .NET Framework khác với máy tính để bàn (đầy đủ) khung. Ví dụ, lỗi xảy ra khi bạn tham khảo thư viện di động.

2

Có vẻ như điều này sẽ được sửa bởi KB3151378.

Ghi chú cho phiên bản 14.0.25130.0:

Issue 6

Trong mẫu T4, lỗi xảy ra khi bạn tham khảo một hội đồng được xây dựng cho một phiên bản của .NET Framework khác với khung máy tính để bàn (đầy đủ). Ví dụ, lỗi xảy ra khi bạn tham khảo thư viện di động.

Các vấn đề liên quan