2017-08-08 23 views
35

Khi nâng cấp dự án đang biên dịch và chạy tốt trên .NET Core 1.0 hoặc 1.1, việc cập nhật khung đích lên .NET Core 2.0 (netcoreapp2.0) gây ra việc xây dựng không thành công với lỗi sau:Nâng cấp lên .NET Core 2.0: PackageTargetFallback và AssetTargetFallback không thể được sử dụng cùng nhau

error NU1003: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment. 

Lý do cho lỗi này là gì và làm cách nào để giải quyết dự án có thể xây dựng lại?

Trả lời

62

Trong .NET Core 1.0 và 1.1, cần thiết đặt PackageTargetFallback khi tham chiếu các gói được biết là hoạt động trên .NET Core nhưng không hỗ trợ chính thức - ví dụ: Thư viện PCL hoặc thư viện được tạo cho biệt danh khung dotnet cũ.

Do đó, dự án (.csproj, .fsproj ...) sẽ chứa một dòng tương tự như:

<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback> 

Trong hầu hết các trường hợp, dòng này chỉ có thể được gỡ bỏ và dự án nên xây dựng vì. NET Core 2.0 đã định nghĩa AssetTargetFallbacknet461 - nghĩa là mọi gói NuGet tương thích với .NET Framework 4.6.1 hoặc cao hơn có thể được sử dụng mà không cần cấu hình bổ sung.

Nếu đây giới thiệu nhiều build/khôi phục lỗi, thay đổi dòng để:

<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> 

Lý do cho sự thay đổi là PackageTargetFallback được coi là bị phản đối và cần được thay thế bằng AssetTargetFallback mà ứng xử chỉ hơi khác nhau.

Thay đổi đột phá trong công cụ là netcoreapp2.0netstandard2.0 tự động đặt AssetTargetFallback xung đột với bất kỳ giá trị PackageTargetFallback được xác định trong tệp dự án.

+7

Cảm ơn, tôi đã mở csproj trong trình chỉnh sửa và xóa phần tử hoàn toàn như bạn đã đề xuất và nó hoạt động tốt. – amassani

Các vấn đề liên quan