2017-08-08 74 views
35

.NET Core 1.0 veya 1.1 üzerinde derlenmiş ve düzgün çalışan bir projeyi yükseltirken, hedef çerçeveyi .NET Core 2.0'a güncelleştirme (netcoreapp2.0), yapıya neden oluyor aşağıdaki hata ile başarısız olmasına: .NET Core 2.0'a Yükseltme: PackageTargetFallback ve AssetTargetFallback birlikte kullanılamaz.

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

ne Bu hatanın nedeni nedir ve nasıl tekrar proje yapı yapmak için çözülebilir

?

cevap

62

.NET Core 1.0 ve 1.1'de, .NET Core üzerinde çalıştığı bilinen ancak resmi olarak desteklemediği bilinen paketlere başvuruda bulunulduğunda PackageTargetFallback ayarlanması gerekiyordu - ör. Eski dotnet çerçeve monikeri için PCL kitaplıkları veya kitaplıkları oluşturulmuştur. Bundan dolayı

, proje (.csproj, .fsproj, ...) benzer bir satır içerir:

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

Çoğu durumda, bu hat sadece çıkarılabilir ve proje çünkü inşa etmeliyiz. NET Core 2.0, AssetTargetFallback'u net461 olarak tanımlamaktadır - bu, .NET Framework 4.6.1 veya üstü ile uyumlu olan herhangi bir NuGet paketinin ek yapılandırma olmaksızın kullanılabileceği anlamına gelir.

bu daha yapı tanıtır olursa/hataları geri, için satır değişikliği: değişikliğinin nedeni

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

PackageTargetFallback kullanımdan kaldırıldı kabul edilir ve sadece biraz farklı davranır AssetTargetFallback ile değiştirilmesi gerekir olmasıdır.

kalıp içinde kırılma değişim netcoreapp2.0 ve netstandard2.0 otomatik proje dosyasında tanımlanan herhangi PackageTargetFallback değeri ile çakışan AssetTargetFallback set olmasıdır.

+7

Csproj'u editörde açtım ve öğesini tamamen önerdiğiniz gibi kaldırdım ve gayet iyi çalıştı. – amassani