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


266

ฉันกำลังพยายามรวบรวม excel addin ของฉันโดยใช้ C # 4.0 และเริ่มได้รับปัญหานี้เมื่อสร้างโครงการของฉันใน Visual Studio เป็นสิ่งสำคัญที่จะบอกคุณว่าฉันไม่เคยมีปัญหานี้มาก่อน อะไรจะทำให้สิ่งนี้เกิดขึ้น


72
ลองทำอย่างรวดเร็วลบทั้งbinและobjโฟลเดอร์ของโครงการและสร้างโครงการอีกครั้ง บางครั้งก็ใช้งานได้
Jason Evans

คุณลงนามในการชุมนุมหรือไม่
Felice Pollano

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

1
@Kratz - ดีใจที่คำแนะนำนี้เหมาะกับคุณ :) มันเหมือนกับการซ่อมคอมพิวเตอร์ของคุณโดยการรีบูตเครื่อง!
Jason Evans

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

คำตอบ:


239

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

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

NuGet

ด้วย NuGet มันง่ายที่จะเข้าสู่สถานการณ์นี้ถ้า:

  1. คุณติดตั้งแพคเกจหนึ่งโครงการในโซลูชันของคุณ
  2. มีการปรับใช้แพคเกจรุ่นใหม่กับแหล่งที่มาของแพคเกจ
  3. คุณติดตั้งให้กับโครงการอื่นในโซลูชันเดียวกัน

ผลลัพธ์นี้ในสองโครงการในโซลูชันของคุณที่อ้างอิงรุ่นที่แตกต่างกันของชุดประกอบของแพ็คเกจนั้น หากหนึ่งในนั้นอ้างอิงถึงอีกแอปหนึ่งและเป็นแอป ClickOnce คุณจะเห็นปัญหานี้

ในการแก้ไขปัญหานี้ให้ออกupdate-package [package name]คำสั่งที่คอนโซลผู้จัดการแพคเกจ Nuget เพื่อนำทุกอย่างมาสู่สนามเล่นระดับซึ่งปัญหาจะหายไป

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


7
นี่คือบางส่วนข้อมูลเพิ่มเติม: social.msdn.microsoft.com/Forums/en/csharplanguage/thread/... นอกจากนี้การล้างbinและobjและ (ถ้าอยู่ในการควบคุมของคุณ) การตั้งค่าเวอร์ชันแอสเซมบลีเป็นค่าเดียวกัน (เช่นปล่อยให้หมายเลขศูนย์สร้าง) ช่วย
Kit

3
ฉันแนบท้ายคำตอบของคุณเล็กน้อยเพื่อสะท้อนประสบการณ์ของตัวเองในวันนี้ด้วย NuGet และข้อผิดพลาดเดียวกันนี้ หวังว่ามันจะช่วยให้ใครบางคนออกมาบางครั้ง (อาจเป็นตัวเองในเวลาไม่กี่เดือน!)
Neil Barnwell

2
ข้อผิดพลาดนี้ยังคงโผล่ขึ้นมาเพื่อฉันและลบชื่อชุดประกอบออกจากไฟล์. csproj จากนั้นการล้างได้แก้ไขให้ฉันอย่างสม่ำเสมอ ขอบคุณ!
ScubaSteve

1
คุณอาจต้องการเห็นคำตอบนี้หากคำตอบข้างต้นไม่ได้ผลและคุณคิดว่าคุณได้เพิ่มการอ้างอิง NuGet ให้กับโครงการใดโครงการหนึ่งของคุณโดยใช้ Intellisense / ReSharper
David Murdoch

การแก้ปัญหาประกอบด้วย 4 โครงการ หนึ่งโครงการBคือไลบรารีคลาส dll ของ B ถูกอ้างอิงในส่วนที่เหลือของสาม อีกสองโครงการ ( CและD ) ปฏิบัติการที่ถูกอ้างถึงใน ดังนั้นฉันจึงสร้าง A และได้รับปัญหาเดียวกันมาก การแก้ไขคือการสร้างส่วนที่เหลืออีกสองโครงการก่อน และแล้วการสร้างโครงการปัญหาได้รับการแก้ไข
Vikram Singh Saini

268

เมื่อฉันมีปัญหานี้ฉันแก้ไขได้โดยปิด 'เปิดใช้งานการตั้งค่าความปลอดภัย ClickOnce'

เมนู: โครงการ | 'ชื่อโครงการ' คุณสมบัติ ... | แท็บความปลอดภัย | ช่องทำเครื่องหมาย 'เปิดใช้งานการตั้งค่าความปลอดภัย ClickOnce'


2
ไม่ทำงานสำหรับฉันใน VS2012 (ช่องทำเครื่องหมายถูกตรวจสอบโดยอัตโนมัติระหว่างการเผยแพร่) ฉันใช้คำตอบนี้แทนเนื่องจาก DLL จำเป็นสำหรับกระบวนการสร้างเท่านั้น stackoverflow.com/a/8123074/17713
Matthias Meid

3
เมื่อใช้ ClickOnce ช่องทำเครื่องหมายนี้จะถูกเลือกโดยอัตโนมัติทุกครั้งที่มีการเผยแพร่แอปพลิเคชันด้วยตัวช่วยการเผยแพร่ ดูmsdn.microsoft.com/en-us/library/1sfbfyk0.aspxสำหรับข้อมูลเพิ่มเติม
David Murdoch

8
ฉันมี MSVS 2015 และฉันไม่เห็นแท็บความปลอดภัยภายใต้คุณสมบัติของโครงการ
ซีตา

70

ดูคำตอบนี้

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


2
โครงการ exel addin ไม่มีปุ่มไฟล์แอปพลิเคชัน stackoverflow.com/questions/6378801/…
Sergey Kucher

@SergeyKucher: ฉันไม่รู้ ขอบคุณสำหรับการอัพเดท. เนื่องจากคำถามของคุณไม่แม่นยำสำหรับ Addin ของ Excel ฉันคิดว่าคำตอบของฉันยังคงใช้ได้ที่นี่ (ฉันมีข้อความแสดงข้อผิดพลาดเดียวกันในโครงการwinformsและแก้ไขด้วยวิธีนี้)
Otiel

ฉันมีโครงการ winforms ซึ่งสร้างขึ้นได้ดีจนกระทั่งฉันใช้วิซาร์ดการเผยแพร่หลังจากที่ฉันได้รับข้อผิดพลาดของ OP การเปลี่ยนสถานะการเผยแพร่แก้ไขปัญหาได้ ขอบคุณ
Kristian

7
ในกรณีของฉันปัญหานี้ได้รับการแก้ไขแล้วการเปลี่ยนสถานะการเผยแพร่จาก INCLUDE (อัตโนมัติ) เป็นเพียง INCLUDE อย่างไรก็ตามคำตอบของคุณช่วยไม่ให้ผลักดันค่าที่แสดง ขอบคุณมาก
Julio Nobre

22

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


13

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


1
หรือเพียงแค่ 'วิธีแก้ปัญหาที่สะอาด'
ต้อง

A 'สร้างใหม่ทั้งหมด' ทำการล้างข้อมูลก่อนและเทียบเท่ากับ 'ล้าง' แล้ว 'สร้าง' แม้ว่าจะมีบางครั้งที่ไฟล์ถูกคัดลอกหรือคัดลอกด้วยตนเองด้วยการประทับเวลาที่แตกต่างกันฟังก์ชั่น 'clean' / 'rebuild' ไม่ได้แก้ไขปัญหาและจำเป็นต้องลบโฟลเดอร์ 'bin' และ 'obj' ด้วยตนเอง
Sogger

สำหรับปัญหานี้เกี่ยวกับ Excel การลบโฟลเดอร์ bin / obj ทำงานได้สำหรับฉันวิธีอื่นไม่ได้
William Melani


6

การเพิ่มโซลูชันของฉันสำหรับปัญหานี้สำหรับทุกคนที่อาจช่วยได้

ฉันมีวิธี ClickOnce ส่งข้อผิดพลาดนี้ แอปพลิเคอ้างอิงทั่วไป "Libs โฟลเดอร์" Foo.dllและมีการอ้างอิงโครงการไปยัง ในขณะที่ไม่มีโครงการใดในโซลูชันที่อ้างถึงสำเนาแบบคงที่ของFoo.dllในโฟลเดอร์ "Libs" การอ้างอิงบางส่วนในโฟลเดอร์นั้นทำได้ (เช่น: โซลูชันของฉันอ้างอิงLibs\Bar.dllที่อ้างอิงFoo.dll) เนื่องจากแอป CO ดึงการอ้างอิงทั้งหมดจากLibsเช่นเดียวกับการอ้างอิงของพวกเขาทั้งสองฉบับกำลังเข้าสู่โครงการ นี่กำลังสร้างข้อผิดพลาดด้านบน

ฉันแก้ไขปัญหาโดยการย้ายLibs\Foo.dllรุ่นคงที่ของฉันไปยังโฟลเดอร์ย่อย, Libs\Fix\Foo.dll. การเปลี่ยนแปลงนี้ทำให้แอป ClickOnce ใช้เฉพาะเวอร์ชันโครงการของ DLL และข้อผิดพลาดหายไป



6

หากคุณลองคำตอบอื่น ๆ ทั้งหมดในคำถามนี้และคุณ:

  • มีหลายโครงการในโซลูชันของคุณ
  • มีโครงการ (โครงการ A) ที่อ้างอิงโครงการอื่น (โครงการ B) ซึ่งโครงการอ้างอิงแพ็คเกจ NuGet
  • ในโครงการ A คุณใช้ Intellisense / ReSharper เพื่อนำไปอ้างอิงกับแพ็คเกจ NuGet ที่อ้างอิงในโครงการ B (ซึ่งสามารถเกิดขึ้นได้เมื่อวิธีการในโครงการ B คืนประเภทที่จัดให้โดยแพคเกจ NuGet และวิธีนั้นใช้ในโครงการ A)
  • อัปเดตแพคเกจ NuGet ผ่านทาง NuGet Package Manager (หรือ CLI)

... คุณอาจมี NuGet แพ็คเกจ DLL รุ่นแยกต่างหากในการอ้างอิงโครงการของคุณเนื่องจากการอ้างอิงที่สร้างโดย Intellisense / ReSharper จะเป็นการอ้างอิง "ปกติ" ไม่ใช่การอ้างอิง NuGet ตามที่คาดไว้ดังนั้นกระบวนการอัปเดตของ NuGet จะชนะ ' หาหรืออัปเดต!

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


เคล็ดลับชีวิตโปร:

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


ใช่หลีกเลี่ยงการใช้ Resharper เพื่อเพิ่มการอ้างอิง Resharper จะใช้ dll อ้างอิงจากโฟลเดอร์ดีบั๊ก (หรือรีลีสถ้าคุณอยู่ในโหมดวางจำหน่าย) นั่นจะทำให้เกิดปัญหามากมายโดยเฉพาะในโครงการขนาดใหญ่
เซปรีโก

5

เมื่อสิ่งนี้เกิดขึ้นกับฉันด้วย WindowsAPICodePack หลังจากฉันอัปเดตฉันเพิ่งสร้างโซลูชันขึ้นมาใหม่

สร้าง -> สร้างโซลูชันใหม่


4

มีหลายโครงการในโซลูชันของฉันที่ต้องผ่านและอัปเดตเป็นรายบุคคลดังนั้นฉันจึงแก้ไขปัญหานี้โดย:

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

4

การยกเลิกการโหลดและโหลดซ้ำปัญหาโครงการแก้ไขให้ฉัน


4

ฉันไปเผยแพร่ไฟล์แอปพลิเคชันพบ dll ที่โยนข้อผิดพลาดเปลี่ยนเป็น'รวม'จาก 'รวม (อัตโนมัติ)' ตอนนี้ฉันสามารถเผยแพร่


4

ฉันพบปัญหานี้หลังจากย้าย Excel Addin จาก packages.config ไปยัง PackageReference ดูเหมือนว่าจะเกี่ยวข้องกับปัญหานี้

การทำงานต่อไปนี้เป็นวิธีแก้ปัญหาแบบหยาบหากคุณไม่ได้ใช้ ClickOnce (จะเป็นการละเว้นข้อมูลการพึ่งพาทั้งหมดจาก.manifestไฟล์):

  1. ยกเลิกการโหลดโครงการแก้ไข. csproj
  2. ค้นหาส่วนที่มีลักษณะเช่นนี้:

    <!-- Include additional build rules for an Office application add-in. -->
    <Import Project="$(VSToolsPath)\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets" Condition="'$(VSToolsPath)' != ''" />
  3. แก้ไขสำเนาที่เปลี่ยนชื่อของ.targetsไฟล์ที่อ้างอิง(ในกรณีของฉันไฟล์ถูกแก้ไขC:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targetsและฉันทำสำเนาMicrosoft.VisualStudio.Tools.Office_FIX.targetsในโฟลเดอร์เดียวกัน - ไม่ได้ตรวจสอบว่ามันทำงานได้จากโฟลเดอร์อื่นหรือไม่)

  4. ค้นหาGenerateApplicationManifestองค์ประกอบและเปลี่ยนแอตทริบิวต์การDependencies="@(DependenciesForGam)"Dependencies=""

  5. เปลี่ยนส่วนที่พบใน 2. เพื่ออ้างอิง.targetsไฟล์ที่แก้ไขของคุณแทน

จะต้องทำซ้ำทุกครั้งที่.targetsมีการอัปเดตไฟล์ที่จัดส่งด้วย VS (หรือคุณจะไม่ได้รับการอัปเดต) แต่ฉันหวังว่าจะได้รับการแก้ไขในไม่ช้า ...


2
หากต้องการเพิ่มสิ่งนี้วิธีที่อ่อนโยนกว่าในการแก้ไขปัญหาคือการคัดลอกส่วน <Target Name = "VisualStudioForApplicationsBuild"> ทั้งหมดจากไฟล์ที่อยู่ในจุดที่ 3 (เช่น: ค้นหาไฟล์อย่าคัดลอกและเปลี่ยนชื่อ) สำหรับโครงการของคุณเอง ** ไฟล์ proj และทำการเปลี่ยนแปลงแบบเดียวกับที่อธิบายไว้ในข้อ 4 สิ่งนี้จะแทนที่ลักษณะการทำงานสำหรับโครงการของคุณและจะไม่ส่งผลกระทบต่อสิ่งอื่นในเครื่องของคุณ หากมีการเปลี่ยนแปลงไฟล์ต้นฉบับในการอัพเดต VS ในอนาคตคุณอาจยังต้องทำกระบวนการซ้ำ
อดัม

3

ชุดประกอบของคุณได้รับการลงนามอย่างถูกต้องหรือไม่?

ในการตรวจสอบนี้ให้กด Alt + Enter ในโครงการของคุณ (หรือคลิกขวาจากนั้นคลิกคุณสมบัติ) ไปที่ "การลงชื่อ" ตรวจสอบว่ากล่องกา "เข้าสู่ระบบการชุมนุม" มีการตรวจสอบและแฟ้มชื่อคีย์ที่แข็งแกร่งจะถูกเลือกและ "เข้าสู่ระบบหน่วงเวลาเท่านั้น" คือไม่ได้ตรวจสอบ


ฉันไม่ได้ลงนาม * .dll แต่ก็ไม่เคยมีปัญหามาก่อน (ฉันไม่มีข้อผิดพลาดในการรวบรวมก่อน) dll ที่อ้างอิงในหนึ่งในโครงการที่อ้างอิงของหนึ่งที่เผยแพร่ฉันพบวิธีแก้ปัญหาที่น่าเกลียดในการอ้างอิง dll โดยตรงจากโครงการที่เผยแพร่คุณสามารถช่วยบอกฉันทีว่าทำไมมันถึงใช้งานได้ในตอนนี้? หรือฉันจะแก้ปัญหา proble ด้วยวิธีอื่นได้อย่างไร ขอบคุณ
Sergey Kucher

1
@ user520535: ดีถ้าคุณยังไม่ได้ลงทะเบียนห้องสมุดมาก่อนคุณควร ไม่ใช่วิธีเดียวที่ไลบรารีนี้จะสามารถใช้งานได้โดยชุดประกอบที่ลงนามแล้ว (ชุดประกอบที่ลงนามแล้วไม่สามารถเรียกชุดที่ไม่ได้ลงนามได้) แต่การทำงานกับชุดประกอบที่ไม่ได้ลงนามยังเป็นเรื่องยุ่งยากมากเมื่อคุณจัดการกับปลั๊กอิน / เพิ่ม -ins ทีนี้ทำไมมันเริ่มก่อให้เกิดปัญหาในตอนนี้และไม่ใช่มาก่อน? ฉันไม่มีความคิด
Arseni Mourzenko

@ user520535: ถ้ามันช่วยคุณมีอิสระที่จะยอมรับหรือโหวตคำตอบ
Arseni Mourzenko

3

ตอนนี้ต่อไปนี้เป็นแนวทางที่แตกต่างสำหรับปัญหา:

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

  • คลิกขวาที่โครงการไม่พร้อมใช้งานและเลือกตัวเลือก 'แก้ไข'

  • เลื่อนลงไปที่แท็ก '<ItemGroup>' ที่มีแท็กทรัพยากรทั้งหมด

  • ตอนนี้ไปอ้างอิงที่แสดงในรายการข้อผิดพลาดคุณจะสังเกตเห็นว่ามันใช้แท็กเดียว (เช่น< Reference Include="assemble_name_here, Version=0.0.0.0, Culture=neutral" / >)

  • เปลี่ยนเป็นลักษณะดังนี้:

.

<Reference Include="assemble_name_here, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" >
    < Private > True < / Private >
    < HintPath > path_here\assemble_name_here.dll < / HintPath >
< / Reference >
  • บันทึกการเปลี่ยนแปลงของคุณคลิกขวาที่โครงการไม่พร้อมใช้งานอีกครั้งและคลิกที่ตัวเลือก 'โหลดโครงการ' จากนั้นสร้าง

3

สิ่งนี้เกิดขึ้นเมื่อคุณเปลี่ยนรุ่นของ. dll ที่อ้างอิง คุณต้องลบรายการทั้งหมดหรือ. dll ในโฟลเดอร์ build เป้าหมาย


2

ฉันได้รับข้อผิดพลาดของคอมไพเลอร์ที่คล้ายกัน เมื่อฉันเพิ่มโครงการที่อ้างถึงของไฟล์ dll เพื่อแก้ไขปัญหาได้รับการแก้ไข


2

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

คุณสามารถตรวจสอบการอ้างอิงทั้งหมดไปยังโครงการหลักของคุณโดยดูในหน้าต่าง Object Browser (เมนู View-> Object Browser) การอ้างอิงถึงไฟล์ dll จะมีหมายเลขเวอร์ชันเสมอ ตัวอย่าง: TestLib [1.0.0.0]

การแก้ไข: ลบการอ้างอิงปัจจุบันของโครงการหลักของคุณไปยังโครงการห้องสมุดและเพิ่มการอ้างอิงถึงโครงการห้องสมุดนั้นอีกครั้ง


1

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


1

สิ่งที่ช่วยฉันคือฉันไปที่ Package Manager Solution และดูแพ็คเกจที่ติดตั้งซึ่งก่อให้เกิดปัญหา ฉันเห็นว่าหลายโครงการอ้างอิงแพคเกจเดียวกัน แต่มีเวอร์ชั่นต่างกัน ฉันจัดเรียงพวกเขาตามความต้องการของฉันและใช้งานได้


0

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

ฉันมักจะได้รับข้อผิดพลาดที่แตกต่างกันในกรณีเหล่านี้

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

หวังว่าจะช่วยใครบางคน ...


0

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


0

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


0

ฉันยังชนชนิดของปัญหาทั้งหมดที่ฉันเพิ่งมีการทำคือการลบ .dll (สามารถพบได้ในการอ้างอิง) ที่ก่อให้เกิดข้อผิดพลาดและเพิ่มอีกครั้ง

ทำงานเหมือนจับใจ



0

เพียงไปที่ Publish -> Application File -> และเปลี่ยนสถานะการเผยแพร่ dll ที่ได้รับผลกระทบจากสิ่งที่จำเป็นต้องมีเพื่อรวม! สิ่งนี้ได้ผลสำหรับฉัน!

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