2011-06-03 15 views
6

में चल रहा हूँ वहाँ एक रास्ता मेरी ASP.net आवेदन अगर यह SharePoint (2010) के भीतर चल रहे है, लेकिन SharePoint विधानसभाओं के संदर्भ के बिना पता करने के लिए के लिए है? (इसलिए मैं सिर्फ यह जांच नहीं सकता कि क्या SPContext.Current शून्य है)।का पता लगा रहा है कि अगर मैं SharePoint

मुझे आश्चर्य है अगर यह सब सभाओं उस नाम से लोड किए गए हैं पाने के लिए व्यवहार्य है? इसलिए यदि मैं देखता हूं कि मेरे ऐपडोमेन में एक Microsoft.SharePoint असेंबली है तो मुझे पता है कि मैं SharePoint में हूं।

केस का उपयोग करें: असेंबली शेयरपॉइंट के बाहर भी चलाती है, लेकिन शेयरपॉइंट डीएलएल को संदर्भित करने के लिए उन्हें तैनात करने की आवश्यकता होती है (संभवतः लाइसेंसिंग के कारण नहीं) या जब मैं किसी SharePoint विधि तक पहुंचता हूं तो अपवाद प्राप्त करता है।

पल मैं सशर्त संकलन का उपयोग पर है, लेकिन मैं निर्भर करता है कि से दूर होने और एक डि-तंत्र का उपयोग दो वर्गों में से एक का चयन करने के लिए, अगर मैं SharePoint में हूँ चाहते हैं।

उत्तर

9
bool isSharepoint = 
    AppDomain 
     .CurrentDomain 
     .GetAssemblies() 
     .Any(a => new AssemblyName(a.FullName).Name == "Microsoft.SharePoint"); 

untested है, लेकिन यह एक भरी हुई विधानसभाओं जिसका नाम Microsoft.SharePoint था के लिए जांच करते हैं

+0

मामूली वक्रोक्ति:।। इसके 'AppDomain.CurrentDomain.GetAssemblies() ..' –

+0

दो और चीजें: कोई भी भविष्यवाणी नहीं करता है ताकि आप इससे छुटकारा पा सकें। इसके अलावा, असेंबलीनाम स्टार्ट्स के साथ है, नहीं == क्योंकि यह मजबूत है वाई नामित 'AppDomain.CurrentDomain.GetAssemblies() किसी भी (एक => a.FullName.StartsWith (" Microsoft.Sharepoint "));।' यह मेरा वर्तमान दृष्टिकोण है। –

+1

@ माइकल स्टम, यही कारण है कि मैं इसे असेंबलीनाम कन्स्ट्रक्टर में पास करता हूं, क्योंकि एमएस फुलनाम के मैन्युअल पार्सिंग के खिलाफ सिफारिश करता है "प्रदर्शन नामों को पार्स करने के लिए अपना कोड लिखना अनुशंसित नहीं है। इसके बजाय, डिस्प्ले नाम को असेंबलीनाम कन्स्ट्रक्टर को पास करें, जो पार्स यह और नई असेंबलीनाम के उपयुक्त क्षेत्रों को पॉप्युलेट करता है। " – Guvante

1

आपकी वर्तमान प्रक्रिया (w3wp.exe) के कमांड लाइन पैरामीटर को जांचने के लिए एक तरीका होगा और "-ap" SharePoint Content AppPool "देखें। व्यक्तिगत रूप से, मैं आपके द्वारा उल्लिखित विधि को पसंद करता हूं (Microsoft.SharePoint की तलाश में .dll विधानसभा)

संबंधित मुद्दे