Tôi cần phải thêm và/hoặc sửa đổi các cấu hình để cho phép nhiều lớp học và thành viên được chia sẻ trong PCL (nhiều trong số chúng được xây dựng trong khuôn khổ, chẳng hạn như Thread.Sleep). Cách tốt nhất để làm điều này là gì? Có công cụ nào để giúp điều đó không?
PS: Tôi không tìm kiếm một anwser cho tôi biết NO hoặc DỪNG. Tôi muốn có biên dịch-một lần DLL có thể được chia sẻ trong môi trường khác nhau. Không có nền tảng nhị phân, không biên dịch lại, không có ifdef.
Sau đây là những gì tôi có cho đến nay:
Tùy chỉnh Cấu hình Thư viện Lớp Di động .NET?
Yêu cầu:
- Target environements: Silverlight 5 và .NET Framework 4.5.
- Mục đích của PCLs: chia sẻ cơ sở hạ tầng của RIA client và máy chủ ASP.NET (không WCF)
- Có gì thiếu trong các cấu hình mặc định: XPath, phương pháp đề, DynamicMethod/ILGenerator
hồ sơ PCL: dưới Reference Assemblies \ Microsoft \ Framework.NETPortable:
- Tất cả hội đang cuống, với thuộc tính "Retargetable" thiết lập.
- Tất cả hội có cờ = 0x171: 0x001 được ký kết, 0x100 là retargetable, và 0x070 là undefined trong AssemblyNameFlags (dường như không có hiệu lực)
- Tất cả các tài liệu tham khảo giữa hội là với "Retargetable" thuộc tính là tốt.
- Tất cả các hội đồng có hỗ trợ Silverlight được phiên bản 2.0.5.0.
- Built binaries PCL chứa hai tài liệu tham khảo cho mỗi cụm gọi (ví dụ: mscorlib 2.0.5.0 retargetable + mscorlib 4,0)
Customization nỗ lựC# 1
- hồ sơ: Silverlight 5 +. NET Framework 4.5 (hồ sơ 24)
- Sao chép SL5 mscorlib.dll đến hồ sơ 24
- Đánh dấu SL5 mscorlib.dll như retargetable (thay đổi để chậm trễ đã ký)
- ReSharper: thất bại trong việc giải quyết tất cả các phương pháp khuyến nông, lỗi trong generic loại/giá trị trận đấu
- tích xây dựng: thành công, Run: thành công
nỗ lực Customization # 2
- hồ sơ: Silverlight 5 + Khuôn khổ .NET 4.5 (hồ sơ 24)
- Sao chép tất cả các file DLL SL5 đến hồ sơ 24
- Đánh dấu tất cả SL5 DLL như retargetable (thay đổi để chậm trễ đã ký)
- Đánh dấu tất cả tài liệu tham khảo giữa SL5 DLL như retargetable
- ReSharper: thất bại trong việc giải quyết tất cả các phương pháp khuyến nông, lỗi trong generic loại/giá trị trận đấu
- tích xây dựng: thành công, Run: thành công
nỗ lực Customization # 3
- hồ sơ: Silverlight 4 + .NET Framework 4.0.3 (hồ sơ 18)
- Sao chép SL4 mscorlib.dll đến hồ sơ 18
- Đánh dấu SL4 mscorlib.dll như retargetable (thay đổi để chậm trễ đã ký)
- ReSharper: thành công
- tích xây dựng: thành công, Run: thành công
nỗ lực Customization # 4
- hồ sơ: Silverlight 4 + .NET Framework 4.0.3 (hồ sơ 18)
- Sao chép tất cả SL4 DLL để cấu hình 18
- Set phiên bản .NET runtime của tất cả các DLL SL4 để v4 (DLL gốc có mà, không rõ tác dụng)
- Đánh dấu tất cả SL4 DLL như retargetable (thay đổi để chậm trễ đã ký)
- Đánh dấu tất cả tài liệu tham khảo giữa SL4 DLL như retargetable
- ReSharper: thành công
- tích xây dựng: thành công, Run: thành công
nỗ lực Customization # 5 kế thừa # 4
- hồ sơ: Silverlight 4 + .NET Framework 4.0.3 (hồ sơ 18)
- Thêm System.Numerics SL4 của (bao gồm trong các cấu SL khác) để RedistList \ FrameworkList.xml
- Thêm hệ thống SL4.Xml.XPath (không được bao gồm trong bất kỳ cấu hình SL nào) vào RedistList \ FrameworkList.xml
- Kết quả: không thể giải quyết System.Numerics và System.Xml.XPath khỏi def ault PCL tham chiếu
- Fixes: tài liệu tham khảo cả DLL bằng tay - không thể buộc họ phải được retargetable, mặc dù VS sẽ không biên dịch với System.Numerics phi retargetable hoặc System.Xml.XPath do cho vấn đề lưu ý dưới đây
Ghi chú:
- Compile lỗi: "... theo quy định tại một hội đồng đó không được tham chiếu, Bạn phải thêm một tham chiếu đến lắp ráp".Xảy ra sau khi tất cả các hội đồng được thực hiện có thể nhắm mục tiêu lại, nhưng một trong các tham chiếu giữa chúng không bị thay đổi thành "có thể nhắm mục tiêu lại"
Nó hoạt động ở một mức độ nhất định, nhưng khá phiền hà khi tùy chỉnh các DLL được tham chiếu hiện tại hoặc thêm mới. xác nhận mã PCL sau khi ghi đè các DLL được tham chiếu (nếu có thể).
Tôi biết bạn không * tìm kiếm * câu trả lời để cho bạn biết chỉ cần dừng lại, nhưng ý tưởng bạn chỉ có thể chọn và chọn những phần khung bạn muốn đưa vào và nó sẽ hoạt động, là thực sự không phải là một hợp lý. Ngay cả khi bạn tìm thấy một số cách vụng về của việc làm cho nó làm việc ở một mức độ nào đó, sớm hay muộn bạn sẽ trở thành unstuck - tại thời điểm đó bạn sẽ phải lãng phí rất nhiều thời gian. –
Nhưng nó chỉ lúng túng nếu không có công cụ hỗ trợ thích hợp. Nếu có một công cụ để tạo ra các file DLL cho các tài liệu tham khảo, nó sẽ khá tốt. – AqD
Bạn giả định rằng bạn có đủ nhận thức về những thứ khác cần thiết để hỗ trợ các API đó ... tất cả các phụ thuộc về cả mã gốc và mã được quản lý khác. Tôi không nghĩ nó đơn giản như bạn mong đợi. –