c# - Xamarin.iOS लिंकर प्रतिबिंब के लिए आवश्यक वर्ग में सदस्यों को निकाल देता है




linker (2)

@SharpMobileCode ने बहुत अच्छा विवरण दिया है लेकिन इसके समाधान करने के दो अन्य तरीके भी हैं।

  1. एक एक्सएमएल फ़ाइल का उपयोग करें और प्रोजेक्ट के विकल्प में --xml=your.file उपयोग करें, अतिरिक्त माटच तर्क के तहत। यह तब उपयोगी हो सकता है जब आप असेंबलियों के स्रोत कोड को नहीं बदल सकते हैं -या- जब आप चाहते हैं / सदस्यों की सूची को संरक्षित करने के लिए उपकरण का उपयोग करने की आवश्यकता है;

  2. नए Preserve(Type) निर्माता का उपयोग करें इससे आपको एक अलग विधानसभा (जैसे आपके मुख्य .exe) में निर्देशों को संरक्षित करने की अनुमति मिलती है, जो पहले से ही Xamarin.iOS.dll (इसलिए अपने खुद के प्रकार को परिभाषित करने की आवश्यकता नहीं है) का एक संदर्भ है। उदाहरण के लिए

[assembly: Preserve (typeof (MyType), AllMembers = true)]

ज़ामारीन परियोजना में, मैं "सभी संदर्भों को लिंक" करने के लिए लिंकर व्यवहार सेट करता हूं ऐसा करते समय, असेंबलियों को अप्रयुक्त सदस्यों को हटाकर अनुकूलित किया जाता है एक समस्या, यह वास्तव में जागरूक नहीं है कि हमें प्रतिबिंब के लिए उनकी आवश्यकता है मुझे पता है कि विशेषता को संरक्षित करना है कि हम लिंकर को कक्षा में सभी प्रतीकों को रखने के लिए कह सकते हैं, लेकिन क्या होगा यदि असेंबली डीएलएल है या सिर्फ एक आईओएस परियोजना नहीं है (मोनोटौच असेंबलियों का संदर्भ नहीं है, और नहीं )। क्या कोई तरीका है कि मैं एक कक्षा से सभी कक्षाओं को "संरक्षित" रखने, इसे अनदेखा कर, या केवल कुछ वर्गों को अनुकूलित करने के लिए सेट कर सकता हूं (रिवर्स प्रेस्वेअेटिवेट)?


UIKit के गुणों के गुणों को सेट करने के लिए प्रतिबिंब का उपयोग करने वाले किसी भी व्यक्ति के लिए यहां मेरी "रोटी और मक्खन" संरक्षित संरक्षण है

बस अपने Xamarin iOS ऐप प्रोजेक्ट में एक नया वर्ग बनाएं और उसे "LinkerGuard.cs" या "PreserveConfiguration.cs" जैसे कुछ कॉल करें

इसे इसमें रखें:

using CoreAnimation;
using CoreGraphics;
using Foundation;
using UIKit;


[assembly: Preserve (typeof (UIResponder), AllMembers = true)]
[assembly: Preserve (typeof (UIControl), AllMembers = true)]
[assembly: Preserve (typeof (UIView), AllMembers = true)]
[assembly: Preserve (typeof (UIButton), AllMembers = true)]
[assembly: Preserve (typeof (UILabel), AllMembers = true)]
[assembly: Preserve (typeof (UIImageView), AllMembers = true)]
[assembly: Preserve (typeof (UITextField), AllMembers = true)]
[assembly: Preserve (typeof (UISwitch), AllMembers = true)]
[assembly: Preserve (typeof (UIActivityIndicatorView), AllMembers = true)]
[assembly: Preserve (typeof (UIDatePicker), AllMembers = true)]
[assembly: Preserve (typeof (UIScrollView), AllMembers = true)]
[assembly: Preserve (typeof (UIWebView), AllMembers = true)]
[assembly: Preserve (typeof (UIPageControl), AllMembers = true)]
[assembly: Preserve (typeof (UIToolbar), AllMembers = true)]
[assembly: Preserve (typeof (UIStepper), AllMembers = true)]
[assembly: Preserve (typeof (UISegmentedControl), AllMembers = true)]
[assembly: Preserve (typeof (UISearchBar), AllMembers = true)]

[assembly: Preserve (typeof (UIScreen), AllMembers = true)]
[assembly: Preserve (typeof (UIWindow), AllMembers = true)]

[assembly: Preserve (typeof (UIBarItem), AllMembers = true)]

[assembly: Preserve (typeof (UINavigationBar), AllMembers = true)]


[assembly: Preserve (typeof (UITabBar), AllMembers = true)]
[assembly: Preserve (typeof (UITabBarItem), AllMembers = true)]
[assembly: Preserve (typeof (UIBarButtonItem), AllMembers = true)]

[assembly: Preserve (typeof (UITextFieldCondition), AllMembers = true)]
[assembly: Preserve (typeof (UIViewContentMode), AllMembers = true)]
[assembly: Preserve (typeof (UITextAlignment), AllMembers = true)]
[assembly: Preserve (typeof (UIControlContentHorizontalAlignment), AllMembers = true)]

[assembly: Preserve (typeof (UIReturnKeyType), AllMembers = true)]
[assembly: Preserve (typeof (UIDataDetectorType), AllMembers = true)]
[assembly: Preserve (typeof (UIKeyboardType), AllMembers = true)]

[assembly: Preserve (typeof (UITextFieldChange), AllMembers = true)]

[assembly: Preserve (typeof (UITableView), AllMembers = true)]
[assembly: Preserve (typeof (UICollectionView), AllMembers = true)]
[assembly: Preserve (typeof (UITableViewCell), AllMembers = true)]
[assembly: Preserve (typeof (UICollectionViewCell), AllMembers = true)]

[assembly: Preserve (typeof (UITableViewDataSource), AllMembers = true)]
[assembly: Preserve (typeof (UICollectionViewDataSource), AllMembers = true)]

[assembly: Preserve (typeof (UIViewController), AllMembers = true)]
[assembly: Preserve (typeof (UITabBarController), AllMembers = true)]
[assembly: Preserve (typeof (UINavigationController), AllMembers = true)]

[assembly: Preserve (typeof (UIDocument), AllMembers = true)]


[assembly: Preserve (typeof (UITapGestureRecognizer), AllMembers = true)]
[assembly: Preserve (typeof (UIGestureRecognizer), AllMembers = true)]

[assembly: Preserve (typeof (CGColor), AllMembers = true)]
[assembly: Preserve (typeof (UIColor), AllMembers = true)]
[assembly: Preserve (typeof (UIFont), AllMembers = true)]
[assembly: Preserve (typeof (UIImage), AllMembers = true)]

[assembly: Preserve (typeof (NSObject), AllMembers = true)]
[assembly: Preserve (typeof (NSAttributedString), AllMembers = true)]
[assembly: Preserve (typeof (NSLayoutConstraint), AllMembers = true)]
[assembly: Preserve (typeof (CAKeyFrameAnimation), AllMembers = true)]
[assembly: Preserve (typeof (NSIndexPath), AllMembers = true)]




xamarin.ios