ใช้ C #, Visual Studio 2010
มีเนมสเปซที่เรียกว่าSystem.Web.Mvc ที่บันทึกไว้ใน MSDN เอกสารทุกประเภทใน namespace System.Web.Mvc.dll
ที่กล่าวว่าพวกเขาอยู่ใน
อย่างไรก็ตามเมื่อฉันไปที่เพิ่มการอ้างอิงแท็บ“ .NET” แอสเซมบลีนี้หายไปจากรายการ ทำไม?
ใช้ C #, Visual Studio 2010
มีเนมสเปซที่เรียกว่าSystem.Web.Mvc ที่บันทึกไว้ใน MSDN เอกสารทุกประเภทใน namespace System.Web.Mvc.dll
ที่กล่าวว่าพวกเขาอยู่ใน
อย่างไรก็ตามเมื่อฉันไปที่เพิ่มการอ้างอิงแท็บ“ .NET” แอสเซมบลีนี้หายไปจากรายการ ทำไม?
คำตอบ:
ใน VS Express 2012 ฉันไม่พบ System.Web.Mvc ในแท็บ "แอสเซมบลี" แต่หลังจากค้นหาสักครู่ฉันพบว่าฉันต้องดูในแท็บ" แอสเซมบลี \ ส่วนขยาย " แทนที่จะเป็น "แอสเซมบลี \ เฟรมเวิร์ก" เริ่มต้น "แท็บ
Could not load file or assembly...The located assembly's manifest definition does not match the assembly reference
) ฉันมีโครงการอื่นในโซลูชันของฉันที่อ้างถึงเวอร์ชันอื่นและวิธีนี้อนุญาตให้ฉันเพิ่มการอ้างอิงไปยัง System.Web.Mvc เวอร์ชัน = 4.0.0.0 เท่านั้น วิธีการติดตั้ง NuGet ได้เพิ่มเวอร์ชันที่ถูกต้อง
วิธีที่ดีที่สุดคือใช้ NuGet package manager
เพียงอัปเดตแพ็คเกจ MVC ด้านล่างและควรใช้งานได้
ฉันมีปัญหาเดียวกันและไม่สามารถค้นหาแอสเซมบลีอ้างอิง System.Web.MVC ได้
ในที่สุดก็พบและตั้งอยู่ในสถานที่ต่อไปนี้
สังเกตว่า VS ของคุณติดตั้งไว้ใน C: (บางครั้ง MVC.dll ไม่ได้อยู่ในตำแหน่งเริ่มต้นที่ทุกคนพูดถึงฉันหมายถึงโฟลเดอร์ " Reference Assemblies " ที่อยู่ในไดรฟ์ C :)
ถ้าไม่มีก็ควรอยู่ที่นี่:
\ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll
ดังนั้นเพิ่ม dll ผ่านการนำทางหรือแท็บเรียกดูในเมนูเพิ่มการอ้างอิง
คุณยังสามารถเพิ่มสิ่งนี้ได้จาก Nuget Package Manager Console เช่น:
Install-Package Microsoft.AspNet.Mvc -Version 4.0.20710.0 -ProjectName XXXXX
Microsoft.AspNet.Mvc มีการอ้างอิงบน:
... ซึ่งดูเหมือนจะไม่ใช่เรื่องใหญ่สำหรับฉัน ในกรณีของเรานี่คือไลบรารีชั้นเรียนที่มีไว้เพื่อรองรับแอป Mvc ของเราเท่านั้น ดังนั้นเราคิดว่ามันเป็นการพึ่งพาที่อ่อนโยนที่เลวร้ายที่สุด
ฉันชอบสิ่งนี้เพื่อชี้ไปที่แอสเซมบลีในระบบไฟล์หรือใน GAC เนื่องจากการอัปเดตแพ็คเกจในอนาคตน่าจะเจ็บปวดน้อยกว่าประสบการณ์ที่ฉันเคยพบกับ GAC และการอ้างอิงแอสเซมบลีระบบไฟล์ในอดีต
ฉันมีปัญหาเดียวกันและนี่คือเหตุผลที่ตลก: ฉันเดาว่าคุณคาดว่าSystem.Web.Mvc
จะอยู่ภายใต้System.Web
รายชื่อ แต่รายการไม่เรียงตามตัวอักษร
อันดับแรกจัดเรียงรายการจากนั้นดูใกล้ ๆ ไฟล์System.Web
.
"ตกลงการเพิ่ม XML นั้นลงใน Web.config ใช้งานได้ แต่ไม่ตอบคำถาม"
มันควรจะอยู่ที่นั่น ตามค่าเริ่มต้นรายการอ้างอิงเพิ่มดูเหมือนจะได้รับคำสั่ง แต่ไม่เป็นเช่นนั้น กดที่ส่วนหัวของชื่อแล้วดูอีกครั้ง
ตรวจสอบขั้นตอนเหล่านี้:
หมายเหตุ : หากกรอบเป้าหมายถูกตั้งค่าเป็น. Net Framework 4 Client Profile จะไม่แสดงรายการอ้างอิง MVC ในรายการอ้างอิง คุณสามารถค้นหาที่แตกต่างกันระหว่าง 4 Framework .NET และ 4 Framework .NET โปรไฟล์ไคลเอนต์ที่นี่
โปรไฟล์ไคลเอ็นต์. NET Framework 4 เป็นชุดย่อยของ. NET Framework 4 ที่ปรับให้เหมาะสมสำหรับไคลเอ็นต์แอ็พพลิเคชัน มีฟังก์ชันการทำงานสำหรับแอปพลิเคชันไคลเอนต์ส่วนใหญ่รวมถึง Windows Presentation Foundation (WPF), Windows Forms, Windows Communication Foundation (WCF) และคุณลักษณะ ClickOnce ทำให้สามารถปรับใช้งานได้เร็วขึ้นและแพคเกจการติดตั้งที่เล็กลงสำหรับแอปพลิเคชันที่กำหนดเป้าหมายโปรไฟล์ไคลเอ็นต์. NET Framework 4
ฉันแก้ปัญหานี้โดยค้นหา "mvc" System.Web.Mvc ปรากฏในผลการค้นหาแม้ว่าจะไม่มีอยู่ในรายการก็ตาม
ตอนนี้แอสเซมบลีที่ต้องการปรากฏในรายการ
ฉันสามารถคาดเดาได้ว่าอะไรทำให้มันปรากฏขึ้น แต่ฉันสงสัยว่ามันเป็นความจริงที่ว่าฉันไปFile → New → Project → ASP.NET Web Applicationซึ่งฉันไม่เคยทำมาก่อน เป็นไปได้ว่าสิ่งนี้ทำให้การเริ่มต้นล่าช้าเกิดขึ้นและรายการจะถูกเติมด้วยแอสเซมบลีเพิ่มเติมสำหรับการพัฒนาเว็บ
สิ่งนี้มีการเปลี่ยนแปลงสำหรับ Visual Studio 2012 (ฉันรู้ว่าคำถามเดิมระบุว่า VS2010 แต่ชื่อจะยังคงถูกค้นหา)
เมื่อคุณสร้างโปรเจ็กต์ VS2012 MVC system.web.mvc จะอยู่ในโฟลเดอร์แพ็กเกจซึ่งเป็นเพียร์กับโซลูชัน สิ่งนี้จะถูกอ้างอิงในโครงการเว็บตามค่าเริ่มต้นและคุณสามารถค้นหาเส้นทางที่แน่นอนได้ที่นั่น)
หากคุณต้องการอ้างอิงสิ่งนี้ในโครงการรอง (เช่น. dll ที่รองรับพร้อมตัวกรองหรือแอตทริบิวต์อื่น ๆ ) คุณสามารถอ้างอิงได้จากที่นั่น
ฉันเชื่อว่าคุณจะพบว่าแอสเซมบลี MVC ถูกอ้างอิงในไฟล์ web.config ไม่ใช่ในโปรเจ็กต์
สิ่งนี้:
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
</compilation>
เพื่อตอบกลับความคิดเห็นของคุณ
คำตอบที่ดีที่สุดที่ฉันสามารถให้ได้คือจากที่นี่ :
องค์ประกอบ add เพิ่มการอ้างอิงแอสเซมบลีเพื่อใช้ในระหว่างการรวบรวมทรัพยากรแบบไดนามิก ASP.NET จะเชื่อมโยงแอสเซมบลีนี้กับรีซอร์สโดยอัตโนมัติเมื่อคอมไพล์โมดูลโค้ดแต่ละโมดูล
สามารถติดตั้งแยกออกจากกันและไม่รวมอยู่ใน framwork ให้เลือกรายการแท็บ "ส่วนขยาย" และมีอยู่มี libs อื่น ๆ อีกมากมายทั้งหมดไม่จำเป็นต้องใช้ libs เก่า ฯลฯ มีอยู่เก่า 20 30 และ 4001
ถ้าคุณมีปัญหานี้ใน Visual Studio 2017, โอกาสที่คุณทำงานอยู่กับโครงการ MVC 4 สร้างขึ้นในรุ่นก่อนหน้าของ VS C:\Program Files (x86)\Microsoft ASP.NET
กับเส้นทางที่คำใบ้อ้างอิงชี้ไปที่ Visual Studio 2017 ไม่ได้ติดตั้งไดเร็กทอรีนี้อีกต่อไป
โดยปกติเราจะแก้ปัญหานี้โดยการติดตั้งสำเนาของ Visual Studio 2015 ควบคู่ไปกับอินสแตนซ์ 2017 ของเราและติดตั้งไลบรารีที่จำเป็นในเส้นทางด้านบน จากนั้นเราจะอัปเดตข้อมูลอ้างอิงทั้งหมดในโครงการที่ได้รับผลกระทบและพร้อมที่จะดำเนินการต่อไป