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);