C# Как свет это Assembly.ReflectionOnlyLoad

У меня есть несколько сборок, которые я рассматриваю как библиотеки в моей игре Unity. Когда игра начнется, я хочу быстро прочитать только манифест всех файлов - в будущем их может быть более 50) и составить список в памяти.

Я упаковал некоторую полезную информацию в поля авторских прав и информации о продукте, которые достаточно прочитать, но я, конечно, не хочу загружать всю сборку в свой домен приложения или любой другой домен приложения.

AssemblyName.GetAssemblyName, кажется, самый легкий вес

AssemblyName myAssemblyName = AssemblyName.GetAssemblyName("E:/Code/Projects/MyUtilities/bin/Debug/MyUtilities.dll");

Но это не помогает, так как дает только название сборки, версию и информацию о культуре. В любом случае они не могут иметь пользовательские строки (сборка не может быть скомпилирована, если я добавлю туда некоторые пользовательские строки, используя код в AssemblyInfo.cs)

Так что это подводит меня к последнему варианту, который является Assembly.ReflectionOnlyLoadFrom

Assembly myAssembly = Assembly.ReflectionOnlyLoadFrom("E:/Code/Projects/MyUtilities/bin/Debug/MyUtilities.dll");

object[] map = myAssembly.GetCustomAttributes(false);

Это действительно загружает весь файл? Это было бы слишком для меня, так как я хочу только атрибуты.

Если это произойдет, то у меня не останется никаких вариантов, кроме как самому добавить некоторые дополнительные байты в файл сборки и удалить байты, прежде чем передать массив байтов

Assembly.Load(bytes);

0 ответов

Другие вопросы по тегам