当我做了一个清洁建立我的C#项目,生产dll是不同的,然后前建立一个(我保存分开).没有代码进行了更改,只是清理和重建。

差异显示了一些字节的DLL有变化--几近开始的,并几近结束,但是我不能找出什么这些代表。没有任何人有见解为什么发生这种情况以及如何阻止它?

这是使用Visual Studio2005/它.

更新: 不使用自动版本增加,或签署大会。如果它是一个时间戳某种形式的,如何防止VS写它?

更新: 之后的寻找在Ildasm/差异,这似乎是以下项目是不同的:

  • 两个字节在PE头开始时文件。
  • <PrivateImplementationDetails>{guid}段
  • 神秘的部分串表接近结束(不知道为什么,我没有改变串)
  • 部分组件的信息,在结束的文件。

不知道如何消除任何这些,如果在所有可能的...

有帮助吗?

解决方案

我最好的猜测是改变字节你看到的是内部使用的元数据的列自动生成时建立的时间。

一些通信机制详解-335分区II(CLI规范元数据定义)列,可以改变每建立,即使源代码并不能改变:

  • 模块。Mvid:一个建立时产生的GUID。总的变化,每一个建设。
  • AssemblyRef.HashValue:可能会改变如果你在引用另一个组件,也已经重建,因为旧的建立。

如果这真的,真的很困扰你,我最好的尖端找出到底是什么改变将是比较实际的元数据表。的方式来获得这些是使用ildasm MetaInfo窗口:

View > MetaInfo > Raw:Header,Schema,Rows // important, otherwise you get very basic info from the next step

View > MetaInfo > Show!

其他提示

我认为这是TimeDateStamp领域中的IMAGE_FILE_HEADER头的 PE32规格.

可能是建造或修改数字已经改变。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top