ไม่สามารถโหลดไฟล์หรือชุดประกอบ ... พารามิเตอร์ไม่ถูกต้อง


211

เมื่อเร็ว ๆ นี้ฉันพบข้อยกเว้นต่อไปนี้ที่โซลูชัน C #:

ข้อผิดพลาด 2 ไม่สามารถโหลดไฟล์หรือชุดประกอบ 'Newtonsoft.Json, รุ่น = 3.5.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = b9a188c8922137c6' หรือการอ้างอิงอย่างใดอย่างหนึ่ง พารามิเตอร์ไม่ถูกต้อง (ข้อยกเว้นจาก HRESULT: 0x80070057 (E_INVALIDARG))

สิ่งนี้ไม่ได้ขึ้นอยู่กับรหัสของฉันหรือชื่อชุดประกอบ (เช่นNewtonsoft.Jsonในกรณีนี้)

เมื่อฉันลบ dll นี้จากการแก้ปัญหาคอมไพเลอร์บอกเกี่ยวกับอีกในข้อยกเว้นเดียวกัน ดังนั้นฉันคิดว่าบางสิ่งบางอย่างจะถูกปิด / เปิดที่พีซีของฉัน :)


3
ไม่ใช่อาจเป็นข้อผิดพลาดของคอมไพเลอร์หรือข้อยกเว้นรันไทม์ ฉันสงสัยว่าหลัง โปรดชัดเจนมากขึ้น
leppie

2
ฉันยังต้องเผชิญกับข้อยกเว้นเดียวกัน แต่ฉันจัดการเพื่อแก้ไขด้วยวิธีการแก้ปัญหาของโทมัสปัญหาเกิดจากการปิดระบบที่ไม่เหมาะสมเนื่องจากไฟฟ้าขัดข้อง
Sandeep

คำตอบ:


346

ดูเหมือนว่าชุดประกอบที่เสียหายจะถูกอ้างอิง

ล้างทั้งสอง:

  1. โฟลเดอร์ \ bin ของโครงการของคุณ

  2. โฟลเดอร์ temp (ควรอยู่C:\Users\your_username\AppData\Local\Temp\Temporary ASP.NET Filesใน windows 7)

และดูว่าข้อผิดพลาดยังคงเกิดขึ้น


3
อเล็กซ์ขอบคุณมากสำหรับสิ่งนี้! สิ่งที่สองช่วย: ฉันทำความสะอาดไดเรกทอรีไฟล์ ASP.NEt ชั่วคราว)
Liker777

ดีใจที่ได้ยินมันใช้งานได้ อย่าลืมยอมรับคำตอบถ้ามันช่วยได้ :)
อเล็กซ์

9
ดูคำตอบโดย @Thomas สำหรับสถานที่อื่น ๆ ที่จะลบ (ซึ่งทำงานให้ฉัน)
Simon_Weaver

3
ขอบคุณ การล้างโฟลเดอร์ temp ของผู้ใช้หลังจากความผิดพลาดอย่างหนักแก้ไขปัญหาให้ฉัน
Petrus Theron

13
แฟ้ม ASP.NET% TEMP% \ Temporary C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ไฟล์ ASP.NET C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ไฟล์ ASP.NET C : \ ASP.NET แฟ้ม \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ไฟล์ ASP.NET C: /Windows/Microsoft.NET/Framework/ v4.0.30319 / ไฟล์ ASP.NET ชั่วคราวรายการนี้จะเพิ่มขึ้นราวกับว่าคุณมี. NetFramework รุ่นอื่น คำตอบ Src: stackoverflow.com/a/16033324/1724777 stackoverflow.com/a/11743430/1724777 เหตุผลสำหรับการสอบสวน: BLUE_SCREEN_OF_DEATH
NavaRajan

286

ขึ้นอยู่กับว่าคุณใช้ X64 อยู่หรือไม่คุณอาจต้องทำความสะอาดจุดอีกสองสามจุด แค่ทำความสะอาดไดเรกทอรีผู้ใช้ของฉันก็ยังไม่เพียงพอ

  1. ไฟล์% TEMP% \ ชั่วคราว ASP.NET
  2. C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ไฟล์ ASP.NET
  3. C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ไฟล์ ASP.NET
  4. C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ไฟล์ ASP.NET
  5. C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ไฟล์ ASP.NET

รายการนี้จะเพิ่มขึ้นราวกับว่าคุณมีเฟรมเวิร์กเวอร์ชันอื่นติดตั้งอยู่


72
คุณอาจพบว่าคุณต้องทำสิ่งนี้หากคอมพิวเตอร์ของคุณมีหน้าจอสีน้ำเงินระหว่างการรวบรวม
Simon_Weaver

2
+1 คำตอบที่รวบรวมไว้อย่างดี สิ่งนี้ทำให้ฉันขอบคุณ
Ralph Lavelle

7
สิ่งนี้ดูเหมือนจะเป็นวิธีแก้ปัญหาหากคุณใช้งาน Visual Studio ในฐานะผู้ดูแลระบบเมื่อคอมพิวเตอร์ของคุณล่มหรืออีกวิธีหนึ่งคือถ้าคุณเป็นคนขี้เกียจเหมือนตัวเองเมื่อแบตเตอรี่หมด
Sav

4
พระเจ้าช่วย! ฉันได้รับมากกว่า 4GB จากโครงการก่อนประวัติศาสตร์ของฉันในสถานที่เหล่านั้น! สิ่งนี้ไม่เคยทำความสะอาดหรือไม่!?! ขอบคุณ!
user2173353

2
แค่อยากจะบอกให้คุณรู้ว่าตลอด 2 ปีที่ผ่านมาโพสต์นี้ยังคงช่วยเหลือผู้คน ขอบคุณมาก ๆ.
Laurence Frost

42

ฉันต้องชัดเจน

C: /Windows/Microsoft.NET/Framework/v4.0.30319/ ไฟล์ ASP.NET ชั่วคราว

ปัญหานี้ได้รับการแก้ไขเท่านั้น


1
คำตอบนี้ใช้ได้สำหรับฉันด้วยเช่นกันกับเครื่อง Win 7 แบบ 64 บิตที่โฮสต์ MVC 4 ใน IIS Express
Ben H

13

หากต้องการทราบว่าต้องล้างอะไรอย่างแน่นอนให้เพิ่มคีย์รีจิสทรีต่อไปนี้:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion\EnableLog (DWord set to 1).

จากนั้นคุณจะเห็นผลลัพธ์เช่นด้านล่าง สิ่งนี้จะบอกคุณว่า asp.net พยายามโหลด DLLs ของคุณหรือไม่ ล้างไดเรกทอรีนี้

LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\app\AtlasAdvisor\web\web.config
LOG: Using host configuration file: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet.DLL.**
LOG: Attempting download of new URL **file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/3c8629f7/dfa387b6/Avanade.ViddlerNet/Avanade.ViddlerNet.DLL**.

3
โอ้และการรีเซ็ต IIS ก็เป็นสิ่งจำเป็นสำหรับฉันในการดูเส้นทาง
Landon Poch

บันทึกนี้แสดงที่ใด
ลุคไรซ์

บันทึกจะแสดงในเอาต์พุตข้อผิดพลาดเมื่อเกิดข้อยกเว้น
voidsstr

12

ลบไฟล์เฟรมเวิร์กชั่วคราวสำหรับโครงการของคุณใน: -

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \


5

คุณสามารถล้างไดเรกทอรีแพ็คเกจและอนุญาตให้NuGetดาวน์โหลดแพคเกจที่ขาดหายไปอีกครั้ง

มันแก้ไขปัญหาสำหรับฉัน


... และฉันแม้ว่าฉันเพิ่งลบไดเรกทอรีแพ็คเกจที่ละเมิด
Phil Cooper

ฉันลบ temps ใน AppData temp & c: \ ... \ micorosoft.net \ .. \ temp, iisreset, ... ทุกอย่างที่กล่าวไว้ข้างต้น แต่ไม่ได้ทำงานกับฉัน เมื่อฉันลบแพ็กเกจทั้งหมดและกู้คืนมัน ... มันใช้งานได้กับฉัน ... ขอบคุณมาก: D
bunjeeb

@bunjeeb มันเป็นความสุขครับ :)
megz

4

ลบไฟล์ทั้งหมดออกจากโฟลเดอร์เหล่านี้

C: /Windows/Microsoft.NET/Framework/v4.0.30319/ ไฟล์ ASP.NET ชั่วคราว C: /Windows/Microsoft.NET/Framework64/v4.0.30319/ ไฟล์ ASP.NET ชั่วคราว



3

เพียงแค่ล้างโฟลเดอร์นี้: (เฉพาะ windows x64)

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ไฟล์ ASP.NET


2

ขอบคุณ Alex จุดที่สองของคุณช่วยฉันแก้ไขสิ่งนี้

ปรากฏว่าเว้นแต่คุณจะเรียกใช้ Visual Studio ในฐานะผู้ดูแลระบบใน Windows 7 จะเก็บไฟล์ temp ของคุณไว้ในเครื่องแทนที่จะเป็น C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ไฟล์ ASP.NET

ดูโพสต์บล็อกต่อไปนี้: http://www.dotnetscraps.com/dotnetscraps/post/Location-of-Temporary-ASPNET-files-in-Vista-or-Windows-7.aspx


2

ฉันมีปัญหาเดียวกันที่นี่ - วิธีแก้ไขปัญหาข้างต้นไม่ได้ผล ปัญหาเกิดขึ้นกับ ActionMailer ฉันรันการถอนการติดตั้งและติดตั้งคำสั่ง nuget ต่อไปนี้

uninstall-package ActionMailer
install-package ActionMailer

แก้ไขปัญหาของฉันหวังว่าจะช่วยคนอื่นได้


2

สิ่งนี้สามารถเกิดขึ้นได้ในขณะที่อ้างอิง COM wrapper dll ภายในโครงการ Visual Studio ของคุณภายใต้การอ้างอิงเลือก dll wrapper COM ที่อ้างอิงและตรวจสอบให้แน่ใจว่าพวกเขามีค่าคุณสมบัติดังต่อไปนี้: "ฝัง Interop Types": False และ "Specific Version": False


นี่เป็นคำตอบที่ดีมากและควรได้รับการโหวตมากขึ้น คำตอบอื่น ๆ ทั้งหมดจะให้บริบทของ ASP.NET อย่างไรก็ตามฉันมีข้อยกเว้นเดียวกันที่เกิดจากการโทร COM ในแอปพลิเคชันคอนโซลแบบง่าย มันทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน ขอบคุณครับ
alexlomba87

2

ฉันเพิ่งลบข้อมูลชั่วคราวของแอปพลิเคชันออกจากเส้นทางนี้

C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files

แก้ไขปัญหา


2

ฉันเห็นนักเทคโนโลยีจำนวนมากได้โพสต์เกี่ยวกับการล้างไดเรกทอรีชั่วคราวของ ASP .Net รันไทม์ที่เกี่ยวข้องกับแต่ละเฟรมเวิร์ก. Net ที่โฮสต์บนเครื่องของคุณเช่นนี้คำตอบ แต่ฉันเชื่อว่าเราควรรู้โลจิสติกส์ที่ชัดเจนว่าทำไมเราต้องล้างไดเรกทอรีการทำงานชั่วคราวทั้งหมดของกรอบงานสุทธิทั้งหมด ตามฉันมันไม่ควรเป็นกรณี

คำแนะนำของฉันคือคุณควรลองใช้วิธีการล้างไดเรกตอรีไดเรกทอรีเพื่อแก้ไขปัญหานี้ คุณจะทราบได้อย่างไรว่าควรล้างไดเรกทอรีใด

  1. ไปที่ IIS และคลิกขวาที่โหนดเว็บไซต์ของคุณในบานหน้าต่างนำทางซ้ายเพื่อเปิดเมนูบริบท ในเมนูบริบทให้ชี้ไปที่Manage Application-> Advanced Settings...เพื่อเปิดAdvanced Settingsหน้าต่าง
  2. ตรวจสอบ Application Pool ที่เว็บไซต์ของคุณได้รับมอบหมาย ในกรณีของฉันมันเป็นDefaultAppPoolที่แสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

  1. ตอนนี้ไปที่Application Poolsโหนดในแถบนำทางด้านซ้ายใน IIS ตอนนี้ตรวจสอบว่า. Net CLR Version ใดที่กำลังเรียกใช้โดยกลุ่มแอปของคุณ ในกรณีของฉันมันคือ v4.0 ดังที่แสดงด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่

เนื่องจากรุ่น CLR ที่โฮสต์โดยกลุ่มแอปของฉันคือ v4.0 ดังนั้นฉันจึงลบเฉพาะไฟล์ชั่วคราวในโฟลเดอร์ที่เกี่ยวข้องกับ ASP .NET v4.0 เท่านั้นดังต่อไปนี้:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files

และนั่นคือมัน ปัญหาของฉันได้รับการแก้ไข

บทเรียนที่ได้รับ : สิ่งนี้บ่งบอกถึงความจริงที่ว่าไฟล์ชั่วคราวทั้งหมดที่เว็บไซต์ของคุณใช้นั้นไม่ได้กระจัดกระจายไปทั่วไดเรกทอรีต่าง ๆ แต่มันก็ถูกเรียกโดยกลุ่มแอพ ดังนั้นคุณต้องล้างโฟลเดอร์เฉพาะนั้นเท่านั้น


1

การล้าง C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ไฟล์ ASP.NET ทำงานให้ฉัน กำลังคิดถึงกระบวนการลบอัตโนมัติเพื่อหลีกเลี่ยงปัญหานี้ในอนาคต


1

หากคุณใช้เครื่องมือข้อมูลของ SQL Server 2012 ซึ่งใช้เชลล์ VS2010 ณ วันที่ 1 พฤษภาคม 2013 ให้ตรวจสอบการตั้งค่าเครื่องมือจัดการการกำหนดค่าของคุณ การเปลี่ยนชื่อเซิร์ฟเวอร์จากเวิร์กโฟลว์เป็น xCPWorkflow ก็เพียงพอที่จะสร้างแบบเดียวกันแน่นอนพารามิเตอร์ไม่ถูกต้อง (ข้อยกเว้นจาก HRESULT: 0x80070057 (E_INVALIDARG))ข้อความ


1

คุณสามารถล้างสร้างหรือสร้างแอปพลิเคชันของคุณใหม่หรือเพียงแค่ลบไฟล์ ASP.NET ชั่วคราวที่C: \ Users \ ชื่อผู้ใช้ของคุณ \ AppData \ Local \ Temp

มันใช้งานได้เหมือนเวทมนตร์ ในกรณีของฉันฉันมีปัญหาเกี่ยวกับการชุมนุมบอกว่าไม่สามารถโหลดไฟล์ bla bla bla

คุณยังสามารถดูโซลูชัน 2 ได้ที่http://www.codeproject.com/Articles/663453/Understanding-Clean-Build-and-Rebuild-in-Visual-St


1

ฉันมีปัญหานี้เมื่อสร้างคอนโทรลเลอร์ใน MVC ฉันเปลี่ยนเวอร์ชัน. net framework ปัญหาได้รับการแก้ไขแล้ว


0

ปัญหาเกี่ยวข้องกับ. Net runtime version ของไลบรารีคลาสที่อ้างอิง (การอ้างอิงแบบขยายเลือกไลบรารีและตรวจสอบ "Runtime Version" ฉันมีปัญหากับ Antlr3.Runtime หลังจากอัปเกรดโปรเจค visual studio เป็น v4.5 ฉัน ใช้ NuGet เพื่อถอนการติดตั้ง Microsoft ASP.NET Web Optimization Framework (เนื่องจากเครือข่ายการพึ่งพาที่ป้องกันไม่ให้ฉันถอนการติดตั้ง Antlr3 โดยตรง)

ฉันใช้ NuGet เพื่อติดตั้ง Microsoft ASP.NET Web Optimization Framework อีกครั้ง สิ่งนี้ติดตั้งเวอร์ชันรันไทม์ที่ถูกต้องอีกครั้ง


0

ในกรณีของฉันฉันต้องการรวบรวม COM ที่มองเห็น DLL ปัญหาคือว่า DLL รุ่นนี้เก่ากว่าอยู่ที่นี่:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE

ดังนั้น Visual Studio จึงโหลดรุ่นนี้แทนที่จะเป็นรุ่นที่รวบรวมใหม่เนื่องจากพยายามลงทะเบียน


0

ล้างไฟล์ทั้งหมดจากโฟลเดอร์ชั่วคราว (C: \ Users \ ชื่อผู้ใช้ \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ project โฟลเดอร์)



0

ฉันประสบข้อผิดพลาดเดียวกันเนื่องจากแอปพลิเคชันไม่พบเฟรมเวิร์กที่สัมพันธ์กันในC:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\โฟลเดอร์ ฉันเพิ่งซ่อม Visual Studio ของฉันซึ่งเพิ่มกรอบงานที่ต้องการในตำแหน่งด้านบนและทำงานได้ดี


0

ในกรณีของฉันการเปลี่ยนหมายเลขพอร์ต IIS Express ในคุณสมบัติโครงการของฉันแก้ไขปัญหาได้


0

หากมีบุคคลอื่นกำลังใช้ชุดเครื่องมือ WiX ฉันค้นพบว่าโครงการตัวติดตั้งของฉันมีการอ้างอิงถึงโครงการเก่าที่เพิ่งถูกลบออกจากโซลูชัน ใช้เวลาสักครู่ในการตระหนักเนื่องจากมีหลายโครงการในโซลูชันที่ฉันพยายามสร้างและข้อความไม่ได้ระบุว่าโครงการใดที่ไม่สามารถสร้างได้ (และทำความสะอาดซึ่งล้มเหลวเช่นกัน)


0

ฉันมีผู้ใช้ Siemens Teamcenter 10 Client สำหรับ Microsoft Office ได้รับข้อผิดพลาดเดียวกันเกี่ยวกับ DLL ที่แตกต่างกัน ไม่มีคำตอบอื่นใดที่ใช้งานได้ วิธีแก้ไขคือลบโฟลเดอร์ใน

C:\Users\%username%\AppData\Local\assembly\

0

ฉันมีปัญหาที่คล้ายกันในขณะที่เปิดผู้จัดการแพ็คเก็ต Nuget ฉันลบไฟล์ชั่วคราวทั้งหมดและสร้างโครงการมันทำงานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.