[解決済み] ファイルまたはアセンブリをロードできませんでした Microsoft.Extensions.Logging.Abstractions
質問
VS2019 Pro v16.3.5を使用しています。
私は、いくつかのクラスライブラリプロジェクトを参照するAzureファンクションプロジェクトを含むソリューションを持っています。
トップレベルのプロジェクトは、以下のエラーでコンパイルに失敗します。
System.IO.FileNotFoundException: Could not load file or assembly 「Microsoft.Extensions.Logging.Abstractions, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'です。システムが 指定されたファイルが見つかりません。
このプロジェクトにはパッケージリファレンスがあります。 PackageReference Include="Microsoft.AspNetCore.App" このフレームワークには、不足しているDLLが含まれているので、なぜ問題が発生するのかわかりません。
私の考えでは、おそらく参照されているプロジェクトの1つが別のバージョンに依存しているのだと思いますが、私にはそれが見当たりません。
トップレベルのプロジェクトで明示的にパッケージを参照してみましたが、違いはありませんでした。
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="2.2.0.0" />
ここにトップレベルのcsprojファイルの現在のコピーがあります。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Base.Core.SharedKernel" Version="1.0.0.23885" />
<PackageReference Include="FluentValidation" Version="8.4.0" />
<PackageReference Include="FluentValidation.AspNetCore" Version="8.4.0" />
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="7.0.0" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.5" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.27" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Interfaces.Avaloq.Application\Interfaces.Avaloq.Application.csproj" />
<ProjectReference Include="..\Interfaces.Avaloq.Common\Interfaces.Avaloq.Common.csproj" />
<ProjectReference Include="..\Interfaces.Avaloq.Infrastructure\Interfaces.Avaloq.Infrastructure.csproj" />
<ProjectReference Include="..\Interfaces.Avaloq.Persistence\Interfaces.Avaloq.Persistence.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>
Nuget パッケージを参照する際の問題点 FluentValidation.dll などのパッケージリファレンスのアセンブリは、グローバルパッケージフォルダ C:\Usersbowman_rob_a.nugetpackages にあることが確認できます。しかし、グローバルパッケージフォルダには、Microsoft.Extensions.Logging.Abstractions の v2.2.0.0 がなく、多くのバージョンが含まれていますが、2.1.0 から 3.0.0 までスキップされています。
パッケージマネージャーのコンソールから "install-package Microsoft.Extensions.Logging.Abstractions -Version 2.2.0" と実行すると、次のエラーが表示されます。
WriteObjectメソッドとWriteErrorメソッドを外から呼び出すことはできません。 BeginProcessing, ProcessRecord のオーバーライド。 EndProcessing メソッドの中からしか呼び出すことができません。 同じスレッド
このエラーにもかかわらず、パッケージはソリューションエクスプローラーのプロジェクトのパッケージセクションに表示されます。しかし、それは奇妙なパスでリストされています "C:\Program FilesdotnetsdkNuGetFallbackFolder templatesmicrosoft.extensions.logging.abstractions2.2.0"
共有パッケージの参照に関する問題 v2.2.0.0 は共有パッケージのリファレンス "Microsoft.AspNetCore.App" に含まれているので、そこからアセンブリを引っ張ってくればいいのではないでしょうか?共有パッケージのアセンブリは、"C: \Program Filesdotnet╱shared." にあります。 "Microsoft.AspNetCore.App" が、2.1.13から2.2.4まで、やはり2.2.0.0は飛ばされています。しかし、フォルダ "C:♪Program Filesdotnet♪Microsoft.AspNetCore.App2.2.4♪Microsoft.Extensions.Logging.Abstractions.dll" には、v2.2.0.0のdllが含まれているのです。
バージョンの競合 Azure Functionsがnugetパッケージチェーンに依存していることが根本的な原因として考えられると思います。Microsoft.Azure.WebJobs.Extensions --> Microsoft.Azure.WebJobs --> Microsoft.Extensions.Logging.Abstractions. Microsoft.Azure.WebJobs.Extensionsの最新バージョンは3.0.2で、これはMicrosoft.Extentions.Logging.Abstractionsのv2.1.0につながります - これはShared Framework Microsoft.AspNetCore.Appに含まれているv2.2.0.0より古いです。 誰かコンパイラによって使われる共有枠組みのバージョンをどう変更できるかを知りませんか?私はruntimeconfig.jsonファイルをどこにも見つけることができません!
回避策 私は、ソリューション内のすべてのプロジェクトから共有参照を削除し、必要なnugetパッケージを個別に追加することによって、ソリューションをビルドすることができました - 古い2.1.0バージョンを使用しています。
解決するには?
同じような問題に遭遇した人がいたら、解決できるかもしれない情報と回避策をいくつか紹介します。
<ブロッククオート変なパスでリストアップされている "C:♪Program Filesdotnet
NuGetFallbackFolder
Microsoft.extensions.logging.abstractions2.2.0"FallBackFolders は、ユーザーやマシン間でパッケージを共有し、リスクスペースを減らすために使用されるものです。
パッケージソースと異なる点は、パッケージ資産が直接参照され、ユーザーのパッケージフォルダにコピーされないことです。
そのため、Global Packages のような
C:\Users\xxx\.nuget\packages
.
について
Version Conflict
上記のように、連鎖的に
Microsoft.Azure.WebJobs.Extensions
があります。
Microsoft.Azure.WebJobs.Extensions --> Microsoft.Azure.WebJobs --> Microsoft.Extensions.Logging.Abstractions(2.1.0)
また
Microsoft.AspNetCore.App
パッケージで、その連鎖を
Microsoft.AspNetCore.App(2.2.0) --> Microsoft.Extensions.Logging.Abstractions(2.2.0)
私はこれがバージョンの衝突の原因である可能性があると思うので、そのパッケージを削除して別の回避策を確認することができます。
おまけ
VS16.3.5 で新しい Azure Function プロジェクトを作成すると、これらのパッケージを手動で参照する必要はない。
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions" Version="3.0.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="1.8.2" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.ServiceBus" Version="3.0.5" />
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
以降
Microsoft.NET.Sdk.Functions
はこれらのパッケージに依存しているので、nugetはこれらのパッケージをダウンロードし、参照するのに役立ちます。
また、Azure 関数プロジェクトを何種類か試しましたが、いずれも
Microsoft.AspNetCore.App
パッケージを使用する特別な理由がない場合は、参照する必要はありません。
関連
-
[解決済み] 致命的なエラーが発生しました。必要なライブラリhostfxr.dllが見つかりませんでした。
-
[解決済み] ファイルまたはアセンブリをロードできませんでした Microsoft.Extensions.Logging.Abstractions
-
[解決済み] .NET Core 3.0とIIS:HTTPエラー500.30 - ANCMプロセス内起動の失敗:coreclrの読み込みに失敗しました。
-
[解決済み] EXEを出力する.NET Coreコンソールアプリケーションを構築する
-
[解決済み】NuGetパッケージが見つからない
-
[解決済み】.NET Coreコンソールアプリケーションをコマンドラインから実行する方法
-
[解決済み] .NET CoreでデスクトップGUIアプリケーションを作ることは可能か?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 致命的なエラーが発生しました。必要なライブラリhostfxr.dllが見つかりませんでした。
-
[解決済み] ファイルまたはアセンブリをロードできませんでした Microsoft.Extensions.Logging.Abstractions
-
[解決済み] .NET Core 3.0とIIS:HTTPエラー500.30 - ANCMプロセス内起動の失敗:coreclrの読み込みに失敗しました。
-
[解決済み] EXEを出力する.NET Coreコンソールアプリケーションを構築する
-
[解決済み】.NET Coreコンソールアプリケーションをコマンドラインから実行する方法
-
[解決済み] .NET CoreでデスクトップGUIアプリケーションを作ることは可能か?