По всем файлам, составляющим сборку , автор означает netmodule
s, а не ссылочные сборки.
Если сборка состоит только из своего отдельного файла, FileDef
таблица будет пустой.Вы сможете увидеть хеш-коды в манифесте, если попытаетесь создать сборку, состоящую из нескольких модулей.Попробуйте это:
(1) Создайте три исходных файла (для трех модулей):
// module1.cs
namespace MultiModuleAssembly
{
public class Class1 { }
}
// module2.cs
namespace MultiModuleAssembly
{
public class Class2 { }
}
// main.cs
namespace MultiModuleAssembly
{
public class Program
{
public static void Main(string[] args)
{
Class1 c1 = new Class1();
Class2 c2 = new Class2();
}
}
}
(2) Скомпилируйте каждый файл в .netmodule
:
csc /t:module module1.cs
csc /t:module module2.cs
csc /t:module main.cs /addmodule:module1.netmodule /addmodule:module2.netmodule
(3) Подпишите основной модуль с помощью ключа:
al main.netmodule /keyfile:key.snk /out:main-signed.dll
(4) Откройте main-signed.dll
в ildasm
и дважды щелкните узел M A N I F E S T
:
// Somewhere in the middle of the listing
.file main.netmodule
.hash = (89 84 FB F2 BB 72 AA 13 44 76 A5 49 8F 13 99 3E // .....r..Dv.I...>
54 30 24 84 ) // T0$.