获取.NET程序集的日期[重复]

2024-04-18

如何从当前 .NET 程序集中检索创建日期?

我想添加一些非常简单的功能,让我的应用程序在主程序集构建日期一周后停止工作。我已经编写了在给定日期后杀死我的应用程序的代码。我只需要以编程方式从程序集中检索创建日期。


以下内容是基于:https://blog.codinghorror.com/determining-build-date-the-hard-way/ https://blog.codinghorror.com/determining-build-date-the-hard-way/

public static class ApplicationInformation
{
    /// <summary>
    /// Gets the executing assembly.
    /// </summary>
    /// <value>The executing assembly.</value>
    public static System.Reflection.Assembly ExecutingAssembly
    {
        get { return executingAssembly ?? (executingAssembly = System.Reflection.Assembly.GetExecutingAssembly()); }
    }
    private static System.Reflection.Assembly executingAssembly;

    /// <summary>
    /// Gets the executing assembly version.
    /// </summary>
    /// <value>The executing assembly version.</value>
    public static System.Version ExecutingAssemblyVersion
    {
        get { return executingAssemblyVersion ?? (executingAssemblyVersion = ExecutingAssembly.GetName().Version); }
    }
    private static System.Version executingAssemblyVersion;

    /// <summary>
    /// Gets the compile date of the currently executing assembly.
    /// </summary>
    /// <value>The compile date.</value>
    public static System.DateTime CompileDate
    {
        get
        {
            if (!compileDate.HasValue)
                compileDate = RetrieveLinkerTimestamp(ExecutingAssembly.Location);
            return compileDate ?? new System.DateTime();
        }
    }
    private static System.DateTime? compileDate;

    /// <summary>
    /// Retrieves the linker timestamp.
    /// </summary>
    /// <param name="filePath">The file path.</param>
    /// <returns></returns>
    /// <remarks>http://www.codinghorror.com/blog/2005/04/determining-build-date-the-hard-way.html</remarks>
    private static System.DateTime RetrieveLinkerTimestamp(string filePath)
    {
        const int peHeaderOffset = 60;
        const int linkerTimestampOffset = 8;
        var b = new byte[2048];
        System.IO.FileStream s = null;
        try
        {
            s = new System.IO.FileStream(filePath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            s.Read(b, 0, 2048);
        }
        finally
        {
            if(s != null)
                s.Close();
        }
        var dt = new System.DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(System.BitConverter.ToInt32(b, System.BitConverter.ToInt32(b, peHeaderOffset) + linkerTimestampOffset));
        return dt.AddHours(System.TimeZone.CurrentTimeZone.GetUtcOffset(dt).Hours);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取.NET程序集的日期[重复] 的相关文章

  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • 如何使用 zlib 制作 .zip 文件

    我正在阅读zlib的文档 它相当详细 但我读到了这一行 输出数据将位于zlib格式 与 gzip 或zip formats http www zlib net zlib how html http www zlib net zlib how
  • 内联函数/方法

    声明 内联函数必须在调用之前定义 这个说法正确吗 EDIT 该问题最初是德语 内联功能穆森 弗 伊赫雷姆 奥夫鲁夫定义 sein 也许它对任何人都有帮助 是的 它是正确的 但只是部分正确 它可能正确地重新构建如下 内联函数必须在每个翻译单位
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • 选择列表逻辑应位于 ASP.NET MVC、视图、模型或控制器中的什么位置?

    我觉得我的问题与这个问题很接近 但我想对这样的代码应该放在哪里进行更一般的讨论 Asp Net MVC SelectList 重构问题 https stackoverflow com questions 2149855 asp net mv
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • SFINAE 如何使用省略号?

    过去 当使用 SFINAE 选择构造函数重载时 我通常使用以下内容 template
  • 如何将带有自定义分配器的 std::vector 传递给需要带有 std::allocator 的函数?

    我正在使用外部库 pcl 因此我需要一个不会更改现有函数原型的解决方案 我正在使用的一个函数生成一个std vector
  • 对 boost 库的依赖项没有完整路径

    我已经成功构建了动态库 依赖于使用自定义前缀构建和安装的 boost 库 b2 install prefix PREFIX 然而 当我跑步时otool L在我的库中 我得到如下输出 libboost regex dylib compatib
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • .NET 客户端中 Google 表格中的条件格式请求

    我知道如何在 Google Sheets API 中对值和其他格式进行批量电子表格更新请求 但条件格式似乎有所不同 我已正确设置请求 AddConditionalFormatRuleRequest formatRequest new Add
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • C++、三元运算符、std::cout

    如何使用 C 用三元运算符编写以下条件 int condition1 condition2 condition3 int double result int or double std cout lt lt condition1 resul
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题

随机推荐

  • 将动画 GIF 叠加在 MapView 上

    我一直在绞尽脑汁地试图让这个看似简单的任务发挥作用 我需要将一个动画 gif 放在地图视图上的叠加层中 我有以下代码 AnimationDrawable anim AnimationDrawable getResources getDraw
  • 在 Android 4.2 中写入全局设置

    Android 4 2引入了一个新类 设置 全局 http developer android com reference android provider Settings Global html 现在保存了一些以前的设置设置 安全 ht
  • 如何使用 Clockwork Rails 调度程序 Gem?

    我在 Clockwork 调度程序进程的语法方面遇到问题 实际上 我遇到了与此线程中讨论的类似问题 但从未完全回答 如何使用 Rails Clockwork gem 运行 rake 任务 https stackoverflow com qu
  • 将 pandas 列表数据框转换为数据框字典

    我有一个数据框 带有 DateTime 索引 其中一些列包含列表 每个列表有 6 个元素 In dframe head Out A B timestamp 2017 05 01 00 32 25 30 3512 375 1025 358 1
  • Windows 服务、阻塞收集和多线程问题

    我的场景 Windows 服务 NET 4 我轮询数据库中的实体 当新实体进来时 它们会被添加到BlockingCollection 在服务的OnStart我创建一个System Threading Tasks Task他的工作是枚举Blo
  • 为什么引用某些导出的 const 变量的某些 const 变量的值为 0?

    考虑以下 我有两个导出常量 如下所示 somefile h extern const double cMyConstDouble extern const double cMyConstDouble2 and somefile cpp co
  • IntelliJ IDEA - Eclipse .classpath 文件和相对位置?

    我想将 IntelliJ IDEA 与 Eclipse 项目一起使用 而不转换项目格式 我现在遇到的主要问题是在我的 classpath 文件中 我们有如下条目
  • Eclipse 中缺少“注释处理”菜单

    我用这个手册https github com excilys androidannotations wiki Eclipse Only Configuration https github com excilys androidannota
  • 如何将 IN 子句与 mysqli 准备好的语句一起使用[重复]

    这个问题在这里已经有答案了 我正在使用准备好的语句将一些旧代码移至新的 msqli 接口 但我在使用包含 IN 子句的 SQL 语句时遇到了问题 我通常会这样做 ids 123 535 345 567 878 sql SELECT FROM
  • “父框基线”的定义是什么?

    我无法理解以下摘录10 可视化格式化模型详细信息 W3C https www w3 org TR CSS2 visudet html 摘录 基线 将框的基线与父框的基线对齐 如果该框没有基线 请将下边距边缘与父级的基线对齐 在这种情况下 父
  • 具有 Flux 模式的中继缓存?

    我真的很想将 Relay 缓存合并到我的 Flux 存储中 这样我就可以进行 时间旅行 并深入了解应用程序 看起来中继存储和操作都是不可序列化的类 这很糟糕 但看起来我应该能够将缓存与网络请求分开并将缓存保存在 Flux 存储中 这听起来有
  • Vista/Win7 Delphi 音频设备信息

    有没有办法在 Vista 或 Win 7 上使用 delphi D2009 获取所有音频设备名称 我设法获取设备数量 并使用 IMMDevice 获取设备 PropertyStore 但我无法继续 多谢 ask the PropertySt
  • 如何在Dockerfile中下载并解压

    所以 我有 它有效 但我想改变立即下载文件并解压它的方式 Dockerfile FROM wordpress fpm Copying themes from local COPY wordpress var www html wp cont
  • Newtonsoft.Json 可在 Unity 编辑器中运行,但无法在移动设备上运行

    我正在 Unity 中编写一个按类别提问和回答的游戏 类别是通过返回 JSON 文本的 PHP 脚本获取的 当我在 UnityEditor 中使用此解决方案时 它可以正常工作 但是当我在移动设备上安装 apk 时 反序列化不起作用 与 my
  • 带圆角的方形进度条

    我正在尝试在 dart flutter 中构建一种圆形方形进度条 也许有人知道如何使其成为可能 我已经尝试了所有 油漆 边框等等 但没有成功 示例图像 圆形方形进度条 https i stack imgur com jhy9Q png 你可
  • 在 Python 中为现有 PDF 创建大纲/目录

    我正在使用 pyPdf 将多个 PDF 文件合并为一个 这很好用 但我还需要向生成的 PDF 文件添加目录 大纲 书签 pyPdf 似乎只支持读取大纲 Reportlab 允许我创建它们 但开源版本不支持加载 PDF 文件 因此无法向现有文
  • 一个本地 .resx 字符串可以引用另一个本地 .resx 字符串吗?

    我正在尝试确定是否可以将串联字符串添加到我的本地 resx 文件之一 这个例子应该澄清 假设我有一个简单的 ASP NET 网页 由 1 一个标签 其文本是重要关键字 2 一个带有必填字段验证的输入和 3 一个导致验证发生的按钮组成 lbl
  • JodaTime中如何获取本机的时区?

    如何检测本地计算机所在的时区 I tried DateTimeZone getDefault 但如果机器位于德国 那么这不会给我例如时区 德国 有可能吗 DateTimeZone getDefault 如果您的主机位于德国 将返回您的时区
  • 没有 jpa 的 Spring 和 Hibernate

    对于我的新项目 我计划使用 Hibernate 5 和 Spring 4 并且一如既往地喜欢分成不同的层 项目 梯度依赖 org springframework spring webmvc 4 2 1 RELEASE org springf
  • 获取.NET程序集的日期[重复]

    这个问题在这里已经有答案了 如何从当前 NET 程序集中检索创建日期 我想添加一些非常简单的功能 让我的应用程序在主程序集构建日期一周后停止工作 我已经编写了在给定日期后杀死我的应用程序的代码 我只需要以编程方式从程序集中检索创建日期 以下