โครงการของคุณไม่ได้อ้างอิงกรอบงาน“ .NETFramework, Version = v4.6.2” เพิ่มการอ้างอิงถึง“ .NETFramework, Version = v4.6.2” ใน“ TargetFrameworks”


112

ฉันไม่สามารถทำการทดสอบหน่วยของฉันได้

ฉันมีข้อผิดพลาดถัดไป:

โครงการของคุณไม่ได้อ้างอิงเฟรมเวิร์ก ".NETFramework, Version = v4.6.2" เพิ่มการอ้างอิงถึง ".NETFramework, Version = v4.6.2" ในคุณสมบัติ "TargetFrameworks" ของไฟล์โครงการของคุณจากนั้นเรียกใช้ NuGet restore อีกครั้ง

ในapp.config:

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>

ในโครงการ> คุณสมบัติ> แอปพลิเคชัน> TargetFramework (.NET Framework 4.6.2)

จะแก้ไขได้อย่างไร?


คำตอบ:


272

โปรดทำตามขั้นตอนต่อไป

  1. น้ำยาทำความสะอาด
  2. ล้างโฟลเดอร์ "แพ็คเกจ"
  3. ลบโฟลเดอร์ "bin"
  4. ลบโฟลเดอร์ "obj"

27
# 3 และ # 4 แก้ไขปัญหาได้ ฉันมีสาขาที่เป็นงานอัปเกรดเป็น 4.7.2 แต่ฉันต้องเปลี่ยนไปใช้สาขาอื่นที่กำหนดเป้าหมาย 4.7.1 ทำตามขั้นตอนเหล่านี้เพื่อแก้ไขปัญหานั้น
jjhayter

4
ต้องทำอีกขั้นตอนหนึ่งจากไดเร็กทอรีโซลูชัน: del / S project.assets.json
Jannes

หลังจากทำความสะอาดแล้วฉันพบว่าฉันมีข้อผิดพลาดอื่นในโครงการซึ่งแสดงข้อผิดพลาด. Net Framework การแก้ไขช่วยแก้ปัญหาได้
meJustAndrew

2
stackoverflow.com/a/755433/769137มีชุดสคริปต์สำหรับการลบสิ่งเหล่านี้
Vedran

1
ฉันอัปเกรดจาก 4.7.2 เป็น 4.8 และเพียงพอแล้วสำหรับฉันที่จะลบobj/โฟลเดอร์
skst

30

ฉันประสบปัญหาที่คล้ายกัน แต่มีv4.7.2. กล่าวคือฉันได้รับข้อความบันทึกการสร้างเช่นนี้:

error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

แม้ว่าจะดูคล้ายกัน แต่ขั้นตอนที่เสนอข้างต้นไม่ได้ผลสำหรับฉัน ฉันยังคงเห็นข้อความนี้หลังการสร้างแต่ละครั้ง ดูเหมือนจะไม่มีอะไรสามารถช่วยได้

อันที่จริงปัญหาเกี่ยวข้องกับเรื่องนั้นเนื่องจากการย้ายข้อมูลฉันต้องใส่สองโปรเจ็กต์ในโฟลเดอร์รหัสเดียว หนึ่งในนั้นถูกกำหนดเป้าหมายที่. Net Coreและอีกอันที่. Net Frameworkซึ่งอ้างอิงไลบรารี. Net Standard เดียวกันทั้งคู่ เห็นได้ชัดว่าพวกเขาแชร์objโฟลเดอร์เดียวกันกับที่โครงการหลักใส่project.assets.jsonไฟล์ อันที่จริงไฟล์นี้รบกวนโครงการ Framework ที่ขัดขวางการสร้างปกติ ดูเหมือนว่าแม้ว่าคุณจะทำการMigrate จาก package.config เป็น PackageReference ...ซึ่งแนะนำให้เป็นหนึ่งในวิธีแก้ปัญหาที่เป็นไปได้

คุณสามารถลองแก้ไขปัญหาได้โดยใส่ข้อมูลโค้ดต่อไปนี้ลงในไฟล์โครงการ Framework ของคุณ:

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>

มันใช้งานได้ทันทีสำหรับฉันในภายหลังเมื่อฉันตั้งใจอ่านว่าทำไมเราถึงต้องการและทำไมมันถึงได้ผล ฉันพบโดยไม่คาดคิดในส่วนที่ 2ของการย้ายแอป WPF ตัวอย่างไปยัง. NET Core 3ภายใต้การตรวจสอบให้แน่ใจว่าโครงการ. NET Framework ยังคงสร้างส่วน BaseOutputPathและBaseIntermediateOutputPathตัวแปร msbuild สามารถพบได้ที่นั่นไม่แน่ใจว่ามีการบันทึกไว้อย่างดีหรือไม่


สิ่งนี้ช่วยแก้ปัญหาของฉันได้ ฉันจะไม่พบมันเป็นอย่างอื่นขอบคุณ
Erdogan Kurtur

1
ใน VS2019 ฉันพบว่าคุณสมบัติที่คุณกล่าวถึงต้องอยู่ก่อน OutputPath ตอนแรกฉันเพิ่งทิ้งไว้ที่ด้านล่างของ csproj โดยไม่ประสบความสำเร็จ โพสต์นี้มีรายละเอียดเพิ่มเติมและบอกเป็นนัยว่าสิ่งนี้อาจได้รับการแก้ไขในบางจุด: github.com/dotnet/msbuild/issues/2070
John Dyer

20

ที่เกิดขึ้นกับฉันเมื่อเปิดโครงการ VS2015 ใน VS2017 การลบproject.assets.jsonออกจากobjโฟลเดอร์เป็นการหลอกลวง

อย่างไรก็ตาม Framework จากข้อความหายไปในไฟล์ฉันไม่ได้เพิ่มที่นั่นแม้ว่าจะลบทิ้ง


2
ทางออกที่ง่ายที่สุดของทั้งหมด เพียงค้นหาไฟล์ในโซลูชันและลบออกในครั้งเดียว :)
Imad

5

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


2

สำหรับกรณีของฉันลบ.pkgrefgen/โฟลเดอร์ภายใต้โฟลเดอร์โครงการทำงานได้มันมีไฟล์project.assets.jsonที่อ้างถึง. net framework เก่า


2
ของฉันเป็นไฟล์ project.assets.json ในโฟลเดอร์ obj ลบโฟลเดอร์ bin และ obj แล้วปัญหาก็หายไป
Ceres

1

ฉันพบสิ่งเดียวกันกับ. net 4.71 ในกรณีของฉันฉันย้ายจาก package.config เป็น "การอ้างอิงแพ็คเกจ" ต่อ

โยกย้ายจาก package.config ไปยัง PackageReference

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


0

ฉันใช้โปรเจ็กต์. NET ที่เก่ามากและใช้งานได้ดีจนกระทั่งมันหยุดลงในทันที การอัปเกรด Visual Studio ได้รับการแก้ไขสำหรับฉันแล้ว

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