goo blog サービス終了のお知らせ 

いつもどこかでデスマーチ♪

不定期に、私の日常を書き込みしていきます。

.net Core 3.1 の NLogではまった… その2

2020年06月09日 13時56分17秒 | .NET系
その1:https://blog.goo.ne.jp/pianyi/e/63d643b66739ea286e74bac9b39b5c2a
その2:https://blog.goo.ne.jp/pianyi/e/edf5b129ab13a7cef41c86880d6efd62
その3:https://blog.goo.ne.jp/pianyi/e/9b6017142366df6ed30ec21f6402511a

NLog の サンプルConfig を見ると、大体が ${basedir} を使ってますよね?
私もそれに習って ${basedir} を使ってファイル出力先を指定してました。

さて何が問題なのでしょうか?
答え:EXEをリリースするときに使う「発行」がありますが、この設定で「単一ファイルの作成」 にチェックを付けてEXEを作ると、多量のDLLがなくなり1つのEXEになって便利ですよね。
「さて実行だ! → ログファイルが出ねぇ!」のコンボが発生します。

原因はこれ:
https://rksoftware.hatenablog.com/entry/2019/09/29/155926

どうも「単一ファイルの作成」を作って実行すると、Tmpフォルダに全DLL群を展開後に実行するようです。
(最初の1回目に時間がかかるのは展開処理を行ってるからなんですね…)

で、何が問題かというと、
・${basedir} は Tmp フォルダを指します。
・${currentdir} は Exe フォルダを指します。

結果、${basedir} を使用するとログファイルがTmpフォルダに作成されるため、見つけられなくなります。

というわけで、「単一ファイルの作成」 でEXEを作成する場合、パスは${currentdir} を使う または、「./」を使って相対パスを使う のどちらかです。
覚えておきましょう


ちなみに「その3」も書きます… パスが変わるという事は…勘のいいひとなら想像できると思います。

検索用:.net Core 3.1 発行 単一ファイルの作成 ログ 出ない ファイルが無い ファイルが作られない 出力されない NLog
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« .net Core 3.1 の NLogではま... | トップ | .net Core 3.1 の NLogではま... »
最新の画像もっと見る

コメントを投稿

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
ブログ作成者から承認されるまでコメントは反映されません。

.NET系」カテゴリの最新記事