Попробуйте это. Функция берет в списке делегатов Действия. Это добавит запись рабочего ThreadPool для каждого объекта в списке. Это будет ожидать каждого действия для завершения перед возвратом.
public static void SpawnAndWait(IEnumerable<Action> actions)
{
var list = actions.ToList();
var handles = new ManualResetEvent[actions.Count()];
for (var i = 0; i < list.Count; i++)
{
handles[i] = new ManualResetEvent(false);
var currentAction = list[i];
var currentHandle = handles[i];
Action wrappedAction = () => { try { currentAction(); } finally { currentHandle.Set(); } };
ThreadPool.QueueUserWorkItem(x => wrappedAction());
}
WaitHandle.WaitAll(handles);
}
Назовите оба файла, например, jquery.js, и поместите в какую-нибудь папку (библиотеки) Когда вы деплоите, не развертывайте папку lib.
Если вы программно добавив объявление, то лучше всего использовать директиву компилятора
#if DEBUG
. В области DEBUG используйте полностью развернутую библиотеку, а в области без DEBUG (когда вы компилируете в режиме выпуска для публикации) поместите версию .min. Тогда вам нужно только позаботиться о том, чтобы убедиться, что вы скомпилировали Release при запуске.
В качестве альтернативы, создайте отдельные файлы .config для различных сред выпуска и укажите, что ваш javascript включает в себя.
You can name script as jquery.js. And add two other js files. First will be named as jquery.js.debug, other onw jquery.js.release. And when compiling application use appropriate js file.
I'm using it to change web.config files. Additional information can be founded here.
Я уверен, что кто-нибудь сможет перевести этот ответ на asp.net: я делаю условное выражение на основе моего APPLICATION_ENVIRONMENT
, определенного в моих проектах. Не уверен, есть ли подобное в asp.net, но если вы находитесь на производственном сервере, вы можете обслуживать .min - а на машине разработки / тестирования вы можете обслуживать полную библиотеку.
У меня есть метод расширения HtmlHelper для загрузки моего JavaScript файлы. Выглядит это примерно так ...
public static string JavascriptTag(this HtmlHelper html, string javascriptName)
{
var format = "<script src=\"/Content/Scripts/{0}.js\" type=\"text/javascript\"></script>\r\n";
#if (!DEBUG)
javascriptName += ".min";
#endif
return string.Format(format, javascriptName);
}
Что очень просто называется:
<%= Html.JavascriptTag("jquery-1.3.2") %>
<%= Html.JavascriptTag("general") %>
Я могу использовать это соглашение, потому что у меня также есть задача сборки, которая берет все файлы JS внутри моего каталога content / scripts, минимизирует их, а затем вставляет .min в имя файла.
Если у вас нет такой роскоши, вы можете использовать такой вариант:
public static string JavascriptTag(this HtmlHelper html, string devFileName, string liveFileName)
{
var format = "<script src=\"{0}\" type=\"text/javascript\"></script>\r\n";
var fileNameToUse = devFileName;
#if (!DEBUG)
fileNameToUse = liveFileName;
#endif
return string.Format(format, fileNameToUse );
}
Который затем может называться так:
<%= Html.JavascriptTag("/Content/Scripts/jquery-1.3.2.js", "/Content/Scripts/jquery-1.3.2.min.js") %>
<%= Html.JavascriptTag("/Content/Scripts/general.js", "/Content/Scripts/general.min.js") %>
Дополнительным преимуществом вышеупомянутого подхода является то, что вы можете используйте CDN для библиотек, например
<%= Html.JavascriptTag("/Content/Scripts/jquery-1.8.2.js", "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js") %>
Если вы используете django, вы можете использовать django-compress для автоматической обработки.