NGEN + AppDomain問題在這裏。如何在不指定域中性的情況下將.net本機圖像(NGEN)加載到多個應用程序域中?
我正在處理一些應用程序更改,這些應用程序更改圍繞使本機圖像正確加載以防止在我的.net應用程序中出現可怕的JIT時間。有些部分很容易,但是任何必須在appdomains中加載的程序集(我們的應用程序必須使用的各種原因)只會在第一次加載它們的本地映像,並且在後續加載時(在現在是新的appdomain中)圖像被拒絕併發生JIT。
我知道所有關於域中立加載的知識,並且已經將它用於我們的某些程序集,因爲它是有意義的,但是進行域中立加載會取消首先使用appdomains的主要原因之一對我們來說 - 因爲領域中立的圖像永遠不會被卸載。
簡而言之,我需要一種方法來獲得原生圖像加載和裝配卸載。我曾希望只要在我嘗試重新加載之前卸載了本機映像的第一次使用,就不會適用正常的限制,但這會導致拒絕,就像嘗試同時加載本機映像一樣。
This MSDN article包含以下引號:
的另一種方法落下 回JIT編譯是本機映像 的 不同的副本加載到每一個加載 相應組件 結構域的AppDomain具體。然而,這種方法會要求每個副本 的NGen映像,除了第一個, 從其首選基地址加載到不同的地址 。因此,所有這些副本的NGen圖片 都需要修正其地址。
這對我的需求來說是完美的,但那篇文章是我見過的唯一提到的,我不確定它將如何實現。
在此先感謝您的任何見解,並感謝您的期待。
緊張的*的需要*麻煩。它看起來像「*如果*我們允許這樣做,那麼我們必須修復所有地址,這是非常低效的,所以我們不支持這個。」請致電MSFT。 – 2010-12-22 21:45:22