"वेब साइट" दृश्य स्टूडियो में परियोजनाओं एक अजीब बात कर रहे हैं। वे पारंपरिक वेब डेवलपर्स, जहां एक "साइट" एक निर्देशिका में फ़ाइलों का सिर्फ एक सेट है को पूरा करने के प्रयास होने लगते हैं। वैसे ही, जब आप विजुअल स्टूडियो में "वेब साइट" प्रोजेक्ट करते हैं, तो कोई असली "प्रोजेक्ट" फ़ाइल नहीं होती है, जैसे सी # प्रोजेक्ट्स में .csproj फ़ाइल होती है। हालांकि, अभी भी एक समाधान फ़ाइल (.sln) है। आम तौर पर, असेंबली। डीएल संदर्भ परियोजना फ़ाइल में सहेजे जाते हैं। चूंकि किसी वेब साइट में कोई नहीं है, तो वे कहां जाते हैं?
अन्य परियोजनाओं
आप एक अन्य परियोजना के लिए एक संदर्भ जोड़ देते हैं तो के सन्दर्भ, तो एक प्रवेश समाधान .sln फ़ाइल में किया जाता है। यह समाप्त होता है इस तरह लग रही:
Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "WebSite1", "..\..\WebSites\WebSite1\", "{F25DB9D6-810D-4C18-ACBB-BFC420D33B20}"
ProjectSection(WebsiteProperties) = preProject
TargetFramework = "3.5"
ProjectReferences = "{11666201-E9E8-4F5A-A7AB-93D90F3AD9DC}|ClassLibrary1.dll;"
फ़ाइल सिस्टम का संदर्भ
आप फाइल सिस्टम ब्राउज़ करें और एक .dll फ़ाइल जोड़ते हैं, तो दृश्य स्टूडियो का निर्माण करेगा एक ही साथ फ़ाइल ".refresh" अगर \ Bin फ़ोल्डर में नाम। यह फ़ाइल केवल एक 1-पंक्ति पाठ फ़ाइल है जो उस पथ को इंगित करती है जिस से फ़ाइल लोड की गई थी। तो उदाहरण के लिए यदि मैंने .... \ libs से "MyAssem.dll" जोड़ा, तो वेब साइट \ Bin फ़ोल्डर में, मैं वहां कॉपी की गई 2 फाइलों के साथ समाप्त हो जाऊंगा: MyAssem.dll और MyAssem.dll.refresh। .refresh फ़ाइल में टेक्स्ट होगा: ".... \ libs"। प्रत्येक बिल्ड पर, विजुअल स्टूडियो .refresh फ़ाइल में पथ की जांच करेगा, और यदि कोई नया। डीएल मौजूद है, तो यह बिन निर्देशिका में से एक को ओवरराइट करेगा।
चेतावनी: अगर फ़ाइल मौजूद नहीं है, तो Visual Studio एक त्रुटि नहीं फेंक देगा जहां .refresh फ़ाइल इसे देखने के लिए कहती है। यह पहले से ही \ bin फ़ोल्डर में .dll का उपयोग करना जारी रखेगा। हालांकि यह एक चेतावनी आउटपुट होगा।
GAC संदर्भ
आप वैश्विक विधानसभा कैश से एक विधानसभा जोड़ते हैं, तो दृश्य स्टूडियो, Web.config फ़ाइल में यह प्रवेश करेंगे इस तरह:
<compilation debug="false">
<assemblies>
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
फिर आपको यहां जो चीज देखना है वह यह है कि विजुअल स्टूडियो मानता है कि यदि असेंबली आपके विकास कंप्यूटर पर जीएसी में थी, तो यह रनटाइम पर एक ही स्थान पर होगी! अगर आपको Oracle.DataAccess
आपके देव मशीन पर स्थापित किया गया है, तो यह आपको परेशानी में डाल सकता है, जो इसे जीएसी में रखेगा, लेकिन जब आप तैनात करेंगे, तो आप उत्पादन मशीन पर बस .dll की प्रतिलिपि बना लेंगे। यह अभी भी उसे जीएसी में खोजने की कोशिश करेगा और रनटाइम पर असफल हो सकता है।
मुझे आशा है कि यह विषमताएं वेब साइट्स और संदर्भों के संदर्भों को स्पष्ट करने में मदद करता है!
धन्यवाद आदमी! मुझे हमेशा परियोजना संदर्भों में कोई समस्या थी और मैंने नोटिस नहीं किया कि जब मैं प्रोजेक्ट संदर्भ जोड़ता हूं तो स्लान फ़ाइल बदल रही है। –