फ़ाइल या असेंबली लोड नहीं कर सका 'Microsoft.Web.Infrastructure,


79

मैंने अपनी वेब साइट को सर्वर पर अपलोड करने का प्रयास किया। यह मेरे स्थानीय होस्ट के साथ ठीक काम कर रहा था, इसलिए मैंने अपने लोकलहोस्ट wwwrootफ़ोल्डर में सब कुछ सर्वर पर अपलोड किया और कनेक्शन स्ट्रिंग को बदल दिया।

लेकिन यह त्रुटि है:

Exception information: 
    Exception type: InvalidOperationException 
    Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
   at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
   at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
   at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
   at RouteDebug.PreApplicationStart.Start()

प्रोजेक्ट था nopcommerce

इस त्रुटि को हल करने के लिए क्या किया जाना चाहिए?


शायद को कॉपी किया काम नहीं है क्योंकि मेजबान, एक ही dependancies इंस्टॉल नहीं है, इस गाइड की जाँच: iwantmymvc.com/2011-03-23-bin-deploy-aspnet-mvc-3-visual-studio
माइक ट्रुसोव

जवाबों:


57

आपको अपनी परियोजना के साथ dll को शामिल करना होगा और इसके साथ एक संदर्भ भी जोड़ना होगा।

यहां पहले से ही स्टैक पर एक समान मुद्दे की एक कड़ी है: एमवीसी 3 तैनाती पर निर्भरता समस्याएं


अपलोड करना है "_bin_deployableAssemblies" फ़्लॉडर भी सर्वर पर ??
user1348351

इसे संभालने के कुछ अलग तरीके हैं और यह इस बात पर निर्भर करता है कि आप किस तरह से तैनाती कर रहे हैं। लेकिन यदि आप मेरी पोस्ट के लिंक पर क्लिक करते हैं और फिर चेक मार्क के साथ शीर्ष उत्तर पर ब्लॉग के माध्यम से जाते हैं, तो आप देखेंगे कि यदि आप इसे सही ढंग से सेट करते हैं तो _bin_deployableAssemblies से dlls का स्वचालित रूप से ध्यान रखा जाता है जब आप एक करते हैं तैनात (या वेब परिनियोजित)। यहाँ मेरे द्वारा बताये गए ब्लॉग का लिंक दिया गया है।
कॉलिन पीयर

5
जिस ब्लॉग के माध्यम से यह लिंक दिखाई देता है वह अब उपलब्ध नहीं है। यह जवाब - stackoverflow.com/a/12683392/137474 ने मेरे लिए काम किया।
बाल्दी

@ColinPear, बहुत बहुत धन्यवाद, बस मैं क्या देख रहा था। मेरे पास एक ईकामर्स वेब अप्लीकेशन था जो अनुरोध करता था कि !.
पाटसन लाईनर

मेरे मामले में, मेरी साइट "Microsoft.Web.Infrastructure.dll" के बिना plesk में काम करती है लेकिन जब cpanel में जाती है तो यह त्रुटि दिखाई जाती है!
ओमिड-आरएच

39

यह एक संदर्भ सफाई करने के बाद निकलता है, इसे हटा दिया जाता है Microsoft.Web.Infrastructure, लेकिन package.config फ़ाइल से नहीं। Package Manager Consoleविजुअल स्टूडियो का उपयोग करके इसे फिर से जोड़ने की कोशिश करने के बाद , यह कहता है कि यह पहले से ही स्थापित है जो कि गलत है क्योंकि इसे हटा दिया गया था।

मैंने फिर packages.configफाइल में कोड की लाइन हटा दी

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />

और फिर से आदेश दिया

PM> Install-Package Microsoft.Web.Infrastructure

इसके बाद, अब यह ठीक काम करता है।


32

यहां से डाउनलोड किए गए AspNetMVC3ToolsUpdateSetup को इंस्टॉल करें, संदर्भ को जोड़े बिना इस समस्या को हल करेंगे


28

उत्तरों की संख्या के बावजूद, मैं एक और जोड़ूंगा जो IMHO चीजों को थोड़ा स्पष्ट करता है।

जैसा कि रॉब और राइटमेल ने पहले ही उल्लेख किया है Microsoft.Web.Infrastructureकि एक नूगेट पैकेज (लिंक की आवश्यकता नहीं है, आपके पास नूगेट पैकेज मैनेजर में है)।

जाहिर है, यह आपके प्रोजेक्ट द्वारा संदर्भित किया गया था और अचानक गायब हो गया। कई कारण मौजूद हो सकते हैं लेकिन महत्वपूर्ण बात यह है कि आपके द्वारा विजुअल स्टूडियो में स्वचालित पैकेज पुनर्स्थापना सक्षम करने के बावजूद :

  • समाधान के लिए NuGet संकुल प्रबंधित करें (समाधान एक्सप्लोरर में संदर्भ मेनू),
  • लापता पैकेज (सेटिंग्स) डाउनलोड करने के लिए NuGet की अनुमति दें,
  • विजुअल स्टूडियो (सेटिंग्स) में निर्माण के दौरान लापता पैकेजों की स्वचालित रूप से जाँच करें,

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

अद्यतन-पैकेज Microsoft.Web.Infrastructure -Reinstall

संस्करण संरक्षण की आवश्यकता हो सकती है यदि आप गलती से किसी मौजूदा पैकेज को उसके नए संस्करण के साथ अधिलेखित नहीं करना चाहते हैं जो संभवतः आपके प्रोजेक्ट में उपयोग की गई "पुरानी" कार्यक्षमता को हटा देता है।

और, एक प्रमाण के रूप में, थोड़ा लंबा होने के बावजूद, कि संस्करण नहीं बदलता है, यहां कमांड के निष्पादित होने पर आउटपुट होता है:

PM> Update-Package Microsoft.Web.Infrastructure -Reinstall
Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2'
Attempting to resolve dependencies for multiple packages
Resolving actions install multiple packages
...
Package removal starts here...
...
Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config'
Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp
Removed package 'WebGrease 1.5.2' from 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1'
Successfully uninstalled 'WebGrease 1.5.2' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config'
Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp
...
More package removals here. Omitted for brevity...
...
Removed package 'Antlr 3.4.1.9004' from 'packages.config'
Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
--- Install packages (in reverse order) ---
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Antlr.3.4.1.9004' to 'packages.config'
Successfully installed 'Antlr 3.4.1.9004' to DemoApp
...
More package installs here. Omitted for brevity...
...
Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages'
Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config'
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp
...
More package installs here. Omitted for brevity...
...
Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'WebGrease.1.5.2' to 'packages.config'
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1'
Successfully installed 'WebGrease 1.5.2' to DemoApp
Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages'
Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config'
...
End of package re-install. 
...
Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp
PM> 

यदि आप सभी पैकेजों को फिर से स्थापित करना चाहते हैं, तो आपको यहां और यहां NuGet में अपडेट / इंस्टॉल कमांड से परिचित होने की आवश्यकता हो सकती है


27

मैंने पाया कि भले ही यह मेरे देव बॉक्स पर काम किया हो, लेकिन असेंबली को प्रोजेक्ट में नहीं जोड़ा गया था। Microsoft.eb.Infrastructure के लिए NuGet में खोजें और इसे वहां से इंस्टॉल करें। फिर, सुनिश्चित करें कि यह प्रतिलिपि स्थानीय चयनित है।


1
एक ही समस्या, यह CopyLocal = सच पर था, पता नहीं क्यों यह काम नहीं किया। आपके समाधान ने मेरी समस्या हल कर दी :)
GôTô

6

मौजूदा परियोजना के साथ VS2015 पर नए विंडोज 10 मशीन पर इस मुद्दे का अनुभव किया। पैकेज प्रबंधक 3.4.4। संकुल को पुनर्स्थापित करें।

पुनर्स्थापना पूरी तरह से काम नहीं करती है। पैकेज मैनेजर कमांड लाइन पर निम्नलिखित को चलाना था

Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall

इसने मेरी समाधान फ़ाइल में निम्नलिखित परिवर्तन किए जो पुनर्स्थापना ने नहीं किए।

<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

आपके द्वारा समाधान फ़ाइल में आइटमग्रुप सेक्शन में उपरोक्त तत्वों को जोड़ने से ALSO द्वारा प्रदान की गई समस्या का समाधान हो जाएगा .. \ _ \ पैकेज \ Microsoft.eb.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll मौजूद हैं।

आसान बस करने के लिए -Reinstall लेकिन यह पैकेज बहाल करने के लिए अलग तरीके से क्या करता है समझने के लिए अच्छा है।


मुझे भी यही समस्या थी। समाधान के "राइट नगेट पैकेज" राइट-क्लिक मेनू विकल्प की कोशिश की। आउटपुट ने मुझे बताया कि पुनर्स्थापित करने के लिए कुछ भी नहीं था। आपकी सलाह के बाद, मैंने पैकेज मैनेजर कंसोल से अपडेट-पैकेज -प्रोजेक्ट "मेरी परियोजना का नाम" यहां चलाया और सभी पैकेजों को सही ढंग से जोड़ा गया
रोब बोमन

@ रोबोबमैन यह महान रोब है। हो सकता है कि यह आपके मामले में मायने नहीं रखता हो, लेकिन -Reinstall ध्वज को भी शामिल करने के लिए सावधान रहें। यह सुनिश्चित करेगा कि आप पहले जैसे ही पैकेज संस्करणों के साथ समाप्त हो जाएं। यदि आप इस ध्वज को छोड़ देते हैं, तो यह आपके पैकेज को नवीनतम संस्करण में अपडेट कर देगा, जो कि यदि आप ऐसा करने का इरादा नहीं रखते हैं, तो समस्या हो सकती है। इसकी पूरी जानकारी के लिए देखें docs.microsoft.com/en-us/nuget/tools/ps-ref-update-package
Rohan

5

रिसर्पर ने Microsoft.Web.Infrastructure को अप्रयुक्त संदर्भ के रूप में पाया, इसलिए मैंने इसे हटा दिया। स्थानीय रूप से ठीक काम कर रहा था, लेकिन फिर देव को प्रकाशित करने के बाद मुझे वही त्रुटि मिली।

निष्कर्ष, Resperper द्वारा अप्रयुक्त के रूप में चिह्नित संदर्भ हटाते समय सावधान रहें


यह वही था जो मैंने किया था।
आंद्रेफिजो

मेरे मामले में, मेरी साइट "Microsoft.Web.Infrastructure.dll" के बिना plesk में काम करती है लेकिन जब cpanel में जाती है तो यह त्रुटि दिखाई जाती है!
ओमिड-आरएच


3

मुझे भी ऐसी ही समस्या का समाधान करना पड़ा था। नुगेट ने पैकेज को सफलतापूर्वक स्थापित दिखाया, लेकिन मेरे प्रोजेक्ट में संदर्भ नहीं जोड़ा गया।

रनिंग <PM> Install-Package Microsoft.Web.InfraStructureने भी मदद नहीं की क्योंकि पैकेज मैनेजर यह कहता रहा कि यह पहले से इंस्टॉल है

मैंने आखिरकार इसे csproj फ़ाइल को संपादित करके और इन पंक्तियों को जोड़कर मैन्युअल रूप से जोड़ा:

 <Reference Include="Microsoft.Web.Infrastructure">
  <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
  <Private>True</Private>
</Reference>

इससे समस्या हल हो गई।


मैंने csproj फ़ाइल को सत्यापित किया और यह उस फ़ोल्डर का संदर्भ दे रहा था जो समस्या पैदा कर रहा था। उस अतिरिक्त फ़ोल्डर नाम को हटाने से मेरी समस्या हल हो गई
सुपरचु

2

आपको अपने एप्लिकेशन की मेजबानी करने वाले सर्वर पर ASP.NET MVC फ्रेमवर्क डाउनलोड करना होगा। यह एक त्वरित फिक्स है, बस यहां से डाउनलोड करें और इंस्टॉल करें (यह MVC 3 फ्रेमवर्क http://www.asp.net/mvc/mvc3 है ), फिर बूम आप जाने के लिए अच्छे हैं।


2

मेरे Microsoft.Web.Infrastructure.dllलिए बिन फ़ोल्डर से गायब था, यह परियोजना में स्थानीय कॉपी करने के लिए सेट नहीं किया गया था। समाधान और पृष्ठ लोड में किसी अन्य प्रोजेक्ट से dll की प्रतिलिपि बनाई गई।


2

सबसे पहले Microsoft.Web.Infrastructure को package.config से हटा दें।

और फिर से आदेश दिया

PM> इंस्टॉल-पैकेज Microsoft.eb.Infrastructure और सुनिश्चित करें कि कॉपी करें स्थानीय संपत्ति सही होनी चाहिए।


1

बहुत आसान उपाय:

विजुअल स्टूडियो में, टूल / लाइब्रेरी पैकेज मैनेजर / पैकेज मैनेजर कंसोल पर जाएं

<PM> Install-Package Microsoft.Web.InfraStructure

आप का समय अच्छा हो


1

यहाँ मेरा परिदृश्य था।

मेरे पास एक बहु परियोजना समाधान था जिसमें ए, बी, सी .. एन।

प्रोजेक्ट बी एक कोड लाइब्रेरी था जिसमें selectlistवस्तुओं का कारखाना होता था ।

यह परियोजना विकास में अपेक्षित रूप से चलेगी, लेकिन जब हमारे परीक्षण के वातावरण में प्रकाशित हो रही थी, तो मुझे वह त्रुटि मिल रही थी, जिसका आप सामना कर रहे थे:

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

क्या हुआ था नगेट पैकेज मैनेजर के माध्यम से, मैंने गलती से "Microsoft ASP.NET MVC" स्थापित कर दिया था, जो इसके लिए निर्भरताएं स्थापित करता था:

  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebPages

कम और निहारना, Microsoft.AspNet.WebPages "Microsoft.Web.Infrastructure" पर निर्भर करता है।

मेरा समाधान ऊपर उल्लेखित तीन पैकेजों की स्थापना रद्द कर रहा था (एमवीसी, रेजर, वेबपेज) फिर संदर्भों पर राइट क्लिक करें> संदर्भ जोड़ें> असेंबली> एक्सटेंशन> System.Web.MVC।


मैं असेंबल्स के माध्यम से नहीं जोड़ सका, लेकिन नुगेट पैकेज को वापस जोड़ने से समस्या हल हो गई
नितेश

1

मुझे "कॉपी लोकल" को रेफरेंस प्रॉपर्टीज़ में गलत पर सेट करना था, फिर वापस ट्रू में। ऐसा करने से .csproj फ़ाइल में निजी ट्रू सेटिंग जुड़ गई।

<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">      <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
      <Private>True</Private>
    </Reference>

मैंने मान लिया था कि यह पहले से ही सेट है, क्योंकि "कॉपी लोकल" ट्रू के रूप में दिखाया गया है।


0

मुझे नहीं पता कि मेरे प्रोजेक्ट के साथ क्या हुआ लेकिन इसने DLL के गलत रास्ते का हवाला दिया। नगेट ने इसे ठीक से स्थापित किया और यह वास्तव में अन्य पैकेजों के साथ मेरी फाइल सिस्टम पर था लेकिन सिर्फ गलत तरीके से संदर्भित था।

packagesफ़ोल्डर अपने प्रोजेक्ट से दो निर्देशिकाओं ऊपर मौजूद है और यह केवल के साथ पथ शुरू करने से एक ऊपर जा रहा था ..\packages\। मैंने शुरू करने के लिए रास्ता बदल दिया ..\..\packages\और इसने मेरी समस्या को ठीक कर दिया।


0

मेरी मशीन पर Nuget निर्भरता को सही ढंग से डाउनलोड नहीं किया गया था, nuget पैकेज के अंदर काम करने वाला फ़ोल्डर मौजूद नहीं था, इसलिए त्रुटि।

इससे पहले

यहाँ छवि विवरण दर्ज करें

मैंने पैकेज फ़ोल्डर में Nuget पैकेज का नाम बदला और Nuget ने इसे आवश्यक रूप से आवश्यक फ़ोल्डर के साथ सही ढंग से डाउनलोड किया।

उपरांत यहाँ छवि विवरण दर्ज करें


0

कुछ मामलों में परियोजना की सफाई / समाधान, शारीरिक रूप से हटाने bin/औरobj/ और इस तरह की त्रुटियां सुधारने में होगा पुनर्निर्माण। यह तब हो सकता है, उदाहरण के लिए, कुछ संकुल और संदर्भ स्थापित / जोड़े जा रहे हैं और फिर हटा दिए गए हैं, कुछ कलाकृतियों को पीछे छोड़ रहे हैं।

यह मेरे साथ हुआ Microsoft.Web.Infrastructure: शुरू में, परियोजना को उस विधानसभा की आवश्यकता नहीं थी। कुछ प्रयोगों के बाद, जिसका शुद्ध प्रभाव अंत में शून्य होना चाहिए था, मुझे यह अपवाद मिला। उपरोक्त चरणों ने अप्रयुक्त निर्भरता स्थापित करने की आवश्यकता के बिना इसे हल किया।


0

मुझे यह समस्या थी। मेरे पास परियोजना में डीएलएल शामिल था और स्थानीय रूप से कॉपी लोकल की सेटिंग सही थी। न जाने क्यों यह शुरू हो गया, क्योंकि डीएलएल इस परियोजना में लंबे समय से था। मैंने ReSharper के कुछ उल्लेखों को संभवत: इसे हटाते हुए सुना है, लेकिन मैं यह नहीं कह सकता कि मैंने एक अप्रयुक्त संदर्भ निष्कासन चलाया है।

मुझे क्या मदद मिली: - "अपडेट-पैकेज Microsoft.eb.Infrastructure -Reinstall" प्रोजेक्ट पर चल रहा है, जिसने पूरे समाधान को अपडेट किया, लेकिन इसमें और स्वयं की मदद करना समाप्त नहीं किया। - फिर मैं प्रोजेक्ट्स के संदर्भों से गुज़रा और कॉपी लोकल को झूठे और फिर सच पर वापस सेट कर दिया। यह वास्तव में DLL संदर्भ के तहत CSPROJ फ़ाइल में एक पंक्ति को जोड़ने के परिणामस्वरूप हुआ: ट्रू। या लाइनों के साथ कुछ ... किसी भी तरह, अब बिल्ड फाइलों की नकल कर रहा था।


0

तो, यहाँ क्या मेरे लिए VS2019 का उपयोग कर काम किया है। मुझे यह त्रुटि एक प्रोजेक्ट पर Nuget पैकेजों को अपडेट करने की कोशिश करते समय मिल रही थी जबकि Microsoft.Web.Infrastructure एक ही समाधान में एक अलग प्रोजेक्ट में था। मुझे अपने प्रोजेक्ट के पैकेज फ़ोल्डर से Microsoft.Web.Infrastructure.1.0.0.0 फ़ोल्डर को हटाना पड़ा। इसे नौगट के माध्यम से पुनर्स्थापित किया और फिर सब कुछ फिर से काम करना शुरू कर दिया। क्रेजी स्टफ।

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