觀察下面這段代碼的Silverlight:Silverlight是否有可能在不加載完整程序集的情況下讀取程序集清單?
foreach (AssemblyPart ap in Deployment.Current.Parts)
{
var sri = Application.GetResourceStream(new Uri(ap.Source, UriKind.Relative));
var assembly = new AssemblyPart().Load(sri.Stream);
// Do something with the assembly.
}
它遍歷所有可用的應用程序組件並執行對他們的東西。這段代碼的問題在於,即使只是讀取程序集清單,代碼也會將完整的程序集加載到進程空間中。
是否有可能以某種方式優化呢?
我也有類似的.NET代碼,它使用PostSharp.Core圖書館只是閱讀組裝體現,而不加載完整的組件(Mono.Cecil能做到的工作也一樣)。
在此先感謝所有的好心人那裏。
只有一個小問題 - Silverlight平臺沒有Assembly.ReflectionOnlyLoad方法。 – mark 2010-01-12 14:19:45
確實,它位於'System.Reflection'命名空間中。 Silverlight是建立在.NET平臺之上的。 – 2010-01-12 14:32:55
@Paulo,你有沒有試過在Silverlight類庫中編譯你的代碼?請嘗試,如果你沒有,然後相應地改變你的答覆。 – mark 2010-01-12 14:40:11