.NET Frameworkと.NET Coreの差異

提供: Hideki Saito Wiki Japanese
2017年4月24日 (月) 22:32時点におけるHsaito (トーク | 投稿記録)による版 (log4netの使い方)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

以下はプログラミング上での.NET Framework.NET Coreの違いをまとめたもの。

StreamReader等のシグネチャの違い

.NET Frameworkでは以下のようにStreamReaderにファイル名を渡せる。

var sr = new StreamReader("file.txt");

ところが、.NET CoreにおいてはStreamReaderのコンストラクタにstringがないため、この方法は使えない。そのため、以下のようにする必要がある。

var sr = new StreamReader(new FileStream("file.txt", FileMode.Open));

log4netの使い方

通常、log4netを使用する場合、AssemblyInfo.csやアプリケーションの.configファイルに設定等を含める必要がある。しかし、AssemblyInfo.csは.NET Coreには含まれないため、別の方法を使用する必要がある。

具体的には……。

XmlDocument log4netConfig = new XmlDocument();

using (StreamReader reader = new StreamReader(new FileStream("log4net.config", FileMode.Open, FileAccess.Read)))
{
    log4netConfig.Load(reader);
}

ILoggerRepository rep = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
XmlConfigurator.Configure(rep, log4netConfig["log4net"]);

この方法は.NET Frameworkでも使用できるので、共通にコードを使用する必要がある場合は上記の方法を使用するのが楽。