में चल रहा हूँ वहाँ एक रास्ता मेरी ASP.net आवेदन अगर यह SharePoint (2010) के भीतर चल रहे है, लेकिन SharePoint विधानसभाओं के संदर्भ के बिना पता करने के लिए के लिए है? (इसलिए मैं सिर्फ यह जांच नहीं सकता कि क्या SPContext.Current शून्य है)।का पता लगा रहा है कि अगर मैं SharePoint
मुझे आश्चर्य है अगर यह सब सभाओं उस नाम से लोड किए गए हैं पाने के लिए व्यवहार्य है? इसलिए यदि मैं देखता हूं कि मेरे ऐपडोमेन में एक Microsoft.SharePoint असेंबली है तो मुझे पता है कि मैं SharePoint में हूं।
केस का उपयोग करें: असेंबली शेयरपॉइंट के बाहर भी चलाती है, लेकिन शेयरपॉइंट डीएलएल को संदर्भित करने के लिए उन्हें तैनात करने की आवश्यकता होती है (संभवतः लाइसेंसिंग के कारण नहीं) या जब मैं किसी SharePoint विधि तक पहुंचता हूं तो अपवाद प्राप्त करता है।
पल मैं सशर्त संकलन का उपयोग पर है, लेकिन मैं निर्भर करता है कि से दूर होने और एक डि-तंत्र का उपयोग दो वर्गों में से एक का चयन करने के लिए, अगर मैं SharePoint में हूँ चाहते हैं।
मामूली वक्रोक्ति:।। इसके 'AppDomain.CurrentDomain.GetAssemblies() ..' –
दो और चीजें: कोई भी भविष्यवाणी नहीं करता है ताकि आप इससे छुटकारा पा सकें। इसके अलावा, असेंबलीनाम स्टार्ट्स के साथ है, नहीं == क्योंकि यह मजबूत है वाई नामित 'AppDomain.CurrentDomain.GetAssemblies() किसी भी (एक => a.FullName.StartsWith (" Microsoft.Sharepoint "));।' यह मेरा वर्तमान दृष्टिकोण है। –
@ माइकल स्टम, यही कारण है कि मैं इसे असेंबलीनाम कन्स्ट्रक्टर में पास करता हूं, क्योंकि एमएस फुलनाम के मैन्युअल पार्सिंग के खिलाफ सिफारिश करता है "प्रदर्शन नामों को पार्स करने के लिए अपना कोड लिखना अनुशंसित नहीं है। इसके बजाय, डिस्प्ले नाम को असेंबलीनाम कन्स्ट्रक्टर को पास करें, जो पार्स यह और नई असेंबलीनाम के उपयुक्त क्षेत्रों को पॉप्युलेट करता है। " – Guvante