हमारे पास एक पुराना ASP.NET MVC 3 वेब एप्लीकेशन है, जिसका निर्माण VS2010 में किया गया है, जो पिछले सप्ताह के सुरक्षा अद्यतन के बाद से संकलन करने में विफल है।
समस्या यह है कि System.Web.Mvc.dll का संदर्भ टूट गया है।
जब मैं हमारी बिल्ड मशीन पर समाधान फ़ाइल खोलता हूं, जहां सुरक्षा अद्यतन नहीं चला है, और संदर्भ-> System.Web.MVC के लिए गुण संवाद खोलें, यह ठीक लगता है।
पथ C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll संस्करण है 3.0.0.0
लेकिन जब मैं एक ईश्वर मशीन पर समाधान फ़ाइल खोलता हूं, जहां सुरक्षा अद्यतन चलाया गया है, तो संदर्भ-> System.Web.MVC को लापता के रूप में चिह्नित किया गया है। यदि मैं इसे हटाता हूं, और इसे VS2010 के संदर्भ संदर्भ जोड़कर वापस जोड़ने का प्रयास करता हूं, तो यह प्रदर्शित नहीं होता है।
वेब पर घूमते हुए मुझे NuGet का उपयोग करके MVC को अपडेट करने से संबंधित सुझाव दिए गए हैं। हम अपने VS2010 परियोजनाओं में NuGet का उपयोग नहीं करते हैं, ताकि इस स्थिति के लिए यह सही नहीं लगता है। मैंने इसे वैसे भी आजमाया, और आधा दर्जन गायब संदर्भों के साथ समाप्त हुआ।
जब मैं Windows Explorer में "C: \ Program Files \ Microsoft ASP.NET \ ASP.NET MVC 3 \ Assemblies \ System.Web.Mvc.dll" के गुणों को देखता हूं, तो बिल्ड मशीन पर मुझे संस्करण 3.0.0.0 दिखाई देता है।
जब मैं देव मशीन पर गुणों को देखता हूं, तो मुझे संस्करण 3.0.50813.1 दिखाई देता है।
मुझे जो कुछ भी चाहिए उसे बदलने का एक तरीका है, ताकि मैं निर्माण करूं और चला सकूं ताकि मैं .NET 3.0 फ्रेमवर्क में स्थापित इन दो DLL में से किसी को भी बना सकूं और चला सकूं।
विचार?
मैंने कोशिश की है कि काम नहीं किया
पहला प्रयास - यदि विधानसभा गायब है, तो इसे जोड़ें। मैंने पुराना गायब संदर्भ हटा दिया। फिर मैंने अपने प्रोजेक्ट में एक फ़ोल्डर में "ASP.NET MVC3 \ Assemblies" फ़ोल्डर से DLL की प्रतिलिपि बनाई। इसे "हमेशा कॉपी करें" के रूप में सेट करें, और इसे संदर्भ के रूप में जोड़ा।
उस के साथ, यह परियोजना VS2010 में संकलित करेगी, लेकिन जब मैं aspnet_compiler के साथ पृष्ठों को पूर्वनिर्मित करने की कोशिश करूंगा, तो मुझे चेतावनी मिली:
(0): warning CS1702: Assuming assembly reference 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' matches 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35', you may need to supply runtime policy
अब तक, मैं रनटाइम नीतियों को समझने से बचने के लिए प्रबंधन करने में सक्षम था, लेकिन मैंने इसे जोड़ने की कोशिश की, web.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
फिर से कोशिश की, और एक ही चेतावनी मिली।
मेरा सवाल है - क्या मुझे अभी भी कोई समस्या है? या चेतावनियों के बावजूद, क्या मेरा समाधान होगा?