Dự án của bạn không tham chiếu đến khuôn khổ “.NETFramework, Version = v4.6.2”. Thêm tham chiếu đến “.NETFramework, Version = v4.6.2” trong “TargetFrameworks”


103

Tôi không thể chạy thử nghiệm đơn vị của mình.

Tôi gặp lỗi tiếp theo:

Dự án của bạn không tham chiếu đến khuôn khổ ".NETFramework, Version = v4.6.2". Thêm tham chiếu đến ".NETFramework, Version = v4.6.2" trong thuộc tính "TargetFrameworks" của tệp dự án của bạn và sau đó chạy lại khôi phục NuGet.

Trong app.config:

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

Trong Dự án> Thuộc tính> Ứng dụng> TargetFramework (.NET Framework 4.6.2)

Làm thế nào tôi có thể sửa chữa nó?


Câu trả lời:


250

Vui lòng thực hiện các bước tiếp theo

  1. Dung dịch sạch
  2. Làm sạch "gói" thư mục
  3. Xóa thư mục "bin"
  4. Xóa thư mục "obj"

24
# 3 và # 4 đã giải quyết được vấn đề. Tôi có một nhánh là nhiệm vụ nâng cấp lên 4.7.2 tuy nhiên tôi phải chuyển sang một nhánh khác đang nhắm mục tiêu 4.7.1. Thực hiện các bước sau để giải quyết vấn đề đó.
jjhayter

4
Phải thực hiện thêm một bước nữa, từ thư mục giải pháp: del / S project.assets.json
Jannes

Sau khi thực hiện việc này sạch sẽ, tôi phát hiện ra rằng tôi đã gặp một lỗi khác trong dự án được hiển thị lỗi .Net Framework. Sửa nó đã giải quyết được sự cố.
meJustAndrew

2
stackoverflow.com/a/755433/769137 có các tập lệnh hàng loạt để xóa chúng.
Vedran

1
Tôi đã nâng cấp từ 4.7.2 lên 4.8 và chỉ cần xóa các obj/thư mục là đủ .
trượt

29

Tôi đã gặp vấn đề tương tự, nhưng với v4.7.2. Cụ thể, tôi tiếp tục nhận được thông báo nhật ký xây dựng như thế này:

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.

Mặc dù thực tế là nó trông giống nhau, không có bước nào được đề xuất ở trên phù hợp với tôi. Tôi tiếp tục thấy thông báo này sau mỗi lần xây dựng. Dường như không có gì có thể giúp được.

Trên thực tế, vấn đề liên quan đến điều đó, do di chuyển, tôi phải đặt hai dự án trong một thư mục mã. Một trong số chúng được nhắm mục tiêu vào .Net Core , một trong số khác tại .Net Framework , cả hai đều tham chiếu đến cùng các thư viện .Net Standard. Rõ ràng, chúng chia sẻ cùng một objthư mục nơi các dự án Core đặt project.assets.jsontệp. Trên thực tế, chính xác thì tệp này làm gián đoạn dự án Framework ngăn cản quá trình xây dựng bình thường của nó. Có vẻ như ngay cả khi bạn đã thực hiện Di chuyển từ package.config sang PackageReference ... được khuyến nghị là một trong những giải pháp khả thi.

Bạn có thể cố gắng khắc phục sự cố bằng cách đặt đoạn mã sau vào tệp dự án Framework của mình:

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

Nó ngay lập tức có hiệu quả với tôi, chỉ sau này khi tôi chăm chú đọc lý do tại sao chúng tôi cần nó và tại sao nó hoạt động. Tôi bất ngờ tìm thấy nó trong phần 2 của Di chuyển ứng dụng WPF mẫu sang .NET Core 3 trong phần Đảm bảo dự án .NET Framework vẫn xây dựng . BaseOutputPathBaseIntermediateOutputPathcác biến msbuild có thể được tìm thấy ở đó, nhưng không chắc liệu chúng có được ghi lại tốt ở bất kỳ đâu.


Điều này đã giải quyết vấn đề của tôi. Tôi sẽ không bao giờ tìm thấy nó nếu không, cảm ơn.
Erdogan Kurtur

1
Trong VS2019, tôi nhận thấy rằng các thuộc tính bạn đề cập cần phải có trước Đường dẫn đầu ra. Ban đầu tôi chỉ thả chúng xuống cuối csproj mà không thành công. Bài đăng này có một số chi tiết bổ sung và ngụ ý rằng điều này có thể được khắc phục tại một số điểm: github.com/dotnet/msbuild/issues/2070
John Dyer

17

Điều đó đã xảy ra với tôi khi mở một dự án VS2015 vào VS2017. Xóa project.assets.jsonkhỏi objthư mục đã thực hiện một thủ thuật.

Dù sao, Khung từ thông báo bị thiếu trong tệp, mặc dù vậy, tôi đã không thêm nó vào đó, đi cùng với việc xóa nó.


2
Giải pháp đơn giản nhất của tất cả. Chỉ cần tìm kiếm tệp trong giải pháp và xóa chúng ngay lập tức :)
Imad

5

Tôi đã bầu chọn Larissa nhưng tôi nghĩ có thể hữu ích nếu biết cách tôi tham gia vào việc này. Tôi đã thêm tệp dự án tiêu chuẩn .net vào bản dựng của mình (chúng tôi nhắm mục tiêu đến nhiều nền tảng) và nó tạo ra các mảnh vụn được tìm thấy trong thư mục obj. Khi bản dựng sanity android xuất hiện, nó xuất hiện trên thư mục obj. Giải pháp của tôi là dọn dẹp thư mục đó như một bước xây dựng trước. Đây là một vấn đề khó khăn vì nó hoạt động tốt trong nhiều năm ... kim gặp đống.


2

Đối với trường hợp của tôi, hãy xóa .pkgrefgen/thư mục trong thư mục dự án hoạt động, nó chứa tệp project.assets.json tham chiếu đến khung .net cũ


2
Của tôi là một tệp project.assets.json trong thư mục obj. Đã xóa các thư mục bin và obj và sự cố đã biến mất.
Ceres

1

Tôi gặp phải điều tương tự với .net 4.71. Trong trường hợp của tôi, tôi chỉ cần di chuyển từ package.config sang "tham chiếu gói" mỗi

Di chuyển từ package.config sang PackageReference

... và nó đã khắc phục sự cố của tôi. Đối với tôi, tôi vẫn sẽ làm điều này, vì vậy nếu bạn đang đi theo hướng này, tôi chỉ cần bỏ qua phần trên và chuyển sang tham chiếu gói.


0

Tôi đang sử dụng một dự án .NET rất cũ và nó đang hoạt động tốt cho đến khi nó bị dừng đột ngột. Bạn đã sửa lỗi nâng cấp Visual Studio cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.