C# C语言中编译时源代码的哈希#

C# C语言中编译时源代码的哈希#,c#,reflection,hash,compilation,C#,Reflection,Hash,Compilation,由于有其他开发人员使用的服务器,我目前记录了他们使用的dll的版本。我通过让使用反射的客户端检索其版本来实现这一点: Assembly.GetEntryAssembly().GetName().Version.ToString(); 这很好,但由于它来自使用TFS并自行构建的开发人员,我看不出他们是否拥有最新版本的源代码。是否有一种技巧,比如编译标记,可以轻松地允许生成源代码的散列 注意:我已尝试发送dll的名称(使用assembly.Location),但它没有用,因为哈希值在两次编译之

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

Assembly.GetEntryAssembly().GetName().Version.ToString();  
这很好,但由于它来自使用TFS并自行构建的开发人员,我看不出他们是否拥有最新版本的源代码。是否有一种技巧,比如编译标记,可以轻松地允许生成源代码的散列


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

这是协作最多的问题,然后是编码。 当你发现版本是旧版本时,通知他们。 如果实际版本不是旧版本,这意味着开发人员在制作buold之前没有增加版本ID,这是错误的

换言之,在人们中进行组织,而不是依赖于这些工具(如果有的话)。你试图创造一个复杂的工具,这将帮助你避免错误,但人类会找到一种方法,使他们再次


因此,最好在你们之间创建牢固的关系结构,我认为。

似乎没有简单的方法来做到这一点。

在预构建事件上创建一个工具来散列/上次写入代码文件

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

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

要防止跳过生成(最新)功能不起作用,请在写入前比较文件


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

我可能不清楚:我想知道是否存在此类工具。它存在一些简单的工具,如#warning、//TODO或AssemblyVersion(“1.0.*)。我想知道是否存在#SourceFileHash。。。