(.net) Изменения во включенном дочернем XSL-файле не обнаруживаются, пока не будет затронут родительский XSL-файл? - PullRequest
0 голосов
/ 29 ноября 2009

Обновление: чтобы обойти эту проблему, я создал просто средство просмотра файлов, которое будет «касаться» дат изменения любых родительских файлов, которые ссылаются на включаемый файл. Подробности в нашем блоге, http://offroadcode.com/blog/2010/4/28/xsltouch,-taking-the-pain-out-of-editing-included-xslt-templates/ / Update

Хорошо, у меня есть XSL-файл удобных шаблонов в файле, который включает (использует) куча других XSL-файлов, чтобы сделать мой дизайн красивым и СУХИМЫМ.

Я использую .net для запуска файлов XSL против моего XML. Проблема в том, что, когда я изменяю дочерние XSL-файлы и перезапускаю свои преобразования (т. Е. Обновляю браузер), изменение не отображается, оно не будет, пока я не коснусь или не щекочу родительский файл.

Я думаю, что .net кэширует XSL-файлы, но, поскольку дочерний файл никогда не вызывается напрямую, он не кэшируется напрямую, он обновляется только при повторном кэшировании родительского файла. Звучит правдоподобно? Беда в том, что я не могу найти ничего, что могло бы поддержать эту догадку.

Кто-нибудь знает, прав ли я, и что более важно, знает ли кто-нибудь, как я могу предотвратить это на моей машине разработки, по крайней мере, чтобы ускорить мой цикл кода / обновления?

Редактировать: я тоже использую XSL 1 и .net 1.

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

В итоге я создал небольшую вспомогательную программу для этого в .net, которая просто использует средство просмотра файлов в папках моих шаблонов, а когда файл .xsl сохраняется, он выполняет быстрое регулярное выражение для всех других шаблонов, ища любые, которые включают сохраненный файл. Если так, то измененные даты этого файла становятся «щекочущими», что вызывает обновление кэша .net.

Это работает очень хорошо, красиво и без проблем. SVN также не замечает, что измененные файлы изменяются, что является бонусом, так как останавливает огромные проверки. Я надеюсь привести код в порядок и выпустить его в новом году.

Смотри это место:)

0 голосов
/ 29 ноября 2009

Когда вы <xsl:include/> или <xsl:import/> других XSLT-файлов, результаты iclude или импорта кэшируются до перезагрузки родительской таблицы стилей. Нет связи между родительской и дочерней таблицами стилей, которая позволила бы дочерней таблице стилей уведомить родительскую таблицу о том, что она обновлена ​​и ее необходимо повторно импортировать.

Для целей разработки самый быстрый способ справиться с этим - перезапустить домен приложения, в который загружено ваше приложение. Для приложения Windows это означает перезапуск самого приложения - для ASP.NET это означает перезапуск AppPool, на котором размещен ваш сайт .

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