問題タブ [packagereference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - PackageReference と package.lock.json は、App.Config でのバインディング リダイレクトの必要性を取り除きますか?
Nuget では、依存関係にPackageReference形式を使用できるようになり、ロック ファイルを使用して反復可能なビルドを有効にすることもできます
私のプロジェクトでは、次のようなものを取得します。
たとえば、競合する Newtonsoft.Json 依存関係があることがわかります。この場合、Apache.Avro の依存関係には、バージョンが >= 3.5.0 である必要があるため、互換性があるはずであると記載されていると思います。
NuGet が復元を実行すると、特定のアセンブリに対して 1 つの DLL のみが解決され、アプリケーションの起動時に使用されます。ロック ファイルがなければ、すべての csproj ファイルで AutoGenerateBindingRedirects=true を使用する必要がありました。
これにより、おなじみのバインド リダイレクトが生成されます: oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0"
このようなリダイレクトがないと、同様に見慣れたエラー メッセージが表示されます。
起動時。依存関係が非常に古い Newtonsoft.Json バージョンを必要としており、解決済みのバージョン 12.0.1 のみを提供したためです。
私は、新しい PackageReference とロック ファイルにより、アセンブリ バインド リダイレクトの必要性がなくなるという印象を受けました。しかし、私の印象では、上記のエラーを回避するためにまだ必要であるということです。
あれは正しいですか?リダイレクトをバインドする必要があるということは、依存関係の設定に何か問題があることを意味しているのでしょうか? ライブラリが XYZ 以上のバージョンの DLL を受け入れるように指定している場合、バインディング リダイレクトが必要になるのはなぜですか?
xamarin.forms - PackageReference に移行すると Nuget のビルドに失敗する
私は Xamarin Forms Project を持っています - Android プロジェクトは API 28 (Pie) を対象とし、nuget 参照に packages.config を使用します。すべてのパッケージに targetFramework="monoandroid90" があります。プロジェクトは正しくコンパイルおよび実行されます。
PackageReference を使用するように移行したいので、packages.config を PackageReference に移行するオプションを使用します。
これが完了した後、プロジェクトをビルドしようとすると、パッケージが見つからないというエラーが表示されます。
Xamarin.Android.Support.Annotations.28.0.0.1
パッケージ フォルダーを見ると、Xamarin.Android.Support パッケージがダウンロードされておらず、パッケージを再インストールしてもダウンロードできないことがわかります。
また、packages.config で monoandroid90 が使用されていたにもかかわらず、csproj ファイルがすべてのナゲットに対して monoandroid81 を参照していることにも気付きました。
移行後に同様の問題が発生した人はいますか?