У меня были некоторые проблемы со статическими конструкторами в моем проекте. Мне нужно добавить статический конструктор к типу "", чтобы вызвать мой метод расшифровки ресурсов.
Ниже на гифке вы увидите проблему, с которой я столкнулся.
Я также включу фрагмент кода.
Код для создания cctor:
MethodDefinition method = new MethodDefinition(
".cctor",
Mono.Cecil.MethodAttributes.Private
| Mono.Cecil.MethodAttributes.Static
| Mono.Cecil.MethodAttributes.HideBySig
| Mono.Cecil.MethodAttributes.SpecialName
| Mono.Cecil.MethodAttributes.RTSpecialName,
mod.Import(typeof(void))
);
Я также попытался изменить атрибуты на такие же, как у Яно. Это как-то никогда не работает. Под «работает» я подразумеваю обнаружение его как статического конструктора в DotNet Resolver.
Вот еще немного информации о реальном результате и ожидаемом результате.
У меня нет ResolveEventHandler, прикрепленного к моей точке входа. Я прикрепил его к приложению, которое запутывается, и он находится в статическом конструкторе типа "", который выполняется еще до того, как вызывается точка входа.
Ресурсы приложения были зашифрованы с помощью AES и не распознаются как действительные ресурсы распознавателем dotnet или другими декомпиляторами. Я просто спрашиваю, почему событие не запускается, поскольку оно должно запускаться, когда ресурс недействителен или отсутствует. Как вы можете видеть в примере, перед запуском приложения должно появиться окно сообщения, но оно никогда не появляется (строковое шифрование шифрует строки, поэтому немного сложно увидеть, что там есть строка).
Любая помощь приветствуется.