その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
その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