2017-09-22 13 views
3

NetStandard2.0でアセンブリを作成しました。 System.Configuration.ConfigurationManagerを使用してAppSettingsを読み取ります。私はのSystem.Configuration.ConfigurationManagerのバージョン4.4.XのNugetパッケージをインストールしました。これはのNetStandard2.0に適しています。.NET FX2.6ライブラリのSystem.Configuration.Configuration Managerを.NET FX4.6上で使用できません

コンソールアプリケーション(.Net Core)でこのアセンブリを参照すると、正しくAppSettingsが読み込まれますが、古い.NetFramework(4.6.X)コンソールアプリケーションでこのアセンブリを参照すると、動作しなくなり例外がスローされます。

下記のコードをご覧ください。

アセンブリ1:NetStandard 2.0

Nuget:System.Configuration.ConfigurationManager 4.4.0

using System.Configuration; 

namespace Bootstrapper.Lib 
{ 
    public class Bootstrapper 
    { 
    public Bootstrapper() 
    { 

    } 

    public void LoadAppSettings() 
    { 
     string serachPattern= 
     ConfigurationManager.AppSettings["AssemblySearchPattern"]; 
    } 
    } 

} 

コンソールアプリケーション:NetFx 4.6.xの

using System; 
using Bootstrapper.Lib; 
namespace Bootstrapper.Console 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 
     new Bootstrapper().LoadAppSettings(); 
    } 
    } 
} 

Exce実行した後ption:

'Could not load file or assembly 'System.Configuration.ConfigurationManager, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one 
of its dependencies. The system cannot find the file specified.' 

これは、コンソールアプリケーションは.NetCoreを使用して開発していきます。

助けてください!

+0

マイクロソフトでは、「.NETコア用Windows互換性パック」を発表しました。それには、とりわけ、 'System.Configuration.ConfigurationManager'が含まれています(しかし、あなたの.NETコアアプリケーションは" Windowsのみ "となります)。すでに利用可能かどうかは分かりません。単に引用符で囲まれた用語のためのGoogleを見つけ、あなたが見つけることができるものを見てください。 –

+0

https://github.com/dotnet/announcements/issues/31に記載されている自動バインディングリダイレクトの生成を有効にしましたか? –

+0

@MartinUllrichはい、私は今日試しましたが、同じ例外が発生しました。 – kiran

答えて

1

System.Configuration.ConfigurationManagerパッケージを参照し、ConfigurationManagerクラスを使用する.NET標準ライブラリを作成することはできません。ライブラリが.NET Core固有のパッケージへの参照を追加すると、フレームワーク固有のパッケージにバインドされているため、.NET標準ライブラリの移植は中止されます。

.NET Standard 2.0は、System.Configuration.ConfigurationManager APIを含んでいません。したがって、このAPIを使用する唯一の方法は、.NET Coreで使用できる.NETコアSystem.Configuration.ConfigurationManagerパッケージに対するライブラリの1つのバージョンを構築し、.NET FX System.Configurationアセンブリに対して構築されたライブラリの2番目のバージョンを使用することです.NET FXにあります。

関連する問題