tseki blog

日常系

git - comitterと author を変更する

commiter

git config user.name="tseki"
git config user.email="tseki@example.com"
git commit --amend とか git rebase -i

これだとauthorは変更されない

author

1個前のとき

git commit --amend --author="another <another@example.com>"

もっと前から変更したい時

git rebase -i
→ 変更したいコミットを edit にする
git commit --amend --author="another <another@example.com>"
→ (コミットメッセージ編集)
git rebase --continue

Initial commit

git rebase -i --root

.NET Core 3.0 + PublishSingleFile で発行したアプリケーションを実行した際にEXEファイルのパスを取得する

TL;DR;

以下のプロパティで取得可能

var fileName = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;

試した .NET Core 3.0 の機能

.NET Core 3.0 には以下のような新機能があったので試してみました。

それぞれ dotnet publish にオプションを指定します。

dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true

EXEファイルのパスを取得する

ここで、このようなコードを試してみましたが、 出力された .exeファイルのパスは得られませんでした。

csファイル

static void Main(string[] args)
{
    System.Console.WriteLine($"System.IO.Directory.GetCurrentDirectory() : {System.IO.Directory.GetCurrentDirectory()}");
    System.Console.WriteLine($"typeof(Program).Assembly.Location : {typeof(Program).Assembly.Location}");
    System.Console.WriteLine($"System.AppDomain.CurrentDomain.BaseDirectory : {System.AppDomain.CurrentDomain.BaseDirectory}");
}

実行

C:\work\publishsinglefile> .\bin\Release\netcoreapp3.0\win-x64\publish\publishsinglefile.exe
Directory.GetCurrentDirectory() : C:\work\publishsinglefile
typeof(Program).Assembly.Location : C:\Users\TAKA\AppData\Local\Temp\.net\publishsinglefile\l1cfbcor.qny\publishsinglefile.dll
System.AppDomain.CurrentDomain.BaseDirectory : C:\Users\TAKA\AppData\Local\Temp\.net\publishsinglefile\l1cfbcor.qny\

解決方法

.\bin\Release\netcoreapp3.0\win-x64\publish\publishsinglefile.exe のパスを取得する方法を探したところ、以下の情報が見つかりました。

github.com

static void Main(string[] args)
{
    System.Console.WriteLine($"System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName : {System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName}");
}
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName : C:\work\publishsinglefile\bin\Release\netcoreapp3.0\win-x64\publish\publishsinglefile.exe

無事、EXEファイルのパスを取得することができました。

Task.Factory.StartNew()で投げっぱなしの時にContinueWith()で継続処理がしたかった

.NET Framework4.0です。

投げっぱなしが良いのかどうかは置いておいて、 Task.Factory.StartNew()で非同期処理を開始した後の継続処理について実装していました。

GUIで非同期書くことに慣れていなかったのでいろいろ模索していたのですが、 成功/キャンセル/エラーで継続処理を分ける時にちょっとハマったのでメモ。

続きを読む

暇だったので「5ポチ」くらいでブログ作ってみた

はじめまして。

日頃、技術系のブログやQiitaの記事などを読んだりしています。

 
はてなってAndroidアプリも出してるんだぁ」
と知り、DLしておいたアプリの中に
Hatena Blogがありました。