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


320

ขณะนี้ฉันกำลังพัฒนาแอปพลิเคชั่น. NET ซึ่งประกอบด้วยโครงการ 20 โครงการ บางโครงการเหล่านั้นถูกคอมไพล์โดยใช้. NET 3.5, บางโครงการยังคงเป็น. NET 2.0 (จนถึงขณะนี้ไม่มีปัญหา)

ปัญหาคือถ้าฉันรวมส่วนประกอบภายนอกฉันมักจะได้รับคำเตือนต่อไปนี้:

"Found conflicts between different versions of the same dependent assembly".

คำเตือนนี้หมายความว่าอะไรและอาจมีความเป็นไปได้ที่จะไม่รวมคำเตือนนี้ (เช่นการใช้ #pragma ปิดการใช้งานในไฟล์ซอร์สโค้ด)?


คำตอบ:


410

คำเตือนนี้หมายความว่าสองโครงการอ้างอิงแอสเซมบลีเดียวกัน (เช่นSystem.Windows.Forms) แต่ทั้งสองโครงการต้องการเวอร์ชันที่แตกต่างกัน คุณมีตัวเลือกน้อย:

  1. คอมไพล์โครงการทั้งหมดเพื่อใช้เวอร์ชันเดียวกัน (เช่นย้ายทั้งหมดไปที่. Net 3.5) นี่คือตัวเลือกที่ต้องการเนื่องจากรหัสทั้งหมดกำลังทำงานกับรุ่นที่ขึ้นต่อกันที่ถูกรวบรวม

  2. เพิ่มการเปลี่ยนเส้นทางที่มีผลผูกพัน สิ่งนี้จะระงับการเตือน อย่างไรก็ตามโครงการ NET 2.0 ของคุณจะ (ที่รันไทม์) ถูกผูกไว้กับสุทธิ 3.5 System.Windows.Formsรุ่นของการประกอบขึ้นเช่น คุณสามารถเพิ่มการเปลี่ยนเส้นทางการโยงได้อย่างรวดเร็วโดยดับเบิลคลิกที่ข้อผิดพลาดใน Visual Studio

  3. CopyLocal=trueใช้ ฉันไม่แน่ใจว่าสิ่งนี้จะระงับคำเตือนหรือไม่ มันจะเหมือนกับตัวเลือกที่ 2 ด้านบนหมายความว่าทุกโครงการจะใช้รุ่น. Net 3.5 ของ System.Windows.Forms

ต่อไปนี้เป็นสองวิธีในการระบุการอ้างอิงที่ละเมิด:

  • คุณสามารถใช้ยูทิลิตี้เช่นที่พบได้ที่ https://gist.github.com/1553265
  • อีกวิธีง่าย ๆ คือการตั้งค่าการสร้าง verbosity ผลลัพธ์ (เครื่องมือตัวเลือกโครงการและโซลูชัน Build and Run โครงการ MSBuild สร้างผลลัพธ์ verbosity ผลผลิตโดยละเอียด) และหลังการสร้างค้นหาหน้าต่างผลลัพธ์สำหรับคำเตือนและดูข้อความข้างบน . (ปลาย Hat เพื่อpauloyaที่แนะนำนี้ในความคิดเห็นในคำตอบนี้)

9
สำหรับวิธีที่รวดเร็วในการค้นหาโดยไม่มียูทิลิตี้ - หากคุณเพิ่มการเปลี่ยนเส้นทางการโยง (เป็นตัวเลือกที่ 2) มันจะแสดงการอ้างอิงที่เกี่ยวข้อง - หากต้องการคุณสามารถใช้วิธีอื่นอย่างใดอย่างหนึ่ง เพื่อจัดการและลบการเปลี่ยนเส้นทางการผูกจากไฟล์ปรับแต่งของคุณ
Brisbe

222
วิธีที่ง่ายที่สุดในการค้นหาสิ่งที่เป็น "การอ้างอิงที่ละเมิด" คือการตั้งค่า Build verbosity ของ Build (เครื่องมือตัวเลือกโครงการและโซลูชัน, Build and Run, MSBuild โครงการ verbosity สร้างผลลัพธ์ของ MSBuild, รายละเอียด) และหลังการสร้าง สำหรับคำเตือน ดูข้อความที่อยู่ด้านบน
pauloya

7
การผูกข้อมูลการเปลี่ยนเส้นทางโดยการคลิกสองครั้งที่คำเตือน (ขั้นตอนที่ 2) อย่าลบคำเตือนของฉัน ฉันเห็น app.config เพิ่มด้วยชุดประกอบที่ฉันสงสัยว่าเป็นสาเหตุ แต่คำเตือนยังคงอยู่ที่นั่นหลังจากการล้าง / สร้างใหม่ ลองขั้นตอนที่ 3 นอกจากนี้ยังไม่มีโชค ความคิดใด ๆ
angularsen

9
ถ้าพวกเขาไม่ได้อ้างอิงจากโครงการของคุณเอง ตัวอย่างเช่นฉันอ้างถึงโครงการที่มีการพึ่งพา Newtonsoft.Json, เวอร์ชัน = 6.0.0.0 และฉันอ้างอิงโครงการอื่นซึ่งมีการพึ่งพา Newtonsoft.Json, รุ่น = 4.5.0.0
Edward Ned Harvey

3
@ brian-low ฉันขอแนะนำให้เพิ่มการตั้งค่า verbosity เอาต์พุต Build (ตามที่แนะนำในคอมเม้นต์โดย @pauloya) เป็นตัวเลือกในคำตอบของคุณพร้อมกับยูทิลิตี้ที่เชื่อมโยงหรือไม่ (คำปฏิเสธฉันจริง ๆ แล้วพยายามที่จะแก้ไขคำตอบให้ทำอย่างนั้น แต่มันก็ถูกปฏิเสธเมื่อตรวจสอบ :))
ริค Riensche

44

โดยทั่วไปสิ่งนี้จะเกิดขึ้นเมื่อแอสเซมบลีที่คุณอ้างอิงมีการตั้งค่า "Copy Local" เป็น "True" ซึ่งหมายความว่าสำเนาของ DLL จะถูกวางในโฟลเดอร์ bin พร้อมกับ exe ของคุณ

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

วิธีที่ฉันได้รับคือตั้ง Copy Local เป็น False สำหรับการอ้างอิงในโครงการประกอบ ทำได้เพียงเพื่อ executables / เว็บแอปพลิเคชั่นที่คุณต้องการแอสเซมบลีเพื่อให้ผลิตภัณฑ์สำเร็จรูปทำงาน

หวังว่าจะทำให้รู้สึก!


31

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

วิธีที่ง่ายที่สุดในการค้นหา "การอ้างอิงที่ไม่เหมาะสม" คือการตั้งค่า Build verbosity ของ Build (เครื่องมือ, ตัวเลือก, โปรเจ็กต์และโซลูชั่น, Build and Run, MSBuild สร้าง Verbosity ของบิวด์เอาท์พุท, รายละเอียด) และหลังการสร้าง สำหรับคำเตือน ดูข้อความที่อยู่ด้านบน

ตัวอย่างเช่นเมื่อคุณค้นหาแผงผลลัพธ์สำหรับ "ข้อขัดแย้ง" คุณอาจพบสิ่งนี้:

3>  There was a conflict between "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089".
3>      "EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was chosen because it was primary and "EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" was not.

อย่างที่คุณเห็นมีข้อขัดแย้งระหว่าง EF เวอร์ชั่น 5 และ 6


3
แต่ตอนนี้ฉันมีข้อมูลนี้ฉันจะลบข้อผิดพลาดได้อย่างไร ฉันเห็นว่าความขัดแย้งคืออะไร แต่ฉันหาไม่ได้ว่าโครงการอ้างอิงถึงเวอร์ชั่นที่ขัดแย้งกันอย่างไร
Bassie

สวัสดี @Bassie สิ่งแรกที่ต้องทำคือตรวจสอบไฟล์แพ็กเกจ nuget ของคุณและพิจารณาว่าคุณต้องการอัพเดตไฟล์ทั้งหมดเป็นแพ็กเกจเวอร์ชันเดียวกันหรือไม่ คุณสามารถทำได้โดยใช้คำสั่งคล้ายกับupdate-package [your package name] -version 6.0.0 -reinstallตามคำตอบของฉันที่นี่stackoverflow.com/questions/22685530//
1477388

@Bassie คุณสามารถทำสิ่งที่คำเตือนแนะนำและเพิ่มการผูกเปลี่ยนเส้นทางไปยังไฟล์ app.config! (หากการอัปเดตไม่ใช่ตัวเลือกนั่นคือ)
BrainSlugs83

@Bassie ดูคำตอบของฉันที่ฉันแสดงให้คุณเห็นว่าคุณจะได้รับการชุมนุมที่แตกต่างกัน /. dll ที่ก่อให้เกิดปัญหาไม่ตรงกัน
newprint

22

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

ในที่สุดมันกลับกลายเป็นว่าปัญหาคือการพึ่งพาที่ซ้อนกันของหนึ่งในการอ้างอิงที่ฉันมีในโครงการหนึ่ง การอ้างอิงนี้ (A) ต้องใช้รุ่นที่แตกต่างกันของ (B) ซึ่งอ้างอิงโดยตรงจากโครงการอื่น ๆ ทั้งหมดในโซลูชันของฉัน การอัปเดตข้อมูลอ้างอิงในโครงการที่อ้างอิงแก้ไขได้

Solution A
+--Project A
   +--Reference A (version 1.1.0.0)
   +--Reference B
+--Project B
   +--Reference A (version 1.1.0.0)
   +--Reference B
   +--Reference C
+--Project C
   +--Reference X (this indirectly references Reference A, but with e.g. version 1.1.1.0)

Solution B
+--Project A
   +--Reference A (version 1.1.1.0)

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


1
ปัญหาเดียวกันที่นี่ อย่างไรก็ตามฉันไม่มีโอกาสอัปเดตข้อมูลอ้างอิงเป็นเวอร์ชันที่ใหม่กว่า ฉันพยายามใช้ App.config: ในขณะที่มันใช้งานได้กับแอปพลิเคชัน Visual Studio 2010 ดูเหมือนจะไม่สนใจในระหว่างการสร้าง
โธมัสเวลเลอร์

1
ว้าวฉันมีปัญหาเหล่านี้มาสองเดือนแล้วและไม่สามารถระบุและแก้ไขได้ ด้วยเหตุผลบางอย่างมันจะพังในระหว่างการดีบักและในบางกรณีมันจะ manualy แทนที่. dll ที่น่ารำคาญด้วยของจริงในโฟลเดอร์ bin เมื่อมันจะเกิดขึ้น การดีบักเป็นความเจ็บปวดที่แท้จริง เมื่อฉันอ่านคำตอบของคุณฉันตระหนักในเรื่องนี้เป็นสิ่งที่เกิดขึ้นกับผมและผมคงมันเหมือน 5 นาที :)
เดนนิส Puzak

19

ใน Visual Studio ถ้าคุณคลิกขวาบนโซลูชันและจัดการแพคเกจ nuget จะมีแท็บ"รวม"ซึ่งตั้งค่าแพคเกจทั้งหมดเป็นเวอร์ชันเดียวกัน


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

8

ฉันเพิ่งได้รับข้อความแจ้งเตือนนี้และทำความสะอาดโซลูชันและคอมไพล์ใหม่ (Build -> Clean Solution) และมันก็หายไป


9
จนกว่าคุณจะสร้างโซลูชันขึ้นมาใหม่
ลูกา

สิ่งนี้ช่วยฉันได้! ฉันได้ลองวิธีอื่นมาตั้งแต่เมื่อวาน แต่อันนี้แก้ปัญหาได้แล้ว รวมถึงความคิดเห็นข้างบนนี้ด้วย ^ ขอบคุณ!
vnpnlz

6

ฉันมีปัญหาเดียวกันและฉันแก้ไขได้ด้วยการเปลี่ยนสิ่งต่อไปนี้ใน web.config

มันเกิดขึ้นกับฉันเพราะฉันใช้แอพพลิเคชั่นโดยใช้ Newtonsoft.Json 4.0

จาก:

<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>

ถึง:

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

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

1
ทำไม? แปลกสำหรับฉัน ฉันไม่ได้ใช้ EF แต่ฉันคิดว่าเราต้องการเปลี่ยนไปใช้รุ่นล่าสุดเสมอ
Hoàng Long

1
@ HoàngLongเนื่องจากรุ่นที่คุณอ้างอิงเป็นรุ่นเก่ากว่า แต่รุ่นที่คุณรวมอยู่เป็นรุ่นที่ใหม่กว่า
BrainSlugs83

3

ฉันมีวิธีอื่นในการทำเช่นนี้หากคุณใช้ Nuget เพื่อจัดการการพึ่งพาของคุณ ฉันพบว่าบางครั้ง VS และ Nuget ไม่ตรงกันและ Nuget ไม่สามารถรับรู้ได้ว่าโครงการของคุณไม่ซิงค์กัน packages.config จะพูดอย่างใดอย่างหนึ่ง แต่เส้นทางที่แสดงในการอ้างอิง - คุณสมบัติจะระบุอย่างอื่น

หากคุณต้องการอัปเดตการอ้างอิงของคุณให้ทำดังต่อไปนี้:

  1. จาก Solution Explorer คลิกขวาที่โครงการและคลิก 'จัดการแพคเกจ Nuget'

  2. เลือกแท็บ 'แพคเกจที่ติดตั้ง' ในบานหน้าต่างด้านซ้ายบันทึกแพ็คเกจที่ติดตั้งไว้คุณอาจต้องการคัดลอกแพ็คเกจของคุณไปที่เดสก์ท็อปของคุณก่อนหากคุณมีจำนวนมากดังนั้นคุณสามารถตรวจสอบกับ Google เพื่อดูว่ามีการติดตั้ง

  3. ถอนการติดตั้งแพ็คเกจของคุณ ตกลงเราจะเพิ่มพวกเขาทันที

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

  5. ทำเช่นนี้สำหรับทุกโครงการของคุณ

  6. ที่ระดับโซลูชันให้ทำคลีนและสร้างใหม่

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

หากคุณไม่ต้องการอัปเดตการอ้างอิงของคุณคุณสามารถใช้คอนโซลตัวจัดการแพคเกจและใช้ไวยากรณ์อัปเดตแพ็กเกจ -ProjectName [yourProjectName] [packageName] -Version [versionNumber]


2

สิ่งนี้ขึ้นอยู่กับส่วนประกอบภายนอกของคุณ เมื่อคุณอ้างอิงองค์ประกอบภายนอกในแอปพลิเคชัน. NET มันจะสร้าง GUID เพื่อระบุองค์ประกอบนั้น ข้อผิดพลาดนี้เกิดขึ้นเมื่อองค์ประกอบภายนอกที่อ้างอิงโดยหนึ่งในโครงการของคุณมีชื่อเดียวกัน แต่รุ่นที่แตกต่างเป็นองค์ประกอบอื่นในการชุมนุมอื่น

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

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


2

=> ตรวจสอบว่ามีบางอินสแตนซ์ของแอปพลิเคชันที่ติดตั้งบางส่วน

=> ก่อนอื่นถอนการติดตั้งอินสแตนซ์นั้นออกจากแอปพลิเคชันถอนการติดตั้ง

=> จากนั้นทำความสะอาดสร้างใหม่และลองปรับใช้

วิธีนี้ช่วยแก้ไขปัญหาของฉันไม่ได้มันจะช่วยคุณได้เช่นกัน ขอแสดงความนับถืออย่างสูง.


1

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


1

หากใช้ NuGet สิ่งที่ฉันต้องทำคือ:

  1. คลิกขวาที่โครงการแล้วคลิกจัดการแพคเกจ NuGet ..

  2. คลิกที่ฟันเฟืองที่ด้านบนขวา

  3. คลิกที่แท็บทั่วไปใน NuGet Package Manager ด้านบนแพ็คเกจแหล่งที่มา

  4. ทำเครื่องหมาย "ข้ามการใช้การเปลี่ยนเส้นทางการผูก" ในการเปลี่ยนเส้นทางการผูก

  5. ทำความสะอาดและสร้างใหม่และคำเตือนหายไป

peasy ง่าย ๆ


1

ฉันเพิ่งใช้เวลาในการดีบักปัญหาเดียวกัน หมายเหตุปัญหานั้นอาจไม่ได้อยู่ระหว่างโครงการต่าง ๆ แต่จริง ๆ แล้วระหว่างการอ้างอิงต่าง ๆ ในโครงการหนึ่งที่ขึ้นอยู่กับ dll / แอสเซมบลีรุ่นเดียวกันต่าง ๆ ในกรณีของฉันปัญหาคือการอ้างอิงFastMember.dllรุ่นที่ไม่ตรงกันที่มาจากสองแพ็คเกจ NuGet ที่แตกต่างกันในโครงการเดียว เมื่อฉันได้รับโครงการมันจะไม่รวบรวมเพราะแพ็คเกจ NuGet หายไปและ VS ปฏิเสธที่จะกู้คืนแพ็คเกจที่ขาดหายไป ผ่านเมนู NuGet ฉันอัปเดต NuGets ทั้งหมดเป็นเวอร์ชั่นล่าสุดด้วยตนเองนั่นคือเมื่อมีคำเตือนปรากฏขึ้น

ใน Visual Studio Tools > Options > Build and Run > MSBuld Project build output verbosity: (set to) Diagnostics.ค้นหาบรรทัดThere was a conflict betweenในOutputหน้าต่าง ด้านล่างเป็นส่วนของเอาต์พุตที่ฉันได้รับ:

1>  There was a conflict between "FastMember, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null" and "FastMember, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null". (TaskId:19)
1>      "FastMember, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null" was chosen because it was primary and "FastMember, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null" was not. (TaskId:19)
1>      References which depend on "FastMember, Version=1.5.0.0, Culture=neutral, PublicKeyToken=null" [C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\FastMember.1.5.0\lib\net461\FastMember.dll]. (TaskId:19)
1>          C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\FastMember.1.5.0\lib\net461\FastMember.dll (TaskId:19)
1>            Project file item includes which caused reference "C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\FastMember.1.5.0\lib\net461\FastMember.dll". (TaskId:19)
1>              FastMember, Version=1.5.0.0, Culture=neutral, processorArchitecture=MSIL (TaskId:19)
1>      References which depend on "FastMember, Version=1.3.0.0, Culture=neutral, PublicKeyToken=null" []. (TaskId:19)
1>          C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\ClosedXML.0.94.2\lib\net46\ClosedXML.dll (TaskId:19)
1>            Project file item includes which caused reference "C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\ClosedXML.0.94.2\lib\net46\ClosedXML.dll". (TaskId:19)
1>              ClosedXML, Version=0.94.2.0, Culture=neutral, processorArchitecture=MSIL (TaskId:19)

ขอให้สังเกตว่า Project file item includes which caused reference "C:\Users\ksd3jvp\Source\Temp\AITool\Misra\AMSAITool\packages\ClosedXML.0.94.2\lib\net46\ClosedXML.dll"

ClosedXML.dllมาจากClosedXMLNuGet FastMember.dll 1.3.0.0และมันขึ้นอยู่กับ ด้านบนของมันยังมีFastMemberNuget FastMember.dll 1.5.0.0ในโครงการและจะมี ไม่ตรงกัน!

ฉันถอนการติดตั้งClosedXML& FastMemberNuGets เพราะฉันมีการผูกมัดการเปลี่ยนเส้นทางและติดตั้งเพียงเวอร์ชันล่าสุดของClosedXMLนั่นแก้ไขปัญหา!


0

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


0
  1. เปิด "โซลูชัน Explorer"
  2. คลิกที่ "แสดงไฟล์ทั้งหมด"
  3. ขยาย "การอ้างอิง"
  4. คุณจะเห็นการอ้างอิงหนึ่งรายการขึ้นไปที่มีไอคอนแตกต่างจากที่เหลือเล็กน้อย โดยปกติแล้วจะมีกล่องสีเหลืองแนะนำให้คุณจดบันทึก เพียงลบออก
  5. เพิ่มการอ้างอิงกลับและรวบรวมรหัสของคุณ
  6. นั่นคือทั้งหมดที่

ในกรณีของฉันมีปัญหากับการอ้างอิง MySQL อย่างใดฉันสามารถรายการสามรุ่นภายใต้รายการของการอ้างอิงที่มีอยู่ทั้งหมด; สำหรับ. net 2.0, .net 4.0 และ. net 4.5 ฉันทำตามขั้นตอนที่ 1 ถึง 6 ด้านบนและมันใช้งานได้สำหรับฉัน


0

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


0

ดูเหมือนว่าจะมีปัญหาใน Mac Visual Studio เมื่อแก้ไขไฟล์. resx ฉันไม่รู้จริง ๆ ว่าเกิดอะไรขึ้น แต่ฉันพบปัญหานี้ทันทีที่ฉันแก้ไขไฟล์. resx บางไฟล์ใน Mac ของฉัน ฉันเปิดโครงการบน Windows เปิดไฟล์และพวกเขาราวกับว่าพวกเขาไม่ได้รับการแก้ไข ดังนั้นฉันจึงแก้ไขบันทึกและทุกอย่างก็เริ่มทำงานอีกครั้งบน Mac ด้วย


0

ฉันมีปัญหาเช่นนี้เมื่อโครงการของฉันมีการอ้างอิงถึง NETStandardLibrary และหนึ่งในแอสเซมบลีที่อ้างอิงถูกเผยแพร่สำหรับ netcore เพิ่งเผยแพร่เป็น netstandard และปัญหาได้หายไป


0

นี่คือวิธีแก้ปัญหาสไตล์. NET Core 3.0: https://github.com/HTD/ref-check

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

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

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