ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Newtonsoft.Json' หรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความที่แสดงออกไม่ตรงกับการอ้างอิงประกอบ


216

สิ่งที่ฉันได้ลองหลังจากค้นหา:

  1. ใน Web.Config ให้ผลผูกพันกับเวอร์ชั่นเก่า:

    <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.1.0" />
    </dependentAssembly>
    
  2. แก้ไขไฟล์. csproj ของฉันเพื่อให้แน่ใจว่ามี Newtonsoft อ้างอิงเดียวเท่านั้น

    <Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
       <HintPath>..\packages\Newtonsoft.Json.6.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
       <SpecificVersion>False</SpecificVersion>
       <Private>True</Private>
    </Reference>
    
  3. ค้นหาคอมพิวเตอร์ของฉันสำหรับทุก Newtonsoft.Json.dll และลบทุกรุ่นที่ไม่ใช่ 6.0.1 และลบเนื้อหาของโฟลเดอร์ temp ของฉัน

  4. ซ่อมแซม / ติดตั้งแพคเกจใหม่ในคอนโซลตัวจัดการ nuget

มันประสบความสำเร็จในการสร้าง แต่ได้รับข้อผิดพลาดเมื่อไปที่เว็บไซต์

แก้ไข

ตกลงดังนั้นฉันพยายามติดตั้งใหม่เหมือนทุกแพ็คเกจ nuget และดูเหมือนว่าจะเพิ่มรุ่น newtonsoft.json.dll รุ่น 4.5 กลับมา แต่ฉันได้รับข้อผิดพลาดเดียวกัน Target freamework ของโครงการของฉันคือ. NET 4.5.1 และนี่คือการติดตามสแต็คที่ฉันได้รับตอนนี้:

ผิดพลาดเซิร์ฟเวอร์ใน '/' แอพลิเคชัน.

ไม่สามารถโหลดไฟล์หรือแอสเซมบลีNewtonsoft.Jsonหรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ยกเว้นจาก HRESULT: 0x80131040)

คำอธิบาย: มีข้อยกเว้นที่ไม่สามารถจัดการได้เกิดขึ้นระหว่างการดำเนินการตามคำขอเว็บปัจจุบัน โปรดตรวจสอบการติดตามสแต็กสำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาดและที่มาในรหัส

รายละเอียดข้อยกเว้น:: System.IO.FileLoadExceptionไม่สามารถโหลดไฟล์หรือแอสเซมบลีNewtonsoft.Jsonหรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ยกเว้นจาก HRESULT: 0x80131040)

ข้อผิดพลาดของแหล่งที่มา:

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

ติดตามการโหลดแอสเซมบลี: ข้อมูลต่อไปนี้จะมีประโยชน์ในการกำหนดสาเหตุที่Newtonsoft.Jsonไม่สามารถโหลดแอสเซมบลี

=== Pre-bind state information ===
LOG: DisplayName = Newtonsoft.Json
(Partial)
WRN: Partial binding information was supplied for an assembly:
WRN: Assembly Name: Newtonsoft.Json | Domain ID: 2
WRN: A partial bind occurs when only part of the assembly display name is provided.
WRN: This might result in the binder loading an incorrect assembly.
WRN: It is recommended to provide a fully specified textual identity for the assembly,
WRN: that consists of the simple name, version, culture, and public key token.
WRN: See whitepaper http://go.microsoft.com/fwlink/?LinkId=109270 for more information and common solutions to this issue.
LOG: Appbase = file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/
LOG: Initial PrivatePath = c:\users\user\documents\visual studio 2013\Projects\foo\bar\bin
Calling assembly : (Unknown).
 ===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\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:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
LOG: Using application configuration file: c:\users\user\documents\visual studio 2013\Projects\foo\bar\web.config
LOG: Using host configuration file: C:\Users\user\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 4.5.0.0 redirected to 6.0.1.0.
LOG: Post-policy reference: Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///C:/Users/user/AppData/Local/Temp/1/Temporary ASP.NET Files/root/48686d37/9d7a6572/Newtonsoft.Json/Newtonsoft.Json.DLL.
LOG: Attempting download of new URL file:///c:/users/user/documents/visual studio 2013/Projects/foo/bar/bin/Newtonsoft.Json.DLL.
WRN: Comparing the assembly name resulted in the mismatch: Major Version
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

กองติดตาม:

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]

[FileLoadException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
       System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +34
       System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
       System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +16
       System.Reflection.Assembly.Load(String assemblyString) +28
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38

[ConfigurationErrorsException: Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +752
       System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +218
       System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
        System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
       System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +91
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +285
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): Could not load file or assembly 'Newtonsoft.Json, Version=6.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18408

2
โอเคฉันคิดว่าฉันจะให้มันทำงานตอนนี้ ฉันลบ Newtonsoft.Json.dll ทุกครั้งบนเครื่องที่ไม่ใช่รุ่นล่าสุดที่ฉันสามารถหาได้ตรวจสอบให้แน่ใจว่าฉันมีรุ่นล่าสุดใน NuGet และสร้างขึ้นมาและทำให้แน่ใจว่าเป็นเวอร์ชั่นล่าสุดในโฟลเดอร์ bin และ ฉันออกจากการเปลี่ยนแปลงใน web.config และ. csproj ตอนนี้ฉันกำลังเกิดข้อผิดพลาดอีกครั้งดังนั้นจึงต้องใช้งานได้ ...
noobieDev

1
เพิ่มคำตอบสำหรับคำถามของคุณเพื่อให้คนอื่นเห็นว่าได้รับการแก้ไขแล้วหรือไม่ และทำเครื่องหมายเป็นวิธีแก้ปัญหา
Per Hornshøj-Schierbeck

2
ฉันมีปัญหานี้บางรุ่นแม้ในวันนี้ (3/1/2016) ด้วยรุ่น 8.0.2 กำลังพยายามโหลดเวอร์ชัน 6.0.0 ไม่มีไฟล์ในโซลูชันของฉันที่อ้างอิง 6.0.0 ไม่มีรุ่น 6.0.0 .dll ที่ใดก็ได้ในพื้นที่โซลูชันของฉัน ฉันมี newtonsoft.json.dll จำนวนมากบนคอมพิวเตอร์ของฉันรุ่นต่าง ๆ พวกเขาใช้ซอฟต์แวร์ของบุคคลที่สามที่ติดตั้งซึ่งฉันไม่ต้องการยุ่ง นอกเหนือจากการลบสำเนาเหล่านั้นทั้งหมดฉันได้ลองวิธีแก้ไขปัญหาทั้งหมดที่กล่าวถึงในชุดข้อความทั้งหมดนี้และไม่มีอะไรทำงาน
Shavais

1
ฉันยังพบข้อความแสดงข้อผิดพลาดของ newtonsoft-json เมื่อฉันเพิ่มการอ้างอิงของโครงการหนึ่งไปยังโครงการอื่น แต่. Net Framework ในโครงการแตกต่างกันหลังจากทำ. NET Framework เดียวกันทั้งสองปัญหาได้รับการแก้ไข แต่ฉันไม่สามารถเข้าใจแทนข้อผิดพลาด Framework ทำไมมันแสดงข้อผิดพลาดที่เกี่ยวข้อง newtonsoft-json
Sameer

1
ติดตั้ง Newtonsoft.Json รุ่นเดียวกันในทุกโครงการของคุณแม้ว่าจะไม่ได้ใช้ก็ตาม
rubStackOverflow

คำตอบ:


274

เพื่อแก้ปัญหานี้ฉันมั่นใจว่าโครงการทั้งหมดของฉันใช้เวอร์ชันเดียวกันโดยรันคำสั่งต่อไปนี้และตรวจสอบผลลัพธ์:

update-package Newtonsoft.Json -reinstall

และสุดท้ายฉันก็ลบสิ่งต่อไปนี้ออกจากเว็บของฉัน config:

  <dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>

หากคุณต้องการมั่นใจว่าแพ็คเกจ Newtonsoft.Json ของคุณเป็นรุ่นเดียวกันคุณสามารถระบุรุ่นที่ต้องการได้ดังนี้:

update-package Newtonsoft.Json -version 6.0.0 -reinstall

17
เพียงแค่รันคำสั่งติดตั้งใหม่ก็ใช้งานได้สำหรับฉัน ฉันไม่จำเป็นต้องแก้ไข web.config
Keith

4
ฉันต้องเพิ่มแท็ก <dependAssembly> เพื่อกำจัดข้อผิดพลาดนี้
Nicklas Møller Jepsen

3
ฉันต้องระบุ -version แต่ไม่ต้องติดตั้งแฟล็ก -reinstall อีกครั้งเพื่อให้ทำงานในกรณีของฉัน
anre

1
ฉันใช้เวอร์ชันล่าสุด 9.0.1 แต่มันแสดงข้อผิดพลาดเดียวกัน ฉันตรวจสอบเวอร์ชันในไฟล์ csproj แล้วและเป็น 9.0.0.0 เพิ่มว่า web.config ของฉันและแก้ไขปัญหาแล้ว 1. ตรวจสอบให้แน่ใจว่ารุ่นใน csproj เป็นเช่นเดียวกับใน web.config 2. ระวังหมายเลขรุ่นมันสามารถพูด x.0.1 เมื่อรุ่นจริงคือ x.0.0.0, x สามารถเป็น 6 หรือ 9 หรืออะไรก็ตามที่มันเป็น .
ยู

7
โปรดทราบว่าในการเรียกใช้คำสั่งใน VS2017 คุณสามารถไปที่เครื่องมือ -> Nuget Package Manager -> คอนโซลตัวจัดการแพคเกจ
Rose

83

ฉันใช้ Newtonsoft.Json v6.0.3 แต่นี่คือสิ่งที่ฉันต้องทำในไฟล์ Web.config ของฉัน:

<dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

โปรดทราบว่าแม้ว่าฉันใช้ 6.0.3 แต่ฉันต้องใส่ newVersion="6.0.0.0"

ในไฟล์ packages.config ของฉันฉันมี:

<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />

1
เช่นเดียวกับบันทึกย่อฉันได้ลองถอนการติดตั้ง / ลบ / ลบทุกอย่างที่ฉันพบว่าเกี่ยวข้องกับ Newtonsoft.Json จากนั้นใช้ Nuget เพื่อติดตั้งใหม่ แต่ก็ยังได้รับข้อผิดพลาดด้านบน มันไม่ได้จนกว่าฉันจะทำการเปลี่ยนแปลงที่ฉันพูดถึงว่าฉันสามารถทำให้มันทำงานได้อย่างถูกต้อง
CraigV

ฉันประสบปัญหานี้และใช้ Assembly Binding Log Viewer เพื่อช่วยวินิจฉัย แอสเซมบลี binder รายงาน v6.0.3 Newtonsoft.Json.dll เป็น v6.0.0.0 ดังนั้นการเปลี่ยนเส้นทางจะล้มเหลวเมื่อฉันกำหนดค่าเป็น 6.0.3
Jason Slocomb

บรรทัด "Note" ช่วยฉันได้ ฉันเริ่ม 9.0.1.19813 เป็น newVersion ใน bindingRedirect เนื่องจากนั่นคือสิ่งที่ DLL พูด นี่คือสิ่งที่ฉันมีตอนนี้: <อ้างอิงรวม = "Newtonsoft.Json, รุ่น = 9.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 30ad4fe6b2a6aeed, processorArchitecture = MSIL"> <SpecificVersion> ปลอม </SpecificVersion> <assemblyIdentity name = "Newtonsoft.Json" culture = "เป็นกลาง" publicKeyToken = "30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion = "0.0.0.0-9.0.0.0" newVersion = "9.0.0.0" /> </
dvertiseAssembly

62

ฉันลองทำสิ่งต่อไปนี้หลังจากตรวจสอบแล้วว่าคอมพิวเตอร์ของฉันมีรุ่นเดียวกันในทุกพื้นที่และโครงการของฉันชี้ไปที่เส้นทางอ้างอิงเดียวกันทั้งหมด ฉันยังทำให้แน่ใจว่าการเชื่อมโยงของเวอร์ชันเก่าเป็นของพวกเขาและเชื่อมโยงกับ dll รุ่นปัจจุบันที่ฉันมี

ฉันทำงานในสภาพแวดล้อมที่มีเฟรมเวิร์กที่เข้มงวดและทีมงานเฟรมเวิร์กมักจะทำให้เวอร์ชันของ dll ต่างกัน

ฉันจะแก้ไขปัญหานี้ได้อย่างไรเมื่อต้องการเรียกใช้คอนโซลตัวจัดการแพคเกจภายใน Visual Studio (2013) จากนั้นฉันก็วิ่งตามคำสั่งต่อไปนี้:

update-package Newtonsoft.Json -reinstall

ติดตามโดย

update-package Newtonsoft.Json

สิ่งนี้ผ่านและอัปเดตไฟล์กำหนดค่าของฉันและไฟล์โครงการที่เกี่ยวข้องทั้งหมด บังคับให้พวกเขาทั้งหมดไปยัง dll รุ่นเดียวกัน เวอร์ชันเริ่มต้นเวอร์ชัน 4.5 ก่อนอัปเดตอีกครั้งเพื่อรับข้อมูลล่าสุด


มันเป็นการปรับปรุงที่แก้ไขปัญหาให้ฉันได้ โครงการของฉันได้รับการอัพเดตเป็น Newtonsoft เวอร์ชัน 7.0
id.ot

ทำงานให้ฉัน หลังจากทำสิ่งนี้สิ่งสำคัญที่ควรทราบเพื่อให้แน่ใจว่าไฟล์ package.config และ web.config ของคุณมีรุ่นที่ตรงกัน
TheValyreanGroup

ทำงานให้ฉันเมื่อทำจากคอนโซลผู้จัดการแพคเกจ NuGet ขอบคุณ!
Kbdavis07

25

ฉันมีข้อความแสดงข้อผิดพลาดเหมือนกันและอย่างที่คุณพูดถึงมันเป็นเพราะ Newtonsoft.Json.dll รุ่นต่าง ๆ ถูกอ้างอิง

บางโครงการในโซลูชัน MVC ของฉันใช้แพ็คเกจ NuGet สำหรับรุ่น 4 ของ dll นั้น

ฉันเพิ่มแพคเกจ NuGet (สำหรับ Salesforce ในกรณีของฉัน) ที่นำ Newtonsoft.Json เวอร์ชัน 6 มาใช้แทนโครงการหนึ่ง นั่นคือสิ่งที่ทำให้เกิดปัญหาสำหรับฉัน

ในการทำความสะอาดสิ่งต่าง ๆ ฉันใช้ส่วนอัพเดตใน NuGet Package Manager สำหรับการแก้ปัญหา (ปิดเมนูเครื่องมือหรือโซลูชันคลิกขวา) เพื่ออัปเดตแพคเกจ Json.Net ตลอดการแก้ปัญหาดังนั้นจึงเป็นเวอร์ชั่นเดียวกันสำหรับโครงการทั้งหมด

หลังจากนั้นฉันเพิ่งตรวจสอบไฟล์ App Config เพื่อให้แน่ใจว่ามีการผูกสายการเปลี่ยนเส้นทางไปยังเวอร์ชั่นที่ฉันเลือกด้านล่าง

<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />

จะเกิดอะไรขึ้นหาก DLLs มีการพึ่งพาสำหรับ Newtonsoft.Json รุ่นต่างๆสำหรับแอป MVC เดียวกัน นี่คือที่ฉันติดอยู่
เจเรมีเรย์บราวน์

ใช้ตัวเลือกรวมในตัวจัดการแพ็คเกจของ NuGet เพื่อให้แน่ใจว่าเวอร์ชั่นต่าง ๆ จะไม่แยกออกจากกัน
niico

17

โอเคฉันคิดว่าฉันจะให้มันทำงานตอนนี้ ฉันลบ Newtonsoft.Json.dll ทุกครั้งบนเครื่องที่ไม่ใช่รุ่นล่าสุดที่ฉันสามารถหาได้ตรวจสอบให้แน่ใจว่าฉันมีรุ่นล่าสุดใน NuGet และสร้างขึ้นมาและทำให้แน่ใจว่าเป็นเวอร์ชั่นล่าสุดในโฟลเดอร์ bin และ ฉันออกจากการเปลี่ยนแปลงใน web.config และ. csproj ตอนนี้ฉันถึงข้อผิดพลาดอื่นดังนั้นจึงต้องทำงาน ..


2
คุณไปเกี่ยวกับการค้นหาตำแหน่งทั้งหมดในเครื่องของคุณได้อย่างไร?
obaylis

ฉันได้รับข้อผิดพลาดเมื่อได้รับโครงการโดยทีมรากฐานเซิร์ฟเวอร์ pc.i ของฉันเพิ่มการอ้างอิงของ newtonsoft เพื่อ solution.it ของฉันไม่ทำงานแล้วฉันติดตั้ง json.net (newtonsoft.json) ผ่านผู้จัดการแพคเกจ nuget ตอนนี้มันเป็น ทำงานได้ดี
โมฮัมหมัด Sadiqur Rahman

มันอยู่ในชื่อไฟล์โฟลเดอร์ bin - Newtonsoft.Json.dll ลบไฟล์นี้และติดตั้งแพคเกจหรือเพียงแค่ติดตั้งรุ่นที่ต่ำกว่าและติดตั้งรุ่นที่ถูกต้องโดยใช้ NuGet โซลูชั่น
แมดดี้

7

โดยการแสดงความคิดเห็นในส่วนนี้บนเว็บของฉัน config ได้แก้ไขปัญหาของฉัน:

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>

แต่แน่นอนคุณต้องทำให้แน่ใจว่าคุณได้อัปเดตหรือคุณมีเวอร์ชั่นที่ถูกต้องโดยทำในคอนโซลผู้จัดการแพ็คเกจ:

update-package Newtonsoft.Json -reinstall

4

ฉันลองทำตามขั้นตอนโดย Oleg แล้วและพวกเขาก็ทำงานในสถานการณ์เดียวกันของฉัน

ขั้นตอน:

  1. ทำงานupdate-package Newtonsoft.Json -reinstallใน Package Manager

  2. ลบของคุณbinโดยเปิดใช้งานการดูไฟล์ที่ซ่อนอยู่และลบbinโฟลเดอร์

  3. ปิด Visual Studio ของคุณแล้วเปิดใหม่

  4. เรียกใช้โครงการของคุณอีกครั้ง ฉันเชื่อว่ามันควรจะโอเค!


4

คุณสามารถแก้ไขปัญหาได้โดยการเพิ่มบรรทัดด้านล่างในไฟล์ web.config

 <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

3

ในกรณีของฉันมันเป็นเพียงเรื่องของ:

Tools -> NuGet Package Manager -> Package Manager Settings -> Clear Cache

ปัญหาเกิดขึ้นเมื่อฉันทำการแมปโฟลเดอร์ TFS ใหม่


3

สิ่งที่ช่วยฉันได้จริงๆคือปิดการสร้าง Resharperและใช้ตัวเลือก VisualStudio Re-Build ในโครงการของฉัน


คุณทำได้อย่างไร?
นาโอมิ

1
ในตัวเลือกของ Resharper: เครื่องมือ -> ReSharper Build -> Build Engine - เลือก "Visual Studio"
Shaulian

ฉันติดตั้งรุ่นทดลองเมื่อไม่นานมานี้ (ประมาณหนึ่งเดือนฉันคิดว่า) จากนั้นฉันก็ปิดใช้งานส่วนขยายด้วย ฉันไม่เห็นมันในเครื่องมือดังนั้นหวังว่าฉันจะโอเค
นาโอมิ

3

จากเครื่องมือ >> ตัวจัดการแพ็คเกจ NuGet >> จัดการแพคเกจสำหรับอัปเดตโซลูชัน Newtonsoft.Json ของโซลูชันทั้งหมดเป็นเวอร์ชันล่าสุด


2

หากคุณกำลังทำงานกับการโค่นล้มบางประเภท: ลบโครงการและดาวน์โหลดใหม่มันเหมาะกับฉัน: S


มันต้องใช้เวลาอีกนาน แต่ฉันก็ต้องทำเช่นนี้เพราะไม่มีวิธีอื่นที่เหมาะกับฉัน
Mike Resoli

2

ฉันมีปัญหาเดียวกันในโครงการทดสอบที่อ้างอิงถึงโครงการ MVC 5 สิ่งนี้เกิดขึ้นหลังจากฉันรวมเข้ากับโครงการ MVC 5 ฉันคงได้โดยการติดตั้ง Visual Studio 2012 การปรับปรุงตามที่อธิบายไว้ที่นี่ในการตอบสนองของอังเดร

  • ในสตูดิโอภาพของคุณไปที่
    1. เครื่องมือ> ส่วนขยายและอัปเดต
    2. เลือก "อัพเดท" ในรายการหีบเพลงทางด้านซ้าย
    3. เลือก "อัพเดตผลิตภัณฑ์"
    4. อัพเดตเป็นเวอร์ชั่นใหม่ล่าสุด

ในขณะที่ลิงค์นี้อาจตอบคำถามได้ดีกว่าที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง คำตอบสำหรับลิงก์อย่างเดียวอาจไม่ถูกต้องหากมีการเปลี่ยนแปลงหน้าเชื่อมโยง
abarisone

ปัญหาของฉันได้รับการแก้ไขด้วยวิธีนี้ขอบคุณ! ฉันติดตั้งเวอร์ชัน 8.0.1 แล้วและไม่ทำงานจนกว่าฉันจะอัปเดตเป็น VS2013 อัปเดต 5
Devin Prejean

2

ฉันไม่รู้ว่าทำไม แต่ในกรณีของฉันแม้ว่าฉันจะลบโฟลเดอร์ bin ออกจากโปรเจ็กต์เมื่อฉันสร้างโปรเจ็กต์มันคัดลอกเวอร์ชันเก่าของ newtonsoft.json ฉันคัดลอก dll เวอร์ชั่นใหม่ออกจากโฟลเดอร์แพ็คเกจและมันแก้ปัญหาได้แล้ว


ฉันมีปัญหาที่คล้ายกัน ในโซลูชันของฉันฉันมีโครงการทดสอบ โครงการทดสอบกำลังรับรุ่น 9 ในถังขยะ แต่โครงการที่ฉันทดสอบมีรุ่น 12 ฉันคัดลอกรุ่น 12 จากโครงการภายใต้โฟลเดอร์ bin ของการทดสอบไปยังโฟลเดอร์ bin ของการทดสอบ
Josh Jay


2

เอาล่ะฉันคิดว่าสิ่งที่ต้องทำคือเพิ่มคำตอบของฉันที่นี่ในรายการยาวนี้กับการสร้างคำถามซ้ำ ...

หากคุณได้รับสิ่งนี้ในปี 2562 โดยใช้. NET Core 3.0 (ดูตัวอย่างในเวลานี้) วิธีแก้ไขคือให้แน่ใจว่าโครงการทั้งหมดกำหนดเป้าหมายเป็น. NET Core เวอร์ชันเดียวกัน (ในกรณีของฉัน 3.0) ฉันคิดว่าฉันมีหนึ่งโครงการในโซลูชันที่กำหนดเป้าหมาย 2.1 และที่เหลือคือ 2.2 ดังนั้นฉันอาจติดกับ 2.2 ...

ฉันไม่ได้ติดตั้ง Newtonsoft.Json ในโครงการใด ๆ ก็ตามและการเพิ่มลงไปในนั้นไม่ได้ช่วยแก้ปัญหา

หากคุณมีไลบรารีคลาส. NET Standard หรือ w / e ในโซลูชันของคุณไลบรารีเหล่านั้นไม่จำเป็นต้องเป็นเวอร์ชันเดียวกันแม้ว่าจะเป็นเวอร์ชันล่าสุดที่คุณสามารถใช้ได้ ตัวอย่างเช่นไลบรารีคลาส. NET Standard ของฉันอยู่ที่ 2.2 เนื่องจากยังไม่มี. NET Standard 3.0


1

ไม่มีคำตอบรวมถึงคำตอบที่ตรวจสอบแล้วไม่ได้ผลสำหรับฉัน

การแก้ปัญหานั้นง่ายกว่ามาก ฉันลบการอ้างอิงออกจากเลเยอร์ BUS ของฉันก่อน จากนั้นลบ dll ออกจากโครงการ (เพื่อให้แน่ใจว่ามันหายไป) จากนั้นติดตั้ง JSON.NET ใหม่จาก nuget packeges และส่วนที่ยุ่งยากก็คือ "ปิดและเปิดอีกครั้ง"

ฉันเพิ่งเริ่มต้นสตูดิโอภาพและมีการทำงาน!

ดังนั้นหากคุณลองทุกอย่างเท่าที่จะทำได้และยังแก้ปัญหาไม่ได้ให้ลองปิด visual Studio ไปเรื่อย ๆ มันอาจช่วยได้


2
ฉันคิดว่าSimpleเป็นการเสียดสี
คุ้มค่า 7


1

ฉันแก้ไขได้โดยลบ Newtonsoft.json.dll รุ่นที่ต่ำกว่าในโฟลเดอร์ bin และเพิ่ม Newtonsoft.json.dll V6.0.0.0 และลบองค์ประกอบ web.config ต่อไปนี้

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed"/>
    <bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="5.0.8"/>
</dependentAssembly>

1

ฉันมีปัญหาเดียวกันกับดอทเน็ตคอร์และจัดการแก้ไขด้วยการล้างแคชของ NuGet

เปิด powershell และป้อนคำสั่งต่อไปนี้

dotnet nuget locals all --clear

จากนั้นฉันปิด Visual Studio เปิดอีกครั้งและป้อนคำสั่งต่อไปนี้ลงใน Package Manager Console:

Update-Package

ตอนนี้ NuGet ควรคืนค่าแพ็คเกจทั้งหมดและเติมแคช nuget อีกครั้ง

หลังจากนั้นฉันสามารถสร้างและเริ่มต้น dotnet core webapi ในคอนเทนเนอร์ Linux ได้


1

ทางออกที่แก้ปัญหานี้ได้คือ

การอ้างอิงของ goto-> คลิกขวา Newtonsoft.json - คุณสมบัติของ goto และตรวจสอบเวอร์ชั่น

รุ่นเดียวกันนี้ควรอยู่ใน

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-YourDllVersion" newVersion="YourDllVersion" />
</dependentAssembly>

1

เวลาผ่านไปหลายชั่วโมงที่ต้องดิ้นรนกับเรื่องนี้ ...

web.config

<runtime>

  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
    </dependentAssembly>

    <!-- other assemblies... -->

  </assemblyBinding>
</runtime>

กุญแจสำคัญในการป้อนหมายเลข newVersion และ oldVersion ที่ถูกต้องคือเปิดโปรเจ็กต์Referencesค้นหาแพ็คเกจไปที่คุณสมบัติหรือคลิกalt + enter

คุณจะพบส่วนVersionที่ในกรณีของฉัน12.0.0.0ในขณะที่มันเป็นจริง12.0.3เมื่อสำรวจด้วย Manage NuGet

ดังนั้นคุณต้องเลือกเวอร์ชันของแพ็คเกจจากคุณสมบัติอ้างอิง (ในกรณีของฉัน12.0.0.0)

ในที่สุดcleanและrebuildโครงการ (คุณอาจต้องการลบbinและobjโฟลเดอร์ก่อน)

คุณอาจเผชิญกับปัญหาการพึ่งพาแพ็คเกจอื่น ๆ ฉันทำเช่นนั้นสำหรับทุกคนและพวกเขาทำงาน


0

ขั้นตอนง่าย ๆ (1) เรียกใช้ "update-package Newtonsoft.Json -reinstall" ในตัวจัดการแพ็คเกจ

(2) ลบ bin ของคุณโดยเปิดใช้งานการดูไฟล์ที่ซ่อนอยู่และลบโฟลเดอร์ bin

(3) ปิดสตูดิโอที่มองเห็นของคุณและเปิดใหม่

(4) เรียกใช้โครงการของคุณอีกครั้ง ฉันเชื่อว่ามันควรจะโอเค


0

ฉันประสบปัญหานี้เพราะฉันมี: โปรเจ็กต์ A (เดสก์ท็อป. exe) อ้างถึงโปรเจค B (พกพา. dll) A & B มี JSON.Net รุ่นต่างๆและมีข้อขัดแย้งตัวโหลด เมื่อฉันสร้าง JSON.net ทุกรุ่นแล้วมันก็ใช้งานได้ (นี่มีผลต่อสิ่งที่วิธีแก้ปัญหาบางอย่างข้างต้นกำลังทำอยู่ - ฉันเพิ่งจะบอกว่าทำไมมันถึงใช้ได้)


0

ฉันต่อสู้กับโปรเจคเก่าและใหม่กว่านี้

ฉันจัดการเพื่อติดตามปัญหาหลังจากตรวจสอบรุ่นของ dll ที่จริง ๆ แล้วในโฟลเดอร์ช่องเก็บ

ฉันมีสคริปต์ post-build ที่คัดลอกแอสเซมบลีที่อ้างอิงจากโฟลเดอร์ไลบรารี dll ไปยังโฟลเดอร์ถังขยะ การตั้งค่าทั่วไปจากวันก่อนที่จะ nuget

ดังนั้นทุกครั้งที่ฉันสร้างสคริปต์โพสต์บิลด์แทนที่เวอร์ชันที่ถูกต้องของ Json.net ด้วยเวอร์ชันเก่ากว่า


0

ฉันมีปัญหาเดียวกันและไลบรารีเริ่มต้น Visual Studio 13 สำหรับฉันคือ 4.5 ดังนั้นฉันจึงมีโซลูชัน 2 วิธีที่หนึ่งคือการอ้างอิงถึงสิ่งนี้ในไฟล์ webconfig นั่นเป็นทางเลือกสุดท้ายและใช้งานได้

ข้อความแสดงข้อผิดพลาดระบุว่ามีปัญหาที่ตำแหน่งนี้ /Projects/foo/bar/bin/Newtonsoft.Json.DLL DLL อยู่ที่ไหน! การตรวจสอบคุณสมบัติพื้นฐานบอกฉันว่ามันคือ 4.5.0.0 หรือเหมือนกันดังนั้นฉันจึงเปลี่ยน webconfig ให้ดูเกิน 4.5 และใช้ 4.5


0

ไม่มีตัวเลือกเหล่านี้สำหรับฉันในท้ายที่สุดมันก็เป็น;

ทดสอบ> ทดสอบการตั้งค่า> * .testrunconfig

ฉันต้องเพิ่มบรรทัดใหม่

<DeploymentItem filename="packages\Newtonsoft.Json.4.5.8\lib\net40\Newtonsoft.Json.dll" />

ตรวจสอบให้แน่ใจว่าเส้นทางและรุ่นถูกต้องสำหรับการตั้งค่าของคุณ


0

ฉันมีปัญหาเดียวกัน ฉันสร้างโครงการ web api จากนั้นอัปเกรดจาก. net 4.5.1 เป็น. net 4.6.1 การปิด IDE หยุด IIS และลบเนื้อหาของ Files \ dir C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET เพื่อแก้ไขปัญหา

HTH


0

ปัญหานี้ไม่ได้รับการแก้ไขสำหรับฉันด้วยการรีเฟรชแพคเกจ NuGet หรือทำการ "ล้าง" ในโครงการ มันถูกแก้ไขโดยการล้างโฟลเดอร์ "obj" ด้วยตนเอง


0

นี่คือวิธีแก้ไขปัญหาของฉันตรวจสอบให้แน่ใจว่าหมายเลขเวอร์ชันใน appconfig หรือ packageconfig เหมือนกับเวอร์ชันอ้างอิงในการอ้างอิงของคุณ ดูที่นี่

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