Visual Studio 2017 - ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Runtime, เวอร์ชัน = 4.1.0.0' หรือการอ้างอิงอย่างใดอย่างหนึ่ง


106

ฉันใช้ Visual Studio 2017 และกำลังพยายามสร้างไลบรารี. Net Standard 1.5 และใช้ในโครงการทดสอบ. Net 4.6.2 nUnit

ฉันได้รับข้อผิดพลาดต่อไปนี้ ...

ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'System.Runtime, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' หรือการอ้างอิงอย่างใดอย่างหนึ่ง ระบบไม่พบแฟ้มที่ระบุ.

ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:

  1. อ้างอิงไลบรารี Std เป็นการอ้างอิงโครงการ ข้อผิดพลาด: ให้ข้อผิดพลาดก่อนหน้านี้แก่ฉัน
  2. สร้าง NuGet pkg สำหรับไลบรารี Std ของฉันและอ้างอิงสิ่งนั้น ข้อผิดพลาด: ประเภทคือ System.String คาดว่า System.String นี่เป็นเพราะ System.Runtime จบลงด้วยการอ้างอิงโดยโครงการและมีคำจำกัดความสำหรับประเภทมาตรฐานทั้งหมด
  3. อ้างอิง NuGet pkg NetStandard.Library ข้อผิดพลาด: ให้ข้อผิดพลาดเดียวกับ # ("ประเภทคือ System.String คาดว่า System.String") หมายเหตุ: ก่อนที่ฉันจะทำสิ่งนี้ฉันได้ล้างแพ็คเกจ NuGet ทั้งหมดออกจากโปรเจ็กต์จากนั้นเพิ่มเพียงแพ็คเกจ nUnit และ NetStandard.Library (ซึ่งติดตั้งแพ็คเกจอื่น ๆ อีก 45 แพ็คเกจ)

นี่คือบั๊กหรือไม่? มีวิธีแก้ปัญหาหรือไม่? ขอความช่วยเหลือใด ๆ

คำตอบ:


93

ฉันมีปัญหาเดียวกันและไม่มีวิธีแก้ไขที่แนะนำซึ่งพบว่าใช้ได้ผล วิธีแก้ปัญหาของฉันสำหรับปัญหานี้คือตรวจสอบ App.config และ package.config เพื่อดูว่าเวอร์ชันตรงกันหรือไม่

แต่เดิม app.config ของฉันมี:

<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>

แต่มี package.config:

<package id="System.Runtime" version="4.3.0" targetFramework="net461" requireReinstallation="true" />

ฉันแก้ไขรายการ app.config เพื่อให้ตรงกับ package.config สำหรับ newVersion:

<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" />
</dependentAssembly>

หลังจากการเปลี่ยนแปลงปัญหาได้รับการแก้ไขแล้ว


หรือเพียงเพิ่มข้อมูลอ้างอิงไปยัง web.config ของคุณ: stackoverflow.com/a/38603514/1145177
Doug S

7
ฉันดึง "4.3.0" จาก NuGet แต่ด้วยเหตุผลบางอย่าง VS ยืนยันว่าฉันอ้างอิง "4.1.2.0" การทำงานที่คล้ายกันกับหมายเลขเวอร์ชันที่แตกต่างกันก็ใช้ได้กับฉัน ...
David Rogers

ฉันมีปัญหาเดียวกันเช่น @DavidRogers ในโครงการ MSTest การรวมความแตกต่างระหว่าง app.config และ package.config ช่วยแก้ปัญหาได้
ต.ค.

ใช่ขอบคุณพวง ! นี่เป็นวิธีแก้ปัญหาสำหรับ MSTest ของฉันที่ไม่พบการทดสอบ [MSTest][Discovery] Failed to discover tests from assembly Reason:Could not load file or assembly 'System.Reflection, Version=4.1.1.0 etc
Dan M

โซลูชันได้ผลสำหรับฉัน ปัญหาเริ่มต้นหลังจากติดตั้ง HtmlAgilityPack NUGET และจะไม่ทำงานเนื่องจากข้อมูลเวอร์ชันไม่ถูกต้องในแพ็คเกจ +1
Roberto

35

ปัญหานี้เกิดขึ้นเมื่อคุณอ้างอิงโปรเจ็กต์. NET Standard จากโปรเจ็กต์. NET 4.x: ไม่มีการนำการอ้างอิงแพ็กเกจ nuget ของโปรเจ็กต์. NET Standard มาเป็นการอ้างอิง

ในการแก้ไขปัญหานี้คุณต้องตรวจสอบให้แน่ใจว่าไฟล์. NET 4.x csproj ของคุณชี้ไปที่เครื่องมือสร้างปัจจุบัน (อย่างน้อย 14):

<Project ToolsVersion="15.0">...

ด้านล่างไม่จำเป็นต้องใช้อีกต่อไปได้รับการแก้ไขรอบ VS 15.3:

มีข้อบกพร่องที่ทราบใน VS2017 โดยเฉพาะใน NuGet 4.0

ในการแก้ไขข้อบกพร่องคุณจะต้องเปิดไฟล์. csproj สำหรับโปรเจ็กต์. NET 4.x ของคุณและเพิ่มส่วนย่อยนี้:

<ItemGroup>
  <PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
    <PrivateAssets>All</PrivateAssets>
  </PackageReference>
</ItemGroup>

NuGet 4.x นำเสนอ "การอ้างอิงแพ็กเกจ" - ไม่มี package.config อีกต่อไป - แต่ไปป์ไลน์ 4.x เก่าไม่ได้รับการอัปเดตอย่างสมบูรณ์ในช่วงเวลาของการเปิดตัว VS2017 ข้อมูลโค้ดด้านบนดูเหมือนจะ "ปลุก" ระบบบิลด์เพื่อรวมการอ้างอิงแพ็กเกจจากการอ้างอิงอย่างถูกต้อง


อัปเดตใดของ Visual Studio 17 ระบุรุ่นได้ไหม
Ronak Agrawal

11
ฉันยังคงมีปัญหาใน 15.5.5 VS2017 ดูเหมือนว่ามีสาเหตุอื่น ๆ
SerG

คำถาม: โครงการ. NET 4.x ของคุณใช้การอ้างอิงแพ็คเกจหรือยังใช้ package.config อยู่หรือไม่ ฉันสงสัยว่าเหตุผลที่สิ่งนี้ได้รับการแก้ไขสำหรับฉันหรือไม่คือฉันได้กำจัด package.config
Cory Nelson

2
เป็นที่น่าสังเกตว่า Visual Studio 2017 เวอร์ชัน 15.7 และใหม่กว่ารองรับการย้ายโปรเจ็กต์จากรูปแบบการจัดการ package.config เป็นรูปแบบ PackageReference docs.microsoft.com/en-us/nuget/reference/…
ธารสงบ

@tranquiltarn จากลิงก์ของคุณ: "ขณะนี้การโยกย้ายยังไม่พร้อมใช้งานสำหรับโครงการ C ++ และ ASP.NET"
JP Hellemons

34

ฉันพบปัญหานี้เมื่อเร็ว ๆ นี้และฉันได้ลองทำหลายอย่างที่กล่าวถึงในชุดข้อความนี้และอื่น ๆ ฉันเพิ่มการอ้างอิงแพคเกจสำหรับ"System.Runtime"โดย nuget package manager แก้ไขการแก้ไขการผูกมัดในapp.configและตรวจสอบให้แน่ใจว่าapp.configและpackage.configมีเวอร์ชันเดียวกันสำหรับแอสเซมบลี อย่างไรก็ตามปัญหายังคงอยู่

ในที่สุดฉันก็ลบ<dependentAssembly>แท็กสำหรับการประกอบและปัญหาก็หายไป ลองลบสิ่งต่อไปนี้ในapp.configไฟล์.

<dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.1.0" />
</dependentAssembly>

แก้ไข: หลังจากที่ฉันอัปเดต. NET framework เป็น 4.7.2 ปัญหาก็ปรากฏขึ้นอีกครั้ง ฉันลองใช้เคล็ดลับข้างต้นแล้วแต่ไม่ได้ผล หลังจากเสียเวลาไปหลายชั่วโมงฉันก็พบว่าปัญหาเกิดขึ้นเนื่องจากการSystem.Linqอ้างอิงเก่าใน app.config ดังนั้นให้ลบหรืออัปเดตการอ้างอิง Linq ทั้งหมดด้วยเพื่อกำจัดปัญหานี้


4
เมื่อใดก็ตามที่ฉันพบปัญหาที่ OP ระบุฉันจะลบข้อมูล System.Runtime ในไฟล์. config และจะแก้ไขได้ ฉันเห็นด้วยกับคุณว่านี่เป็นวิธีแก้ปัญหาที่ถูกต้อง มันมีแนวโน้มที่จะเกิดขึ้นกับฉันเมื่อฉันเพิ่มแพ็คเกจจาก nuget
Wallace B.McClure

ทำงานให้ฉัน ฉันมีข้อผิดพลาดxunit System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.2.0หลังจากอัปเกรดโปรเจ็กต์เป็น 4.7.2
Anton Krouglov

จากคำตอบของคุณฉันตรวจสอบแพ็คเกจ nuget ของฉันและพบความต้องการ 'Google.protobuf' (การรวมบัญชี) ระหว่างโครงการของฉัน thnx
Osama_Almaani

29

เชื่อฉันฉันไม่ได้ล้อเล่น ลบการอ้างอิง System.Runtime ทั้งหมดออกจาก app.config ของคุณและมันจะเริ่มทำงาน


9
คำอธิบายที่ดีขึ้นว่าเหตุใดสิ่งนี้จึงเป็นประโยชน์
Dour High Arch

ปัญหาของวิธีนี้คือเมื่อใดก็ตามที่คุณอัปเดตแพ็กเกจนักเก็ตหรือเพิ่มแพ็กเกจนักเก็ตใหม่ก็จะเพิ่มอีก
Vibgy

16

ฉันแก้ไขข้อผิดพลาดนั้นโดยอ้างถึงNetStandard.Libraryและไฟล์app.configต่อไปนี้ใน NUnit-Project

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Reflection" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="System.Runtime.InteropServices" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.1.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

แก้ไข

หากมีสิ่งใดอื่นที่ไม่ใช่System.Runtime, System.ReflectionหรือSystem.Runtime.InteropServicesจะหายไป (เช่นSystem.Linq) จากนั้นเพียงแค่เพิ่มใหม่dependentAssemblyโหนด

แก้ไข 2

ใน Visual Studio เวอร์ชันใหม่ (2017 15.8 ฉันคิดว่า) เป็นไปได้ที่ Studio จะสร้างไฟล์ app.config เพียงตรวจสอบอัตโนมัติสร้างผลผูกพันการเปลี่ยนเส้นทาง Checkbox ในโครงการอสังหาริมทรัพย์ - การประยุกต์ใช้ สร้างการเปลี่ยนเส้นทางการเชื่อมโยงอัตโนมัติ

แก้ไข 3

การสร้างการเปลี่ยนเส้นทางการเชื่อมโยงโดยอัตโนมัติทำงานได้ไม่ดีกับไลบรารีคลาส. NET การเพิ่มบรรทัดต่อไปนี้ในไฟล์ csproj จะช่วยแก้ปัญหานี้และไฟล์. config ที่ใช้งานได้สำหรับ Classlibary จะถูกสร้างขึ้น

<PropertyGroup>
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>

11
น่าแปลกที่ฉันแก้ไขปัญหาให้ฉันโดยลบ<dependentAssembly>โหนดทั้งหมดสำหรับ System.Runtime ..
Matt Brewerton

1
@MattBrewerton คอนเฟิร์ม!
Bart De Boeck

13

ฉันแก้ไขโดยการลบapp.configด้วย

<assemblyIdentity name="System.Runtime" ....> 

รายการ.

app.config ถูกเพิ่มโดยอัตโนมัติ (แต่ไม่จำเป็น) ในระหว่างการปรับโครงสร้างใหม่


สิ่งนี้ได้ผลสำหรับฉัน! ลองสิ่งนี้อย่างแน่นอนหากรายการอื่น ๆ ไม่ได้ผลสำหรับคุณ
bOkeifus

3

ปัญหานี้เกิดขึ้นเมื่อคุณอ้างอิงโปรเจ็กต์. NET Standard จากโปรเจ็กต์. NET 4.x: ไม่มีการนำการอ้างอิงแพ็กเกจ nuget ของโปรเจ็กต์. NET Standard มาเป็นการอ้างอิง

ฉันแก้ไขโดยการเพิ่ม4.3แพ็คเกจSystem.Runtime และ NETStandard.Library และ!! สำคัญ !! ฉันใช้เครื่องมือ refactor เพื่อค้นหาเวอร์ชัน System.Runtime.dll 4.1.1.1ไม่ใช่4.3แล้วเพิ่ม bindingRedirect ใน. config

<dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="4.1.1.1" />
</dependentAssembly>

เกิดปัญหากับฉันหลังจากเพิ่มโปรเจ็กต์เป็นมาตรฐาน. NET ไปยัง. น่าแปลกที่แม้จะลบโครงการออกไป แต่ปัญหาก็ยังคงมีอยู่
d219

3

มันสายเกินไปฉันรู้ว่ายิ่งไม่มีคำตอบที่ประสบความสำเร็จ ฉันพบคำตอบจากเว็บไซต์อื่น ฉันแก้ไขปัญหาเมื่อฉันลบ System.Runtime assemblydependency ฉันลบสิ่งนี้

<dependentAssembly> <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/> <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0"/> </dependentAssembly>

ขอแสดงความนับถืออย่างสูง


2

ฉันมีปัญหากับสิ่งนี้ในโครงการ NUnit 2.6.4 ที่กำหนดเป้าหมาย dotnet framework 4.6.2 ฉันวิ่งเข้าไปที่System.Runtime FileNotFoundข้อผิดพลาดพยายามที่จะใช้Humanizer

ฉันแก้ไขข้อผิดพลาดโดยการติดตั้งNetStandard.Libraryในโครงการทดสอบหน่วยของฉัน


2

เราพบว่าAutoGenerateBindingRedirectsอาจเป็นสาเหตุของปัญหานี้

สังเกต: การกำหนดเป้าหมายโครงการเดียวกันnet45และnetstandard1.5สร้างสำเร็จบนเครื่องหนึ่งเครื่องและไม่สามารถสร้างบนเครื่องอื่นได้ เครื่องจักรมีการติดตั้งเฟรมเวิร์กเวอร์ชันต่างๆ (4.6.1 - สำเร็จและ 4.7.1 - ความล้มเหลว) หลังจากอัปเกรดเฟรมเวิร์กในเครื่องแรกเป็น 4.7.1 บิลด์ก็ล้มเหลวเช่นกัน

Error Message:
 System.IO.FileNotFoundException : Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
  ----> System.IO.FileNotFoundException : Could not load file or assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

Auto binding redirectsเป็นคุณสมบัติของ.net 4.5.1. เมื่อใดก็ตามที่ nuget ตรวจพบว่าโปรเจ็กต์กำลังอ้างถึงเวอร์ชันที่แตกต่างกันของแอสเซมบลีเดียวกันโดยอัตโนมัติจะสร้างไฟล์ config ในไดเร็กทอรีเอาต์พุตโดยเปลี่ยนทิศทางเวอร์ชันทั้งหมดไปยังเวอร์ชันสูงสุดที่ต้องการ

ในกรณีของเรามันก็ rebinding ทุกรุ่นจะSystem.Runtime มาพร้อมกับเวอร์ชันของรันไทม์ การเชื่อมโยงการเปลี่ยนเส้นทางจึงเป็นการแมปกับเวอร์ชันที่ไม่มีในเฟรมเวิร์กเวอร์ชันร่วมสมัยVersion=4.1.0.0.net 4.7.14.3.0.0

ปัญหาได้รับการแก้ไขด้วยการปิดใช้งานการเปลี่ยนเส้นทางการเชื่อมโยงอัตโนมัติสำหรับเป้าหมาย 4.5 และปล่อยไว้สำหรับ. net core เท่านั้น

<PropertyGroup Condition="'$(TargetFramework)' == 'net45'">
  <AutoGenerateBindingRedirects>false</AutoGenerateBindingRedirects>
</PropertyGroup>

2

พบสิ่งนี้ในโครงการทดสอบหน่วยหลังจากเพิ่ม MsTest V2 ผ่าน Nuget การเปลี่ยนชื่อ app.config (เพื่อลบออกอย่างมีประสิทธิภาพ) เป็นเคล็ดลับสำหรับฉัน

หลังจากอ่านโพสต์ด้านบนทั้งหมดแล้วฉันก็ยังไม่แน่ใจว่าทำไมขอโทษ!


2

ปัญหานี้มีสาเหตุหลายประการ ... ในกรณีของฉันปัญหาคือใน web.config แท็กที่เพิ่มแอสเซมบลี System.Runtime:

<assemblies>
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>

แต่หนึ่งแพ็คเกจยังเพิ่มแอสเซมบลีเดียวกันกับการอ้างอิงกับเวอร์ชันอื่น:

<package id="System.Runtime" version="4.3.0" targetFramework="net47" />

การลบแท็ก "add assembly" ออกจาก web.config ของฉันช่วยแก้ปัญหาได้


2

ลงใน app.config หรือเพิ่ม web.config

<dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>

สิ่งนี้ได้ผลสำหรับฉัน ปัญหาเริ่มต้นหลังจากเพิ่มโปรเจ็กต์. NET Core (จากนั้นเปลี่ยนเป็น. NET Standard) ปัญหายังคงอยู่แม้ว่าจะลบข้อมูลอ้างอิงและรีเซ็ต web.config (และลองใช้คำตอบอื่น ๆ ส่วนใหญ่ที่กล่าวถึงมาตรฐาน. NET)
d219

2

ดูเหมือนว่าปัญหาจะเกิดขึ้นเมื่อมีความขัดแย้งระหว่างเวอร์ชัน package.config และ app.config ใน app.config คุณมีการเปลี่ยนเส้นทางการผูกแอสเซมบลีที่สร้างขึ้นโดยอัตโนมัติโดยสิ่งที่เรียกว่า "AutoGenerateBindingRedirects" เมื่อเปิดใช้งานทุกครั้งที่คุณดาวน์โหลดแพ็กเกจ nuget นอกจากนี้ในการสร้างรายการใหม่ใน package.config เพิ่มข้อมูลการเปลี่ยนเส้นทางการผูกนี้ไปยัง app.config จุดประสงค์ของสิ่งนี้อธิบายไว้ที่นี่อย่างไร: การเปลี่ยนเส้นทางการผูกแอสเซมบลี: อย่างไรและทำไม?

คุณสามารถอ่านสิ่งที่ผู้ใช้ @Evk เขียน:

เหตุใดจึงจำเป็นต้องมีการเปลี่ยนเส้นทางที่มีผลผูกพัน สมมติว่าคุณมีแอปพลิเคชัน A ที่อ้างอิงไลบรารี B และไลบรารี C ของเวอร์ชัน 1.1.2.5 ด้วย ในทางกลับกันไลบรารี B ยังอ้างอิงไลบรารี C แต่เป็นเวอร์ชัน 1.1.1.0 ตอนนี้เรามีข้อขัดแย้งเนื่องจากคุณไม่สามารถโหลดแอสเซมบลีเดียวกันเวอร์ชันต่างๆที่รันไทม์ได้ ในการแก้ไขข้อขัดแย้งนี้คุณอาจใช้การเปลี่ยนเส้นทางการผูกโดยปกติจะเป็นเวอร์ชันใหม่

ดังนั้นการ แก้ไข ด่วน:ลบรายการทั้งหมดใน app.config

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

หากคุณมีข้อขัดแย้งดังกล่าวคุณควรแก้ไขหมายเลขเวอร์ชันเหล่านี้ใน app.config เพื่อให้ตรงกับเวอร์ชันของแอสเซมบลีที่ใช้จริง แต่กระบวนการด้วยตนเองนั้นเจ็บปวดดังนั้นฉันขอแนะนำให้สร้างโดยอัตโนมัติอีกครั้งโดยเปิดคอนโซลตัวจัดการแพ็คเกจและทำการติดตั้งแพ็กเกจใหม่โดยพิมพ์ Update-Package -reinstall


1

ฉันพบกับสถานการณ์นี้หลายครั้งกับเว็บไซต์. NET 4.6.1 ของฉัน ฉันสร้างปัญหาทุกครั้งเมื่อฉันเพิ่มการอ้างอิงไปยังโครงการ. NET Core แยกต่างหาก เมื่อสร้าง Visual Studio แจ้งเตือนฉันอย่างถูกต้องว่าการอ้างอิงข้ามกรอบงานดังกล่าวไม่ถูกต้องและฉันก็ลบการอ้างอิงโครงการอย่างรวดเร็ว โครงการสร้างขึ้นได้ดีหลังจากนั้นข้อผิดพลาด System.Runtime ปรากฏขึ้นเมื่อเข้าถึงเว็บไซต์และปฏิเสธที่จะหายไป

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



1

ฉันมีโครงการที่มีปัญหาเดียวกันฉันแก้ไขได้ด้วยการเปลี่ยน dotnet core เวอร์ชันจาก 2.2 เป็น 2.0 หากปัญหาของคุณยังคงอยู่ให้ลองวิธีนี้


1

ก่อนรันการทดสอบหน่วยให้ลบแท็กรันไทม์ออกจากไฟล์ app.config ปัญหาจะได้รับการแก้ไข


0

ฉันมีปัญหาที่คล้ายกันใน VS 2017 15.45 - ฉันพบเมื่อฉันตรวจสอบว่าแม้ว่าโปรเจ็กต์คอมไพล์และรันมันมาพร้อมกับระบบ IO.FileNotFoundException เกี่ยวกับ System.Runtime เมื่อฉันพยายามเข้าถึงวัตถุ TPL Dataflow

เมื่อฉันตรวจสอบโปรเจ็กต์ในโซลูชันหนึ่งในนั้น (โปรเจ็กต์บนสุด) ไม่มีแพ็กเกจ System.Runtime ที่โปรเจ็กต์พื้นฐานใช้ เมื่อฉันติดตั้งจาก Nuget ทุกอย่างทำงานได้อย่างถูกต้อง


0

ฉันลองใช้วิธีแก้ปัญหาทั้งหมดที่นี่ แต่ไม่เป็นประโยชน์ ในที่สุดฉันก็แก้ไขได้โดยเปิดไฟล์ csproj ใหม่และเพิ่มส่วนต่อไปนี้ด้วยตนเอง:

<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
</Reference>

0

ฉันใช้ ASP.Net CORE 2.1 และฉันได้รับข้อผิดพลาดนี้เมื่อฉันเรียกใช้โดยเลือก. csproj จากรายการประมาณ 40 รายการใน repo ขนาดใหญ่ เมื่อฉันเปิดไฟล์ csproj ทีละไฟล์ข้อผิดพลาดได้รับการแก้ไขแล้ว บางอย่างเกี่ยวกับวิธีการเปิดตัวโปรแกรมแตกต่างกันเมื่อเปิด csproj


0

ฉันแก้ปัญหานี้โดยเปลี่ยนจาก. NET 4.7.2 => .NET 4.5.2 แล้วเปลี่ยนกลับเป็น 472 ดังนั้นในบางกรณีข้อผิดพลาดนี้เกิดขึ้นเนื่องจากตัวจัดการแพ็คเกจไม่สามารถแก้ไขการพึ่งพาได้


0

หากใช้งานได้ก่อนหน้านี้ควรมีการเปลี่ยนแปลง App.config การเลิกทำ App.config ใช้ได้ผลสำหรับฉัน


0

ฉันได้ผ่านข้อผิดพลาดนี้และแบ่งปันวิธีที่ฉันกำจัดมันออกไป

ในกรณีของฉันบรรทัดด้านล่างมีอยู่ใน web.config ของโปรเจ็กต์ webapi แต่ไม่มีการอ้างอิงแพ็คเกจในไฟล์ package.config

รหัสใน Web.config ใน Webapi Project

<dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="B03F5F7F11D50A3A" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.3.0" />
</dependentAssembly>

รหัสฉันเพิ่มในไฟล์ package.config ในโปรเจ็กต์ web api ก่อนปิดองค์ประกอบ

<package id="System.Runtime" version="4.3.0" targetFramework="net461" />

โซลูชันอื่นที่ใช้งานได้ในกรณีของฉัน:

อีกอย่างแน่นอนสั้น ๆ ที่อาจใช้งานได้ในกรณีที่คุณคัดลอกโครงการไปยังระบบคอมพิวเตอร์เครื่องอื่นที่อาจมีเวอร์ชันแพ็คเกจที่แตกต่างกันเล็กน้อยซึ่งคุณสามารถลองเปลี่ยนเวอร์ชันแอสเซมบลีเป็นเวอร์ชันที่ระบุในข้อผิดพลาดบนเว็บไซต์ / webapi เมื่อคุณเรียกใช้ เช่นในกรณีนี้ตามที่ระบุในคำถามเวอร์ชันที่ต้องการคือ '4.1.0.0' ดังนั้นเพียงแค่ลองเปลี่ยนเวอร์ชันปัจจุบันใน web.config เป็นเวอร์ชันที่แสดงข้อผิดพลาดดังต่อไปนี้

ข้อผิดพลาด:

Could not load file or assembly 'System.Runtime, Version=4.1.0.0' or one of its dependencies

เวอร์ชัน CHange


0

ฉันมีข้อผิดพลาดนี้เกิดขึ้นเมื่อสร้างฟังก์ชัน Azure (ด้วยทริกเกอร์คิวควรสร้างความแตกต่าง)

ปัญหาในกรณีนี้เกิดจากการAzureFunctionsVersionตั้งค่าเป็น v2 แทนที่จะเป็น v3 หากต้องการอัปเดตผ่าน VS2019 ให้ยกเลิกการโหลดโปรเจ็กต์จากนั้นแก้ไขไฟล์ csproj ภายในPropertyGroupโหนดเพิ่ม / แก้ไขสิ่งต่อไปนี้:

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