Принудительная компиляция ASP.NET для использования новой (не кэшированной) версии главной страницы - PullRequest
1 голос
/ 26 января 2012

У меня есть главная страница, встроенная в сборку и обслуживаемая через провайдера виртуальных путей.(/_v/name.space.myMaster.master)

Изменения мастера не отражаются в веб-приложении, и я получаю, в данном конкретном случае, ошибку, связанную с отсутствующим ContentPlaceHolder.Я исправил ошибку (ruant = "server", а не runat = "server"), и все же я все еще получаю ошибку.

Я включил .master в качестве допустимого расширения и подтвердил, что файлобслуживается через VPP, отличается от файла, встроенного в сборку (я проверял сборку через Reflector).

Я провел очистку / пересборку в VS и зашел так далеко, что взорвал свой «Временный ASP».NET Files "в обоих вариантах: 64 / non-64.Есть ли что-то еще, что мне нужно сделать, чтобы вызвать перекомпиляцию из не кэшированной версии главной страницы?

Ответы [ 2 ]

1 голос
/ 27 января 2012

В вашем классе VirtualPathProvider вы можете переопределить метод GetCacheDependency , чтобы указать зависимость, которая отслеживает файл.

public override CacheDependency GetCacheDependency(string virtualPath, 
  System.Collections.IEnumerable virtualPathDependencies, 
  DateTime utcStart)
    // Get the physical path to the assembly
    return new CacheDependency(path_to_assembly);
}

Эта зависимость будет использоваться ASP.NET для кэширования объекта.Поскольку зависимость отслеживает физический файл, при каждом изменении этого файла ASP.NET удаляет объект из кэша.

0 голосов
/ 27 января 2012

Сборка, хотя GAC'd никогда не удалялась из папки bin веб-приложения, несмотря на запуск очистки этого проекта в VS.

Удаление копии сборки из корзины решило проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...