Я написал небольшую библиотеку прикрепленных свойств для DataGrid
. Вот источник
Образец, где Data2D является int[,]
:
Renders: [/g1]
Правка (октябрь 2012 г.): ASP.NET 4.5 теперь включает объединение и минификацию . Текущая версия не очень хорошо поддерживает динамическую генерацию javascript, но в остальном она довольно удобна и, например, отслеживает изменения файловой системы, как описано ниже; прежде чем накатывать собственное сжатие, попробуйте это!
Старый ответ:
Вместо того, чтобы реализовывать это во время сборки, я предлагаю вам сделать это во время выполнения. Это дает ряд преимуществ:
Это приблизительный набросок процесса, которому я следую:
FileSystemWatcher
для отслеживания изменений. 00_jquery.js
10_init.js
и т. Д., Помогает контролировать порядок здесь). Список имен файлов сохраняется для целей отладки. GZipStream
. Маркер версии вычисляется либо по дате последнего изменения, либо по хешу результата.
). Если наблюдатель файловой системы обнаруживает обновление, шаг 2 запускается снова и выполняется в фоновом режиме до завершения сжатия - отсюда и блокировка. IHttpHandler
. Все Uri включают токен версии в строку запроса - он игнорируется как обработчиком статических файлов IIS, так и настраиваемым обработчиком http для объединенной минифицированной версии, но упрощает кеширование. context.Response.OutputStream
. При таком подходе вам не придется возиться с параметрами web.config всякий раз, когда вы добавляете или удаляете файл сценария; вы можете обновлять сценарии во время работы приложения, и клиенты будут запрашивать их при следующем просмотре страницы, но вы все равно получите оптимальное поведение кеша, поскольку браузеры даже не отправят запрос If-Not-Modified из-за заголовка срока действия. Обычно сжатие сценариев должно занимать секунду или около того, а сжатый результат должен быть настолько маленьким, чтобы накладные расходы на память статической переменной были незначительными (максимум несколько 100 КБ для действительно большого количества сценариев / CSS).
Вероятно, вы захотите взглянуть на События сборки , с помощью которых вы можете указать командную строку для выполнения после сборки. Ваш вопрос, кроме того, аналогичен этим вопросам .
Для фактического копирования вы можете легко использовать команду КОПИРОВАТЬ .
Если вы хотите выполнить минификацию Javascript через Visual Studio, это поможет вам начать: http://encosia.com/2009/05/20/automatically-minify-and-combine-javascript-in-visual -studio /
В противном случае я бы порекомендовал инструмент, который может автоматически комбинировать и минимизировать Javascript. Я рассмотрел два инструмента: Джастина Этериджа Bundler и Combres . Я использую Bundler в своем текущем проекте, а один из моих коллег по работе использует Combres. Bundler немного проще в использовании, но он делает меньше, чем Combres. С Bundler, если отладка отключена в web.config, он не минимизируется и не объединяется, что означает, что вы можете отлаживать javascript в своей среде разработки.
P.S. Bundler был переименован в SquishIt.
Я не совсем уверен, будет ли этот подход полезен в этой ситуации, но я могу себе это представить ... Вы можете изменять файлы csproj напр. влияют на то, какие файлы должны быть включены в определенный тип сборки.
Под определенным типом я имею в виду диспетчер конфигурации.
Отладка и Выпуск - по умолчанию, но ничто не мешает вам создавать новые. В зависимости от выбранной конфигурации у вас могут быть разные файлы, являющиеся частью конфигурации, и я полагаю, что вы могли бы публиковать разные файлы таким образом. Я описал эту стратегию в своем блоге здесь: http://realfiction.net/go/130
Эта статья о «Автоматическом уменьшении, объединении, сжатии и кешировании файлов * .js и * .css в вашем проекте ASP.NET» может вам помочь
http://www.codeproject.com/KB/aspnet/CssAndJavaScriptOptimizer.aspx?display=Print