[解決済み】ビルドデータの表示について
2022-04-14 08:16:33
質問
現在、タイトルウィンドウにビルド番号を表示するアプリを使用しています。 最新のビルドがあるかどうかを知りたいほとんどのユーザーにとっては何の意味もありませんが、彼らはビルド 1.0.8.4321 ではなく、quot;先週の木曜日; と呼ぶ傾向があります。
例えば、"App built on 21/10/2009" のように、ビルドの日付を代わりに記載する予定です。
このような使い方をするために、プログラム的にビルドデータをテキスト文字列として取り出す方法を見つけるのに苦労しています。
ビルド番号は、私が使用した
Assembly.GetExecutingAssembly().GetName().Version.ToString()
が出てきた経緯を定義した後。
コンパイル日(ボーナスポイントとして時間も)のようなものが欲しいです。
また、より良い解決策もお待ちしています。
解決方法は?
ジェフ・アトウッドは、この問題について、次のようなことを述べています。 ビルドデータの決定が難しい .
最も信頼性の高い方法は、リンカのタイムスタンプを PEヘッダー Jeffの記事へのコメントから、Joe SpiveyによるC#のコードをいくつか引用しています。
public static DateTime GetLinkerTime(this Assembly assembly, TimeZoneInfo target = null)
{
var filePath = assembly.Location;
const int c_PeHeaderOffset = 60;
const int c_LinkerTimestampOffset = 8;
var buffer = new byte[2048];
using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
stream.Read(buffer, 0, 2048);
var offset = BitConverter.ToInt32(buffer, c_PeHeaderOffset);
var secondsSince1970 = BitConverter.ToInt32(buffer, offset + c_LinkerTimestampOffset);
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var linkTimeUtc = epoch.AddSeconds(secondsSince1970);
var tz = target ?? TimeZoneInfo.Local;
var localTime = TimeZoneInfo.ConvertTimeFromUtc(linkTimeUtc, tz);
return localTime;
}
使用例です。
var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();
UPDATE: この方法は、.Net Core 1.0 では動作していましたが .Net Core 1.1以降、動作しなくなった リリース(1900-2020の範囲でランダムな年号を与える)
関連
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] time(1) の出力における 'real', 'user' および 'sys' はどのような意味ですか?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み] Androidで現在の時刻と日付を取得する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。「戻り値を変更できません」 C#
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み] Windowsのコマンドラインで、現在の日付/時刻をファイル/フォルダー名で使用するために適切な形式で取得するにはどうすればよいですか?
-
[解決済み】Windowsバッチ:改行せずにエコーする
-
[解決済み】.NETでリソースを作成し使用する方法
-
[解決済み] ISO 8601フォーマットから.NET DateTimeを作成する方法