คำเตือน: โครงการทั้งหมดที่อ้างถึง MyProject.csproj ต้องติดตั้งแพคเกจ nuget Microsoft.Bcl.Build


90

ฉันมีแอป ASP.NET MVC 4 ที่พัฒนาใน VS 2012 แอปนี้ประกอบด้วยโครงการหลัก (MyProject) โครงการทดสอบหน่วย (MyProject.Tests) โครงการการปรับใช้ Azure (MyProject.Azure) และอีกสองสามอย่าง โครงการห้องสมุดเอนกประสงค์

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

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

โอเคฉันมีสองโครงการที่อ้างอิง MyProject: MyProject.Tests และ MyProject.Azure ฉันสามารถคลิกขวาที่ MyProject.Tests เลือก ManageNuGet Packages และเพิ่ม Microsoft.Bcl.Build ซึ่งจะกำจัดหนึ่งในสองคำเตือน แต่VS ไม่ให้ฉันเลือกที่จะจัดการแพคเกจ NuGet สำหรับโครงการ

ฉันจะเพิ่มแพ็คเกจ Microsoft.Bcl.Build ไปยังโครงการการปรับใช้ Azure ได้อย่างไร

แก้ไข:

ขอขอบคุณไปยังผู้ใช้บวมตอนนี้ผมรู้ว่าปัญหาของ Microsoft Connect สำหรับปัญหานี้ได้รับการเปิดที่นี่


2
ขอบคุณสำหรับการอ้างอิงถึงปัญหาการเชื่อมต่อนี่เป็นปัญหาที่น่ารำคาญ
Paul Keister

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

3
ปัญหาเดียวกันนี้เกิดขึ้นกับฉันสำหรับโปรเจ็กต์ WiX ที่มีการอ้างอิงถึงโปรเจ็กต์อื่น ๆ (เพื่อจุดประสงค์ในการเก็บเกี่ยวผลผลิตของโปรเจ็กต์ที่เรียกว่า "ความร้อน") มันไม่สมเหตุสมผลเลยสำหรับโครงการติดตั้ง WiX ในการติดตั้งแพ็คเกจ NuGet! อ๊าก !!
Jaans

2
ตอนนี้ลิงก์ไปยังปัญหาการเชื่อมต่อส่งคืน 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Ryan Gates

คำตอบ:


54

หากคุณคลิกสองครั้งที่คำเตือนจะมีคำแนะนำในการปิดใช้งานคำเตือน

ปิดการใช้งานสำหรับการอ้างอิงโครงการจากโปรเจ็กต์ที่ยังไม่รองรับ Nuget ได้อย่างปลอดภัย

ดูส่วนด้านล่างเป็นตัวหนาที่คัดลอกมาจาก Microsoft.Bcl.Build.targets

BclBuildValidateNugetPackageReferences

เป้าหมายนี้สามารถปิดใช้งานสำหรับการอ้างอิงโปรเจ็กต์ได้โดยตั้งค่าSkipValidatePackageReferences = trueสำหรับการอ้างอิง:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
Arthur คุณลองตั้งค่าข้อมูลเมตาของ AdditionalPropertes แทน Properties ได้ไหม
TheESJ

5
@TheESJ ฉันประสบปัญหานี้กับโปรเจ็กต์ WiX และดูเหมือนว่าการตั้งค่า AdditionalProperties แทน Properties จะทำงานได้ ฉันสนใจที่จะรู้ว่าทำไม
lc.

3
วิธีนี้ใช้ได้ผลกับการสร้างโซลูชัน แต่เมื่อคุณใช้ 'Run' กับโครงการสีฟ้าเป็นโครงการเริ่มต้นของคุณคุณจะเห็นคำเตือนอีกครั้ง
eoleary

2
อย่าทำงานแม้แต่สร้าง VS 2015 ฉบับชุมชน
Artyom

2
ไม่ได้ทำงานใน VS2015 Professional ฉันมีปัญหาเดียวกันในการเพิ่มบรรทัดนี้
aclalex

63

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

เมื่อคุณคลิกสองครั้งที่คำเตือนใน VisualStudio คุณจะเข้าสู่เป้าหมาย BclBuildValidateNugetPackageReferences ในไฟล์ Microsoft.BclBuild.targets เหนือองค์ประกอบเป้าหมายจริงคุณควรพบบล็อกความคิดเห็นขนาดใหญ่ที่พูดถึงการปิดใช้งานการตรวจสอบการอ้างอิงโครงการ เนื่องจากโปรเจ็กต์ Azure ไม่สามารถมีการอ้างอิงไลบรารีได้จึงเป็นไปไม่ได้ที่โปรเจ็กต์ Azure เหล่านั้นจะตอบสนองความต้องการของบิลด์เป้าหมายนี้โดยเฉพาะ

การแก้ไขปัญหา? ปิดใช้งานการตรวจสอบการอ้างอิงจากโปรเจ็กต์ Azure เนื่องจากไม่สามารถเพิ่มการอ้างอิงแพ็กเกจ nuget ได้จริง

ตัวอย่าง

ดังนั้นถือว่าเรามีสองโครงการ: MyAzureProject.ccprojซึ่งอ้างอิงMyProject.csproj ทำตามขั้นตอนเหล่านี้:

  1. คลิกขวาที่ "MyAzureProject" ใน Solution Explorer และเลือก "Edit Project File"
  2. ค้นหาการอ้างอิงโครงการถึง "MyProject" ควรมีลักษณะดังนี้:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. เพิ่มองค์ประกอบต่อไปนี้ภายในองค์ประกอบ ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. การอ้างอิงโครงการของคุณควรมีลักษณะดังนี้:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. คลิกขวาที่ "MyAzureProject" ใน Solution Explorer และเลือก "Reload Project"

ตอนนี้คุณควรจะสร้างใหม่ได้แล้วและข้อผิดพลาดควรจะหายไป


17
ใน VS เวอร์ชันของฉันฉันต้องคลิกขวาและ "ยกเลิกการโหลดโปรเจ็กต์" ก่อนจึงจะสามารถคลิกขวาเพื่อแก้ไขไฟล์โครงการได้
pius

2
คุณหมายถึงMyAzureProject.ccprojมากกว่าMyAzureProject.csproj?
Edward Brey

จะใช้งานได้ก็ต่อเมื่อฉันเพิ่ม '<Properties> SkipValidatePackageReferences = true </Properties>' ในไฟล์โปรเจ็กต์ที่อ้างอิง * .csproj เพียงแค่แก้ไข * .ccproj ไม่ทำงาน
alexey

1
@pius เป็นฟีเจอร์เล็ก ๆ แต่มีตัวเลือกเมนูบริบท 'แก้ไขไฟล์โครงการ' ภายใต้ 'คำสั่งพลังงาน' ในProductivity Power Toolsซึ่งมีให้สำหรับ VS หลายรุ่น มันจะยกเลิกการโหลดโครงการและเปิดไฟล์โครงการให้คุณในคลิกเดียว
เจฟฟ์

16

ฉันประสบปัญหาเดียวกันและพยายามอัปเดต Microsoft.Bcl.Build.targets ซึ่งไม่ได้ช่วย

หลังจากการตรวจสอบพบว่าบางไฟล์ .csproj ของโครงการ Azure บริการ<Properties>SkipValidatePackageReferences=true</Properties>ต้องได้รับการแก้ไขให้มี

สิ่งนี้ไม่ชัดเจนจากคำตอบของ @TheESJ ดังนั้นจึงตัดสินใจโพสต์คำตอบแยกต่างหาก ขอบคุณข้อมูล @TheESJ


2

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

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

เมื่อฉันใช้โหนด Properties Xml ฉันได้รับข้อผิดพลาดใหม่:

ไม่ได้ตั้งค่าคุณสมบัติ OutputPath สำหรับโครงการ 'MyInstallerProject.csproj' โปรดตรวจสอบให้แน่ใจว่าคุณได้ระบุชุดค่าผสมที่ถูกต้องของการกำหนดค่าและแพลตฟอร์มสำหรับโครงการนี้ Configuration = 'Debug' Platform = 'x86' ข้อผิดพลาดนี้อาจปรากฏขึ้นหากโครงการอื่นบางโครงการพยายามติดตามการอ้างอิงโครงการต่อโครงการของโครงการนี้โครงการนี้ถูกยกเลิกการโหลดหรือไม่ได้รวมอยู่ในโซลูชันและโครงการอ้างอิงไม่ได้สร้างขึ้นโดยใช้โครงการเดียวกันหรือเทียบเท่า Configuration หรือ Platform


0

หลังจากล้มเหลวในการแก้ไขปัญหาเกี่ยวกับคำตอบใด ๆ ข้างต้นฉันก็เพียงทำตามคำแนะนำที่มีอยู่ในไฟล์ Microsoft.Bcl.Build.targets (แสดงหลังจากดับเบิลคลิกที่ข้อผิดพลาดในหน้าต่างผลลัพธ์การสร้าง) ฉันยกเลิกการโหลดโครงการของฉัน (อ้างถึงแพ็คเกจ Azure) พบข้อผิดพลาด แก้ไขไฟล์โครงการและแทรกสิ่งต่อไปนี้ ...

<PropertyGroup>
      <SkipValidatePackageReferences>true</SkipValidatePackageReferences>
</PropertyGroup>

... ที่ด้านบนของไฟล์โครงการก่อน PropertyGroup แรก

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