विंडोज अपडेट के कारण MVC3 और MVC4 काम करना बंद कर देते हैं


126

क्या मैं अकेला हूँ जिसने 15 अक्टूबर को विंडोज अपडेट (8.1) स्थापित किया और अचानक एमवीसी ने इस चेतावनी के कारण काम करना बंद कर दिया?

चेतावनी 1 इस संदर्भ को हल नहीं कर पाई। असेंबली का पता नहीं लगा सका "System.Web.Mvc, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL"। यह सुनिश्चित करने के लिए जांचें कि डिस्क पर असेंबली मौजूद है। यदि यह संदर्भ आपके कोड द्वारा आवश्यक है, तो आपको संकलन त्रुटियां मिल सकती हैं।

ऐसा लगता है कि यह विंडोज़ अपडेट संस्करण संख्या 4.0.0.1 के साथ एमवीसी का एक नया संस्करण स्थापित करता है, और प्रोग्राम फ़ाइलों के फ़ोल्डर से पुराने संस्करण को हटा देता है।

किसी को पता है कि प्रत्येक परियोजना के लिए क्रॉल किए बिना इसे कैसे ठीक किया जाए?


संदर्भ कहां से है? जीएसी? संदर्भ असेंबली या नगेट?
blowdart

1
मामले पर Microsoft का ब्लॉग पढ़ें । (इससे जुड़ने के लिए e4rthdog का धन्यवाद , अधिक दृश्यता प्राप्त करने के लिए टिप्पणी करें)
हन्ना



1
ध्यान रखें कि आपको अपने उत्पादन वातावरण में web.config को भी संपादित करना होगा।
कप्तान केनपाची

जवाबों:


107

सबसे अच्छा समाधान 4.0L.1 संस्करण के लिए DLL अद्यतन है। नगेट का उपयोग करने का प्रयास करें:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.40804 -Project <your project name>

यह अपने आप अपडेट हो जाएगा

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
  </dependentAssembly>

आपको बस संस्करण System.Web.Mvc को मैन्युअल रूप से संपादित करना होगा:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />


1
हाँ, बस NuGet संदर्भ के साथ GAC संदर्भ बदलें। हमारे लिए काम किया।
abatishchev

7
मामले पर Microsoft का ब्लॉग पढ़ें । (इससे जुड़ने के लिए e4rthdog का धन्यवाद , अधिक दृश्यता प्राप्त करने के लिए टिप्पणी करें)
हन्ना

10
कोई भी विचार क्यों, उपरोक्त करने के बाद, मुझे इन चेतावनियों का एक पूरा गुच्छा मिलता है: "ASPNETCOMPILER: चेतावनी CS1702: असेंबली संदर्भ 'System.Web.Mvc, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicNeyToken = 31bf3856ad364e35' मैच System.Web.Mvc, संस्करण = 4.0.0.1, संस्कृति = तटस्थ, PublicKeyToken = 31bf3856ad364e35 ', आपको रनटाइम पॉलिसी की आपूर्ति करने की आवश्यकता हो सकती है "?
फरिनहा

1
@ फरहीन, मेरे पास एक ही चेतावनी है। मैं उन्हें दूर नहीं कर सकता। ये चेतावनी बिल्ड प्रदर्शन को मार देती है। क्या आपको इसे ठीक करने का कोई तरीका मिला?
स्टेफनहा

3
नहीं @StefanHa, अभी तक एक ठीक नहीं मिला है। मैंने देखा कि दृश्य फ़ोल्डर के अंदर Web.config फ़ाइलों में पूरे आवेदन के दौरान 4.0.0.0 के संदर्भों का एक समूह है, लेकिन उन सभी चेतावनी को मैन्युअल रूप से बदलने के बाद भी।
फरिनहा

26

हमें अपने बिल्ड को प्राप्त करने के लिए 4.0.0.0 से 4.0.0.1 तक के संस्करण को अपडेट करने के लिए प्रत्येक .csproj को मैन्युअल रूप से स्पर्श करना था । काफी दर्द।

नए संदर्भों की तरह दिखना चाहिए:

<Reference Include="System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

3
ध्यान दें कि MVC 3.0 के लिए समान परिवर्तन की आवश्यकता है, फिर से काम करने के लिए संदर्भ "3.0.0.1" होना चाहिए।
एंडी

मेरे मामले में यह आवश्यक था, और यह भी इंगित करने की आवश्यकता थी कि "विशिष्ट संस्करण" "ट्रू" है
pimbrouwers

24

अद्यतन के बाद एक ही मुद्दा था:

Microsoft ASP.NET MVC 4.0 (KB2993928) के लिए सुरक्षा अद्यतन
http://support.microsoft.com/kb/2993928

लेकिन केवल System.Web.Mvc के संदर्भ में प्रोजेक्ट के लिए, पैकेज द्वारा संस्थापित नहीं।

मेरे सहयोगी, जिन्होंने Microsoft ASP.NET MVC 4.0 रनटाइम स्थापित नहीं किया था और अपडेट प्राप्त नहीं किया था, उन्हें कोई परेशानी नहीं थी और अभी भी 4.0.0.0 का संदर्भ था, 4.0.0.1 को नहीं।

मैंने मैन्युअल रूप से 4.0.0 के संदर्भ को बदल दिया है । 1 , चेक-इन के बाद, मेरा सहयोगी अभी भी 4.0.0 के संदर्भ में निर्माण कर सकता है।
(Win7 प्रो SP1, VS2013 प्रो अपडेट 3 पर काम करना)


22

कृपया इस ब्लॉग को देखें, अनुशंसित तरीका इसी NuGet पैकेज को अद्यतन करना है:

http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx

उद्धरण के लिए:

समस्या का समाधान निम्न में से किसी एक को लागू करके किया जा सकता है:

  1. (पसंदीदा) NuGet गैलरी से Microsoft.AspNet.Mvc स्थापित करें (यह आपके web.config में एक बाध्यकारी रीडायरेक्ट स्थापित करेगा)। आप इसे NuGet पैकेज मैनेजर या Visual Studio के अंदर NuGet कंसोल से कर सकते हैं:

    स्थापित करें-पैकेज Microsoft.AspNet.Mvc -Version -प्रोजेक्ट परियोजना

    MVC 4 संस्करण: 4.0.40804.0

    एमवीसी 3 संस्करण: 3.0.50813.1

  2. मैन्युअल रूप से System.Web.MVC.dll के संदर्भ में अपडेट करें (GAC में एक का उपयोग न करें)।

    संदर्भ जोड़ें -> असेंबली -> एक्सटेंशन संवाद बॉक्स आज़माएं।



4

वेब प्रोजेक्ट के लिए, आपको web.config में कॉन्फ़िगरेशन को अपडेट करना पड़ सकता है:

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.1"/>
  </dependentAssembly>

2

आपको अपने समाधान के भीतर System.Web.Mvc के सभी संदर्भों को बदलने की आवश्यकता है। बस उन्हें हटा दें और नया 4.0.0.1 संस्करण जोड़ें।

गुणों में भी copy localसत्य में बदल जाता है।

और web.config में mvc के नए संस्करण को इंगित करने के लिए असेंबलिंग बाइंडिंग जोड़ें:

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-4.0.0.1" newVersion="4.0.0.1" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

सेटिंग CopyLocal=trueकरने से हमें मदद नहीं मिली; देखें: MS14-059 के बाद System.Web.MVCसे binफ़ोल्डर में कॉपी नहीं किया गया
डैनी टूपेनी

1

ठीक है,

मेरे लिए यह दो सरल कदम थे:

सबसे पहले मैंने System.Web.Mvc को सभी संदर्भों को 4.0.0.0 से 4.0.0.1 में बदल दिया,

तब मुझे System.Web.Mvc (संभवत: क्योंकि मैंने हटा दिया था और इसे फिर से जोड़ दिया था) की संपत्तियों पर जाना था और कॉपी लोकल को सच में बदलना था।

आशा है कि यह किसी के लिए उपयोगी है।


0

यदि आपको @Krzysztof समाधान या उपरोक्त किसी भी अन्य उत्तर की कोशिश करने के बाद भी वही त्रुटि मिल रही है, तो आपके लिए काम करने वाला एक काम MVC रनटाइम 4.0 की स्थापना रद्द करना है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.