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