プロジェクトのターゲット フレームワークがどのように使用され、アセンブリの読み込みにどのように影響するかを理解しようとしています。これが問題です。
Visual Studio 2015 Community では、デフォルトのターゲット フレームワークは .NET 4.6.1 です。この設定のままで、NuGet を使用して Npgsql 3.0.7 をドライバーとしてローカル バックエンド PostgreSQL データベースにインストールしました。使用時
DbProviderFactories.GetFactory(プロバイダー名)
VS は、プロバイダーが見つからないことを報告しました。(これは Npgsql 3.0.7 が machine.config と GAC にインストールされた後です。)
これを調査する際に ( DbProviderFactories Demystified )、次のステートメントが作成されます。
DbProviderFactories は、単に Type.GetType を呼び出して Assembly を読み込み、Type のインスタンスを作成します。
これにより、Npgsql 3.0.7 をもう少し調査することになりました。NuGet がアセンブリをインストールすると、次の場所に配置されます。
C:...\packages\Npgsql.3.0.7\lib\net45\Npgsql.dll
「net45」を .NET 4.5 として、プロジェクトのターゲット フレームワークを .NET 4.5.2 に変更しました。再構築すると、すべてが警告やエラーなしで正常に実行されます。
では、「ターゲット フレームワーク」は machine.config と GAC の使用方法にどのように影響するのでしょうか?
説明(または参照)をありがとう。
注: ソリューション エクスプローラーには、Npgsql アセンブリが .NET 4.6.1 と互換性がないという警告はありませんでした。