Как определить, загружается ли сборка GAC - PullRequest
1 голос
/ 05 марта 2012

Я установил бета-версию Visual Studio 2011 и обнаружил, что веб-сайт, над которым я работал, с тех пор перестал работать.Было высказано предположение, что существует сборка MVC или Razor от GAC, которая загружается и принимает управление.Как бы я это проверил?

Ответы [ 2 ]

3 голосов
/ 05 марта 2012

Запустите приложение в режиме отладки и посмотрите Output window в Visual Studio. Он будет перечислять каждую сборку по мере загрузки, вы легко узнаете сборки GAC по полному пути к файлу.

2 голосов
/ 05 марта 2012

Просто интересно, давайте сделаем это во время выполнения. Идея состоит в том, чтобы проверить Assembly.GlobalAssemblyCache свойство всех загруженных сборок MVC.

Поместите следующий фрагмент кода где-нибудь в Page_Load() и посмотрите в файле, была ли загружена конкретная сборка из GAC:

using System.Linq;
var items = AppDomain.CurrentDomain
                     .GetAssemblies()
                     .Where(a => a.FullName.Contains("MVC"))
                     .Select(a => String.Format(
                                         CultureInfo.InvariantCulture,
                                         "[{0}] {1}",
                                         a.GlobalAssemblyCache,
                                         a.FullName));

File.WriteAllLines("c:\\assembliesdump.txt", items .ToArray());   

Вывод будет таким, как показано ниже (фильтр log4net в качестве примера):

[False] log4net, версия = 1.2.10.0, культура = нейтральная, PublicKeyToken = 1b44e1d426115821

...