.net Core 3.1 の NLogではまった… その2
その1:https://deathmarchdaily.blogspot.com/2020/06/net-core-31-nlog.html
その2:https://deathmarchdaily.blogspot.com/2020/06/net-core-31-nlog-2.html
その3:https://deathmarchdaily.blogspot.com/2020/06/net-core-31-nlog-3.html
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
その2:https://deathmarchdaily.blogspot.com/2020/06/net-core-31-nlog-2.html
その3:https://deathmarchdaily.blogspot.com/2020/06/net-core-31-nlog-3.html
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
コメント
コメントを投稿