Hi Alex,

thanks for the pointer, I didnt know that one. But I am afraid it
doesnt help in my case.

The Hash property of AssemblyNameDefinition always returns an empty
bytearray.

Does anyone know if

  MVID
  Timestamp
  Checksum (in .NET 4 Assemblies)

have fixed positions within the bytearray of a assembly? I would
probably go and write a own hashalgorithm on my own then.

Thanks
Florian

On 18 Jun., 13:50, Alex <[email protected]> wrote:
> Hi,
>
> Just use asmDef.Name.Hash[Algorithm]?
>
> Regards,
> Alex
>
> 2011/6/18 Florian <[email protected]>:
>
>
>
> > Hi there,
>
> > I am trying to encounter wether two assemblies have actually the same
> > content (i.e. being build from the same sources).
>
> > My first attempt was to create a MD5 hash on the assembly file content
> > and compare that MD5 hash to the hash of another assembly. This proved
> > to be not working because there are some fields within the assembly
> > file format that vary on every build, even if built from the exact
> > same sources.
> > One example of these fields is the MVID (ModuleVersionID) - see also:
> >http://stackoverflow.com/questions/2940857/determine-whether-net-asse....
> > The StackOverflow post says that with .NET 4 there are now 3 different
> > fields that vary on each build.
>
> > I really need to find a fast way to compare if the data that I cached
> > away from an assembly needs to be updated (because the assembly
> > content has changed - i.e. it has been built from changed sources).
> > So would it be possible to create a GetAssemblyHash() method in the
> > AssemblyDefinition class that basically takes the file content
> > bytearray, blanks out those fields that vary on each build and creates
> > a md5 hash on it?
>
> > I would propably give it a go on my own but I guess my knowledge about
> > the assembly file format is just not enough to make a stable solution.
>
> > If it helps, here is how I did the Md5 Hashing:
>
> >            var md5 = new MD5CryptoServiceProvider();
> >            var result = md5.ComputeHash(byteArray);
> >            var sb = new StringBuilder();
> >            for (var i = 0; i < result.Length; i++)
> >                sb.Append(result[i].ToString("X2"));
> >            return sb.ToString();
>
> > Thanks a lot for any help, its really appreciated.
>
> > Best regards
>
> > Florian
>
> > --
> > --
> > mono-cecil- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

-- 
--
mono-cecil

Reply via email to