.NET Core 1.0または1.1で正常にコンパイルおよび実行されているプロジェクトをアップグレードする場合、ターゲットフレームワークを.NET Core 2.0(netcoreapp2.0
)に更新すると、ビルドが次のエラーで失敗します。
error NU1003: PackageTargetFallback and AssetTargetFallback cannot be used together. Remove PackageTargetFallback(deprecated) references from the project environment.
このエラーの理由は何ですか?また、プロジェクトを再度ビルドするためにどのように解決できますか?
.NET Core 1.0および1.1では、.NET Coreで動作することがわかっているが公式にはサポートしていないパッケージを参照する場合、PackageTargetFallback
を設定する必要がありました。 PCLライブラリまたはレガシーdotnet
フレームワークモニカー用に構築されたライブラリ。
このため、プロジェクト(.csproj
、.fsproj
、...)には次のような行が含まれます。
<PackageTargetFallback>$(PackageTargetFallback);portable-net45+win8+wp8+wpa81;</PackageTargetFallback>
ほとんどの場合、この行は簡単に削除できます .NET Core 2.0は既にAssetTargetFallback
をnet461
に定義しているため、プロジェクトをビルドする必要があります-つまり、互換性のあるNuGetパッケージ.NET Framework 4.6.1以降では、追加の構成なしで使用できます。
これによりさらにビルド/復元エラーが発生する場合は、行を次のように変更します。
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback>
変更の理由は、PackageTargetFallback
は非推奨と見なされ、わずかに異なる動作をするAssetTargetFallback
に置き換える必要があるためです。
ツールの重大な変更点は、netcoreapp2.0
およびnetstandard2.0
が自動的にAssetTargetFallback
を設定することです。これは、プロジェクトファイルで定義されたPackageTargetFallback
値と競合します。