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


371

เมื่อฉันทำความสะอาดแล้วสร้างโซลูชันที่มีหลายโครงการหน้าต่างผลลัพธ์จะรายงานว่าการสร้างสำเร็จ อย่างไรก็ตามเมื่อฉันดูหน้าต่าง Error Listมันจะแสดงคำเตือนนี้:

พบความขัดแย้งระหว่างเวอร์ชั่นต่าง ๆ ของแอสเซมบลีที่ขึ้นต่อกันแบบเดียวกันซึ่งไม่สามารถแก้ไขได้ ข้อขัดแย้งของการอ้างอิงเหล่านี้จะแสดงรายการในบิลด์บิลด์เมื่อตั้งค่ารายละเอียดการบันทึกเป็นรายละเอียด C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets

เมื่อฉันคลิกสองครั้งที่ข้อความนี้มันจะเปิดไฟล์C: \ Program (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targetsแต่ฉันไม่เข้าใจอะไรเลย

ฉันใช้ Visual Studio Express 2013 สำหรับเว็บ

ฉันจะทราบได้อย่างไรว่ามีอะไรผิดปกติและกับ DLL ตัวใดและฉันจะทำให้คำเตือนหายไปได้อย่างไร



2
ฉันส่งคำแนะนำ MS Connect ให้รวมชื่อ DLL ในข้อความconnect.microsoft.com/VisualStudio/feedback/details/2619450
Michael Freidgeim

คำตอบ:


513

กทพ.: มีบทความนักฆ่าเกี่ยวกับสิ่งนี้โดย @Nick Craver ของ SOที่คุณควรอ่าน


ในขณะที่คำตอบอื่น ๆ พูดแบบนี้พวกเขาไม่ได้อธิบายอย่างชัดเจนดังนั้นฉันจะ ....

ใน VS2013.2 เพื่อกระตุ้นให้เกิดการปล่อยข้อมูลที่อ้างถึงคุณต้องไม่อ่านข้อความซึ่งระบุว่า:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.CurrentVersion.targets (1697,5): คำเตือน MSB3277: พบข้อขัดแย้งระหว่างเวอร์ชันต่าง ๆ ของแอสเซมบลีที่ขึ้นต่อกันรุ่นเดียวกันซึ่งไม่สามารถแก้ไขได้ ความขัดแย้งอ้างอิงเหล่านี้มีการระบุไว้ในการสร้างบันทึกเมื่อบันทึกฟุ่มเฟื่อยถูกตั้งค่าให้รายละเอียด

สิ่งนี้ไม่ถูกต้อง (หรืออย่างน้อยก็สำหรับ Visual Studio บางเวอร์ชั่น - ดูเหมือนว่าจะเป็นเวอร์ชั่นล่าสุดของ VS2015 Update 3 หรือใหม่กว่า) ให้เปลี่ยนเป็นDiagnostic (จากTools-> Options-> Project and Solutions-> Build and Runให้ตั้งค่าMSBuild project verbosity output build ) จากนั้นคุณจะเห็นข้อความเช่น:

มีข้อขัดแย้งระหว่าง "Newtonsoft.Json, รุ่น = 6.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 30ad4fe6b2a6aeed" และ "Newtonsoft.Json, รุ่น = 6.0.5.17707, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 30ad4fe6b2a6aeed"

  • "Newtonsoft.Json, รุ่น = 6.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 30ad4fe6b2a6aeed" ได้รับเลือกเพราะเป็นรุ่นหลักและ "Newtonsoft.Json, รุ่น = 6.0.5.17707, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 30ad4fe6b2a6aeed" ไม่ได้เป็น

แล้วก็

  • Ctrl-Alt-O เพื่อไปที่หน้าต่างสร้างเอาต์พุต
  • ค้นหา " ถูกเลือก " เพื่อค้นหาการเจาะลึก

... และใช่สำหรับผู้ที่ดูรายละเอียดของข้อความ [การวินิจฉัย] มันเป็นข่าวที่ไม่รู้เรื่องนี้ว่ามีการประชุมในเมืองโดยที่ทุก6.xๆ เวอร์ชั่นภายในรุ่นการประกอบ6.0.0.0คือมีเพียงส่วนประกอบหลักของ SemVer เท่านั้นที่เข้าสู่การประชุม รุ่น :)


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

4
ดูเหมือนว่าจะมีการบันทึกรายละเอียดระดับการทำงานภายใน VS (ดังนั้นจึงไม่จำเป็นต้องวินิจฉัย) จะไม่เป็นครั้งแรกว่าที่ MSBuild ทำงานแตกต่างกันภายใน VS ....
โยฮันเนรูด

105
หากต้องการเปลี่ยน verbosity บันทึกจากเมนู Tools-> ตัวเลือกจากนั้นหา Project and Solutions-> Build and Run
Jenn

3
ในกรณีของฉันฉันมีสามข้อขัดแย้งและหนึ่งในนั้นเป็นผู้รับผิดชอบอีกสอง ฉันคัดลอกบันทึกการสร้าง "รายละเอียด" ไปยัง Notepad ค้นหา "ความขัดแย้ง" อัปเดตแพ็คเกจ NuGet สำหรับการอ้างอิงที่ฉันรู้จักและปัญหาได้รับการแก้ไข
Isaac Lyman

@robotnik ขอบคุณสำหรับคำแนะนำการแก้ไข [ที่ถูกปฏิเสธโดยผู้อื่น] ในความเป็นจริงฉันมีข้อมูลที่ด้านล่างของคำตอบ แต่หวังว่าคำตอบตามที่เป็นอยู่ในขณะนี้จะชัดเจนเท่าที่คุณตั้งใจ
Ruben Bartelink

76

เรียกใช้msbuild Foo.sln /t:Rebuild /v:diag(จากC:\Program Files (x86)\MSBuild\12.0\bin) เพื่อสร้างโซลูชันของคุณจากบรรทัดคำสั่งและรับรายละเอียดเพิ่มเติมเล็กน้อยจากนั้นค้นหาคำสั่ง.csproj.ที่บันทึกคำเตือนและตรวจสอบการอ้างอิงและการอ้างอิงของโครงการอื่น ๆ ที่ใช้แอสเซมบลีทั่วไปเดียวกันซึ่งแตกต่างกันในเวอร์ชั่น

แก้ไข: คุณสามารถตั้งค่าการสร้างคำฟุ่มเฟื่อยได้โดยตรงใน VS2013 ไปที่Tools> Optionsเมนูแล้วไปProjects and Solutionsและชุด MSBuild Diagnosticฟุ่มเฟื่อยไป

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

<Reference Include="Microsoft.Build, Version=12.0.0.0, ..." />
<Reference Include="Microsoft.Build.Framework" />

VS

<Reference Include="Microsoft.Build, Version=12.0.0.0, ..." />
<Reference Include="Microsoft.Build.Framework, Version=12.0.0.0, ..." />

ในบันทึก MSBuild ด้วย/v:diagverbosity ดูเหมือนว่าต่อไปนี้ ให้รายละเอียดที่การอ้างอิงสองรายการขัดแย้งกัน: -

  There was a conflict between 
  "Microsoft.Build.Framework, Version=4.0.0.0, ..." and 
  "Microsoft.Build.Framework, Version=12.0.0.0, ...". (TaskId:16)

      "Microsoft.Build.Framework, Version=4.0.0.0, ..." was chosen because it was primary and 
      "Microsoft.Build.Framework, Version=12.0.0.0, ..." was not. (TaskId:16)

      References which depend on "Microsoft.Build.Framework, Version=4.0.0.0, ..." 
      [C:\...\v4.5.1\Microsoft.Build.Framework.dll]. (TaskId:16)

          C:\...\v4.5.1\Microsoft.Build.Framework.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v4.5.1\Microsoft.Build.Framework.dll". (TaskId:16)
              Microsoft.Build.Framework (TaskId:16)

      References which depend on "Microsoft.Build.Framework, Version=12.0.0.0, ..." 
      [C:\...\v12.0\Microsoft.Build.Framework.dll]. (TaskId:16)

          C:\...\v12.0\Microsoft.Build.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v12.0\Microsoft.Build.dll". (TaskId:16)
              Microsoft.Build, Version=12.0.0.0, ... (TaskId:16)

          C:\...\v12.0\Microsoft.Build.Engine.dll (TaskId:16)
            Project file item includes which caused reference "C:\...\v12.0\Microsoft.Build.Engine.dll". (TaskId:16)
              Microsoft.Build, Version=12.0.0.0, ... (TaskId:16)

C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3277: 
Found conflicts between different versions of the same dependent assembly that could not be resolved.  
These reference conflicts are listed in the build log when log verbosity is set to detailed. 
[C:\Users\Ilya.Kozhevnikov\Dropbox\BuildTree\BuildTree\BuildTree.csproj]

10
ฉันลงเอยด้วยการmsbuild "Foo.sln" /t:Rebuild /v:d > build.log
ไพพ์

2
วิธีที่ดีที่สุดในการไปยังสถานีสำหรับสิ่งนี้: stackoverflow.com/a/22702405/268066
CrazyPyro

@CrazyPyro msbuild มีท่อ "ในตัว" - /l:FileLogger,Microsoft.Build.Engine;logfile=build.log- โปรดสังเกตสวิตช์สำหรับคำอธิบายตัวบันทึกได้ที่นี่
drzaus

3
ที่ตั้ง "บันทึกการสร้าง" อยู่ที่ไหน ฉันจะหามันได้อย่างไร
ศูนย์นักโทษ

คำตอบนี้แสดงวิธีการรับรายละเอียดเพิ่มเติมจาก msbuild ซึ่งเป็นสิ่งที่ผู้ใช้คนเดียวใส่ใจ คำตอบอื่น ๆ ทั้งหมดถือว่าคุณใช้ VS และทำงานในสภาพแวดล้อม Windows
โดยไม่มีเงื่อนไข ReinstateMonica

39

ฉันสามารถรองรับคำตอบของรูเบนต่อไปได้โดยการเปรียบเทียบระหว่างข้อความทั้งสองที่แสดง:

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

และข้อความ:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.CurrentVersion.targets (1697,5): คำเตือน MSB3277: พบข้อขัดแย้งระหว่างเวอร์ชันต่าง ๆ ของแอสเซมบลีที่ขึ้นต่อกันรุ่นเดียวกันซึ่งไม่สามารถแก้ไขได้ ความขัดแย้งอ้างอิงเหล่านี้มีการระบุไว้ในการสร้างบันทึกเมื่อบันทึกฟุ่มเฟื่อยถูกตั้งค่าให้รายละเอียด

ดังนั้นรูเบนถูกต้อง - นี่ไม่จริง ไม่มีความขัดแย้งใด ๆ เพียงแค่การชุมนุมที่ขาดหายไป สิ่งนี้น่าเบื่อโดยเฉพาะอย่างยิ่งเมื่อโครงการเป็นแอปพลิเคชัน ASP.NET เนื่องจากมีการรวบรวมมุมมองตามความต้องการนั่นคือก่อนที่จะแสดงเป็นครั้งแรก นี่คือเมื่อจำเป็นต้องมีชุดประกอบ (มีตัวเลือกในการรวบรวมมุมมองล่วงหน้าพร้อมกับรหัสที่เหลือ แต่นี่เป็นอีกเรื่องหนึ่ง) ในทางกลับกันหากคุณตั้งค่า verbosity เป็นDiagnosticคุณจะได้ผลลัพธ์ต่อไปนี้:

C: \ Program Files (x86) \ MSBuild \ 12.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1697,5): คำเตือน MSB3245: ไม่สามารถแก้ไขการอ้างอิงนี้ ไม่สามารถค้นหาแอสเซมบลี "System.Web.Razor, รุ่น = 3.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = 31bf3856ad364e35, ตัวประมวลผลสถาปัตยกรรม = MSIL" ตรวจสอบเพื่อให้แน่ใจว่ามีการชุมนุมอยู่บนดิสก์ หากรหัสของคุณต้องการการอ้างอิงนี้คุณอาจได้รับข้อผิดพลาดในการรวบรวม

ดังนั้นสิ่งที่คุณต้องทำคือ:

  1. เพิ่มการอ้างอิงถึงแอสเซมบลีด้วยตนเอง (ค้นหาบนดิสก์อาจ GAC และเพิ่มเป็นการอ้างอิง "โดยตรง") หรือ
  2. ใช้แพ็คเกจ NuGet (หากเผยแพร่ในแกลเลอรี) เพื่อดาวน์โหลดและอ้างอิงชุดประกอบที่มีอยู่ภายใน

เพิ่มเติมเกี่ยวกับแกลเลอรี่ NuGet ที่นี่ เพิ่มเติมเกี่ยวกับ precompiling มุมมอง ASP.NET ที่นี่


ใน VS 2017 เมื่อฉันตั้งค่า "MSBuild โครงการสร้างผลลัพธ์ verbosity" (ไม่ใช่ไฟล์บันทึก) เป็นรายละเอียด (ไม่ใช่การวินิจฉัย) ฉันได้รับข้อผิดพลาด "ไม่สามารถค้นหาแอสเซมบลี" ในหน้าต่างเอาต์พุตของฉัน
ALEXintlsos

@ALEXintlsos: เห็นได้ชัดว่าฟังก์ชันนี้มีการเปลี่ยนแปลง คุณยังคงได้รับข้อผิดพลาดไม่ว่าจะอยู่ที่ไหน - ทำตามคำแนะนำเพื่อกำจัดมัน
Alexander Christov

22

การเปลี่ยนการสร้างคำฟุ่มเฟื่อยใน Visual Studio จะช่วยให้ชี้ไปในทิศทางที่ถูกต้อง ทำตามขั้นตอนด้านล่างเพื่อเปลี่ยน verbosity ใน VS

  1. ไปที่เครื่องมือ -> เมนูตัวเลือกใน VS
  2. เปิดโครงการและโซลูชัน -> สร้างและเรียกใช้
  3. เปลี่ยนค่าของการสร้างเอาต์พุต verbosity โครงการ MSBuild เลือกหนึ่งจากQuiet, Minimal, Normal, DetailedและDiagnostic

ตรวจสอบหน้าต่างเอาต์พุต ( Ctrl+ Alt+ O) ใน VS เพื่อดูการเปลี่ยนแปลงในบันทึกการทำงาน


16

และฉันจะทำให้คำเตือนหายไปได้อย่างไร

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


2
สิ่งนี้ด้วยการรวมกันของการรีสตาร์ท Visual Studio เมื่อมันปฏิเสธที่จะติดตั้งแพคเกจอย่างถูกต้องแก้ปัญหาให้ฉัน
Ohad Schneider

22
วิธีที่ง่ายที่สุดในการตรวจสอบ: คลิกขวาที่วิธีแก้ปัญหา -> Manage NuGet packages for solution-> ภายใต้Consolidateคุณสามารถดูว่ามีการติดตั้งแพ็กเกจรุ่นเดียวกันหลายรุ่นหรือไม่
elshev

16

การทำซ้ำข้อคิดเห็นอย่างใดอย่างหนึ่งจาก @elshev คลิกขวาที่โซลูชัน -> จัดการแพคเกจ NuGet สำหรับการแก้ปัญหา -> ภายใต้รวมคุณสามารถดูว่ามีการติดตั้งแพคเกจรุ่นเดียวกันที่แตกต่างกันหรือไม่ อัพเดทแพ็คเกจที่นั่น ข้อผิดพลาดความขัดแย้งได้รับการแก้ไข


1
สิ่งนี้ไม่ได้แก้ปัญหาสำหรับฉัน ฉันต้องถอนการติดตั้ง Newtonsoft.JSON และติดตั้งผ่าน NuGet การอ้างอิงที่อัปเดตนี้กับแพ็คเกจอื่น ๆ
Garr Godfrey

เรื่องนี้เกิดขึ้นกับฉันเมื่อใช้เครื่องมือเช่น Resharper ซึ่งอัตโนมัติเพิ่มการอ้างอิงที่หายไปของ DLL "เพิ่มการใช้ nuget เสมอ" อาจเป็นคำแนะนำที่ดีที่นี่
Shaswat Rungta

ไม่ทำงานสำหรับฉันเนื่องจากการถอนการติดตั้งแพคเกจจะพยายามสร้างที่ไม่สามารถเกิดขึ้นได้เนื่องจากมีข้อขัดแย้งของแพคเกจ ดังนั้นฉันจึงไม่สามารถติดตั้งแพคเกจใหม่อีกครั้งได้ :(
nickornotto

8

ฉันใช้ Visual Studio 2017 และพบสิ่งนี้เมื่อฉันอัปเดตบางแพ็คเกจ Nuget สิ่งที่ใช้ได้ผลสำหรับฉันคือการเปิดweb.configไฟล์ของฉันและค้นหา<runtime><assemblyBinding>โหนดและลบมัน บันทึกweb.configและสร้างโครงการใหม่

มองไปที่Error Listหน้าต่าง คุณจะเห็นสิ่งที่ดูเหมือนเป็นคำเตือนที่ยาวนานอย่างมากเกี่ยวกับความขัดแย้งที่มีผลผูกพัน ดับเบิลคลิกที่มันแล้วมันจะสร้าง<runtime><assemblyBinding>บล็อกขึ้นใหม่โดยอัตโนมัติด้วยการแมปที่ถูกต้อง


6

ตามที่ระบุในdotnet CLI 6565ปัญหาควรแก้ไขด้วยdotnet nuget locals --clear allคำสั่ง


1
สิ่งนี้ไม่ได้ผลสำหรับฉัน สถานการณ์เหมือนกันหลังจากรันคำสั่ง
Zimano


3

เห็นได้ชัดว่ามีหลายสาเหตุที่แตกต่างกันดังนั้นจึงมีทางออกสำหรับปัญหานี้มากมาย ในการโยนของผสมเข้าด้วยกันเราได้อัปเกรดชุดประกอบ (System.Net.Http) ซึ่งก่อนหน้านี้ถูกอ้างอิงโดยตรงในโครงการเว็บของเราเป็นรุ่นที่จัดการโดย NuGet สิ่งนี้ลบการอ้างอิงโดยตรงภายในโครงการนั้น แต่โครงการทดสอบของเรายังคงมีการอ้างอิงโดยตรง การอัพเกรดทั้งสองโครงการเพื่อใช้แอสเซมบลีที่จัดการโดย NuGet แก้ไขปัญหาได้


2

หากคุณทำการเปลี่ยนแปลงใด ๆ กับแพ็คเกจ - เปิด sln อีกครั้ง สิ่งนี้ได้ผลสำหรับฉัน!


1

ฉันพบว่าบางครั้งแพคเกจนักเก็ตจะติดตั้ง (สิ่งที่ฉันคาดเดาคือ). NET Core ส่วนประกอบที่จำเป็นหรือรายการอื่น ๆ ที่ขัดแย้งกับกรอบการติดตั้งแล้ว ทางออกของฉันคือการเปิดไฟล์โครงการ (.csproj) และลบการอ้างอิงเหล่านั้น ตัวอย่างเช่น System.IO, System.Threading และเช่นนั้นมีแนวโน้มที่จะถูกเพิ่มเมื่อ Microsoft.Bcl รวมอยู่ในแพ็คเกจ NuGet ที่เพิ่งติดตั้งล่าสุด ไม่มีเหตุผลสำหรับรุ่นที่ระบุในโครงการของฉันดังนั้นฉันลบการอ้างอิงและการสร้างโครงการ หวังว่าจะช่วย

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

ตัวอย่างสิ่งที่ฉันแสดงความคิดเห็น:

<!-- <Reference Include="System.Runtime, Version=2.6.9.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> -->
  <!-- <HintPath>$(SolutionDir)packages\Microsoft.Bcl.1.1.9\lib\net40\System.Runtime.dll</HintPath> -->
  <!-- <Private>True</Private> -->
<!-- </Reference> -->


1

ฉันทำตามคำแนะนำของคำตอบหลายข้อที่นี่เพื่อค้นหาว่ามีอะไรผิดปกติ แต่ไม่มีคำตอบใดที่อธิบายวิธีแก้ไขได้ ปัญหาของฉันคือการอ้างอิงหนึ่งต้องการเวอร์ชันที่แตกต่างจากการอ้างอิงที่สอง ดังนั้น Newtonsoft เป็นรุ่นที่ 6 แต่ DLL อื่น ๆ ต้องการ 4.5 จากนั้นฉันอัพเกรด Newtonsoft ให้เป็นหนึ่งในคำตอบอื่น ๆ ที่แนะนำและทำให้สิ่งต่าง ๆ แย่ลง

ดังนั้นฉันจึงลดระดับการติดตั้ง Newtonsoft ของฉันและคำเตือนก็หายไป (VS 2017):

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


1

คุณสามารถเรียกใช้ Dotnet CLI ด้วยการวินิจฉัยที่ละเอียดเพื่อช่วยค้นหาปัญหา

dotnet run --verbosity diagnostic >> full_build.log

เมื่อการสร้างเสร็จสมบูรณ์คุณสามารถค้นหาไฟล์บันทึก (full_build.log) เพื่อหาข้อผิดพลาด ตัวอย่างเช่นการค้นหา "ข้อขัดแย้ง" ควรนำคุณไปสู่ปัญหา


0

ฉันถอนการติดตั้ง Microsoft ASP.NET MVC nuget.org จากจัดการ NuGet Packagaes และติดตั้งใหม่อีกครั้ง ในขณะที่ติดตั้งใหม่จะแก้ไขข้อขัดแย้งทั้งหมดที่เกี่ยวข้องกับรุ่นมีดโกน ลองมัน .


0

ฉันเปลี่ยน MSBuild verbosity เป็น Diagnostic.but แต่ไม่พบว่าปัญหานั้นเป็นไปตามคำตอบข้างต้นฉันมีรหัสนี้ใน app.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="XbimXplorer.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>

ดังนั้นฉันเพิ่งเปลี่ยนระบบแรกเวอร์ชันจาก 4.0.0.0 เป็น 12.0.0.0 และโครงการของฉันทำงาน


0

ตามคำตอบอื่น ๆ ให้ตั้งค่าระดับการบันทึกผลลัพธ์เป็นรายละเอียดและค้นหาความขัดแย้งที่นั่นซึ่งจะบอกให้คุณทราบว่าจะต้องดูที่ใด

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


0

ฉันเพิ่งพบปัญหานี้และหลังจากเปลี่ยนแพคเกจจาก nuget เป็น dll ที่อ้างอิงในพื้นที่ ปัญหาคือสิ่งที่มีผลผูกพันรันไทม์เก่าapp.configมา


0

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


0

VS 2017 โครงการ MVC

ฉันไม่รู้ว่าทำไม แต่สำหรับฉันวิธีแก้ปัญหาสำหรับปัญหานี้คือการลบoutพารามิเตอร์ออกจากลายเซ็นเมธอดของโมเดลที่ถูกเรียกจากเมธอด action action นั่นเป็นพฤติกรรมที่แปลกมากแต่นั่นเป็นวิธีแก้ปัญหาของฉัน


-2

วิ่ง Update-Packageคำสั่งผ่าน Package Manager Console

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

ข้อมูลเพิ่มเติมเกี่ยวกับเอกสารอย่างเป็นทางการhttps://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling-and-updating-packages


14
คำแนะนำนี้สามารถทำลายวันของคุณถ้าคุณไม่ต้องการแพคเกจล่าสุดซึ่งมักจะเป็นกรณีสำหรับรหัสการผลิต
Tony O'Hagan

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

1
วิธีนี้ไม่ได้ผลสำหรับฉัน ฉันมีเวอร์ชันล่าสุดทั้งหมดแล้ว
Zero3

@ Zero3 ให้คุณเรียกใช้จากโซลูชันอันดับต้น ๆ ของคุณโดยไม่ต้องระบุแพคเกจใด ๆ โดยตรงซึ่งจะใช้งานได้เพราะมันติดตั้งใหม่ทุก ๆ รายการและอัปเดตการอ้างอิงซึ่งเป็นสาเหตุของการพลาด
Aistis Taraskevicius

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