只有在使用該組件的特定類型時,才能加載通常引用的程序集。但這裏有一個問題:無論實際代碼(執行)路徑如何加載引用的程序集?
這是一個Winforms應用程序。儘管引用了PresentationFramework.dll & System.Xaml.dll程序集,但它們不應該被加載,因爲下面的代碼路徑從不執行;
bool useAutoHandler = false;
if (useAutoHandler) // This is always false so below code is not executed!
{
var currentApplication = typeof(System.Windows.Application).GetProperty("Current");
if (currentApplication != null)
{
var application = currentApplication.GetValue(this, null) as System.Windows.Application;
if (application != null)
{
application.DispatcherUnhandledException += this.DispatcherUnhandledException;
}
}
}
當我查詢與AppDomain.CurrentDomain.GetAssemblies(),我看到呈現框架芯被加載& XAML加載的程序集。有關爲什麼會出現這種情況的任何想法?
那麼,你的代碼引用了System.Windows.Application,我相信它是在PresentationFramework.dll中找到的,它引用了PresentationCore.dll,所以我可以在代碼運行後立即看到這兩個程序集。我懷疑在你的代碼運行之前發生了很多事情,其中一些導致程序集加載。 – 2011-03-08 19:24:30
System.Windows.Application來自PresentationFramework.dll,在編譯時必須知道,所以無論你做什麼(比如'if')它總是會被加載。如果你想動態加載程序集http://stackoverflow.com/questions/465488/c-load-assemblies-at-runtime – 2011-03-08 19:26:46
是的,你是對的。代碼路徑並不重要,只要它們是靜態引用的,引用的程序集將被加載而不管實際用法。 – 2011-03-08 19:38:01