例外「’PerTypeValues`1′ のタイプ初期化子が例外をスローしました。」 が発生
Azure Key Vault のシークレットから値を取得するときに、「’PerTypeValues`1′ のタイプ初期化子が例外をスローしました。」というエラーが発生し、参照することができませんでした。
環境情報
事象が発生した環境の情報と、Azure Key Vault のシークレットにアクセスするために使用したライブラリです。
ライブラリは Nuget で管理しています。
- .NET Framework 4.6.2
- Azure.Identity (1.4.0)
- Microsoft.ApplicationInsights (2.12.0)
原因:バージョンが低い System.Runtime.CompilerServices.Unsafe を参照していた
発生した環境は、プロジェクトが分割されていて、プロジェクトA が Azure Key Vault アクセス用のプロジェクト、プロジェクトB が Application Insights にログを出力するためのプロジェクトという構成になっていました。
それぞれのプロジェクトで参照していたライブラリとその依存関係です。
プロジェクトA
- Azure.Identity (1.4.0)
- System.Text.Json (4.6.0)
- System.Runtime.CompilerServices.Unsafe (4.6.0)
- System.Text.Json (4.6.0)
プロジェクトB
Application Insights にログを出力するため以下のパッケージもインストールしていました。
- Microsoft.ApplicationInsights (2.12.0)
- System.Diagnostics.DiagnosticSource (4.6.0)
- System.Memory (4.5.3)
- System.Runtime.CompilerServices.Unsafe (4.5.2)
- System.Memory (4.5.3)
- System.Diagnostics.DiagnosticSource (4.6.0)
このとき、ビルドの順番によって System.Runtime.CompilerServices.Unsafe (4.5.2) のdllが配置されていました。
Azure.Identity が System.Runtime.CompilerServices.Unsafe 参照するときに、必要な最低バージョン(4.6.0)に満たしていないため、例外が発生していました。
プロジェクトBで System.Runtime.CompilerServices.Unsafe (4.6.0) を参照するようにして解決しました。
コメント