【问题标题】:Hash of source codes at compile time in C#C#中编译时源代码的哈希
【发布时间】:2012-11-12 11:14:26
【问题描述】:

拥有其他开发人员使用的服务器,我目前记录他们使用的 dll 版本。我通过让客户端使用反射来检索其版本来做到这一点:

Assembly.GetEntryAssembly().GetName().Version.ToString();  

很好,但由于它来自使用 TFS 并自己构建的开发人员,我无法查看他们是否拥有最新版本的源代码。有没有什么技巧,比如编译标签,可以很容易地允许生成源代码的散列?

注意:我尝试发送 dll 的MD5(使用 assembly.Location),但它没有用,因为哈希值在 2 次编译之间发生变化(我想生成的 dll 中有一些编译时间戳)。

【问题讨论】:

    标签: c# reflection hash compilation


    【解决方案1】:

    这是大多数协作问题,然后是编码。 在您发现版本是旧版本的那一刻,请通知他们。 如果 real 版本不是旧版本,则表示开发者在制作 buold 之前没有增加版本 ID,这是错误的。

    换句话说,在人们之间规范它,而不是依赖这些工具(如果有的话)。你试图创造一个复杂的工具,这将帮助你避免错误,但人类会找到一种再次制造它们的方法。

    所以最好在你们之间建立稳固的关系结构,imo。

    【讨论】:

    • 我可能不清楚:我想知道这种工具是否存在。它存在简单的工具,如#warning、//TODO 或 AssemblyVersion("1.0.*")。我想知道是否存在#SourceFileHash...
    【解决方案2】:

    在预构建事件上创建一个工具来散列/最后写入您的代码文件。

    将结果写入cs文件或嵌入式资源文件。

    结果文件必须在上述操作中排除。

    为了防止跳过构建(最新)功能不起作用,请在写入前比较文件。

    如果你在 IDE 中打开文件,构建时会提示“从外部更改”。

    【讨论】:

      【解决方案3】:

      似乎没有简单的方法。

      【讨论】:

        猜你喜欢
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-08
        相关资源
        最近更新 更多