У меня есть код UWP, который работает с типом System.Reflection.Module. Когда приложение скомпилировано в режиме DEBUG, все в порядке, и я могу получить пользовательские атрибуты для модуля. Но когда я переключаюсь в режим RELEASE и компилирую приложение с .NET Native, все эти атрибуты исчезают.Метод GetCustomAttributes (System.Reflection.Module) ничего не возвращает, если приложение скомпилировано с .NET Native
ответ
После выполнения приложения через Native цепочку инструментов .Net (ilc.exe) вы заметите, что ваши исполняемые файлы приложений не отображаются, как вы бы наивно ожидать. Это связано с тем, что весь ваш .Net-код (включая часть .Net Framework, требуемого вашим приложением) был сложен в одну двоичную .dll. Мы делаем это, потому что многие шаги оптимизации работают намного лучше, когда компилятор может просматривать все состояние вашей программы. Это также может ускорить ваше время начала, потому что найти кучу разных файлов на диске не на горячем пути.
Учитывая все вышесказанное, необходимо было разработать политику атрибутов Assembly. В конце концов, было легче избавиться от поддержки, чем понять способ заставить конфликтующие вещи хорошо сцепляться.
Если у вас есть сценарий, который возможен только через эти атрибуты, мы хотели бы узнать больше об этом.
Пожалуйста, проверьте эти ссылки:
NET Native Deep Dive: Help! I Hit a MissingMetadataException
Вы, вероятно, может решить эту проблему путем обновления .rd.xml (время выполнения директивы файла конфигурации), как описано в предыдущей статье.
И для информации:
Проблема заключается в том, что в то же время я могу получить пользовательские атрибуты для сборки (без каких-либо изменений). Таким образом, [module: MyAttribute] не работает, но [сборка: MyAttribute] работает отлично. – ger18s
- 1. GetCustomAttributes не возвращает значение
- 2. Метод ничего не возвращает
- 3. Метод ReadTextAsync ничего не возвращает
- 4. GetCustomAttributes
- 5. Почему метод ничего не возвращает?
- 6. .NET: Как определить программным образом, было ли скомпилировано .NET-приложение?
- 7. Метод класса не возвращает ничего
- 8. если оператор не возвращает ничего
- 9. range.find метод не возвращает ничего, если не формат согласования части
- 10. Если response_to? не возвращает ничего
- 11. Как вызвать метод, если array.find() ничего не возвращает?
- 12. Microsoft.TeamFoundation.Client.RegisteredTFSConnections.GetConfigurationServers() ничего не возвращает
- 13. Метод parse.Query find() не возвращает ничего
- 14. .NET C#: IsolatedStorageFile.GetUserStoreForApplication ничего не возвращает?
- 15. '.Find' метод просто ничего не возвращает
- 16. Что такое System.Reflection.Module?
- 17. Почему метод GetPortNames ничего не возвращает?
- 18. Ruby on Rails метод не возвращает ничего
- 19. Метод post всегда ничего не возвращает
- 20. метод в WCF-сервисе ничего не возвращает
- 21. Может ли приложение .NET быть скомпилировано для родного?
- 22. Как вызвать метод, который ничего не возвращает?
- 23. Python - почему метод list ничего не возвращает?
- 24. Почему мой метод ничего не возвращает?
- 25. метод Исеть не работает, возвращает ничего
- 26. Метод в другом классе ничего не возвращает
- 27. GetVstoObject ничего не возвращает
- 28. GetMethods с GetCustomAttributes
- 29. Сериализовать метод сортировки возвращает ничего
- 30. GetCustomAttributes для значения enum возвращает пустой массив
У меня был код, основанный на этом атрибуте. Теперь я использую другой подход. Спасибо! – ger18s
@Matt: Можете ли вы прояснить этот ответ? То есть можете ли вы подтвердить, что это _only_ для атрибутов уровня сборки, и что атрибуты типов и членов по-прежнему поддерживаются и работают должным образом? –
Мы ожидаем, что все остальные атрибуты будут работать как обычно. Мы сохраняем полную информацию о метаданных о том, где они применяются, генерируют код для любых конструкторов, которые они могут иметь и т. Д. Как всегда, если у вас есть какие-либо проблемы, пожалуйста, запиши мне почту на [email protected] Рад был помочь. –