Я знаю, как добиться того, чего вы ожидаете от Расширения VSPackage, предоставляемые Visual Studio 2013 SDK. Вы можете разработать расширение, которое прослушивает событие сохранения документа и может делать все, что угодно, с файлом (например, переместите его копию в каталог приложения Apache). Вы также можете подписаться на добавления, удаление, переименование, открытие, открытие и закрытие событий.
Проверьте эту ссылку: http://msdn.microsoft.com/en-us/library/dn246938.aspx, и начните с Как начать разработку расширений VSPackage? раздел.
Создать внутренний скелет, как описано в шагах, проверить его, и добавить строки, как theese:
public void OnItemRenamed(EnvDTE.ProjectItem projItem, string oldName)
{
Log("[Event] Renamed " + oldName + " to " + Path.GetFileName(projItem.get_FileNames(1)) + " in project " + projItem.ContainingProject.Name);
//add your logic here
}
public void OnDocumentSaved(Document document)
{
Log("[Event] Saved " + document.Name + " in project " + document.ProjectItem.ContainingProject.Name);
//add your logic here
}
private void OnDocumentOpening(string documentpath, bool @readonly)
{
Log("[Event] Opening " + documentpath);
//add your logic here
}
private void InitEvents() //remember to call it in Initialize()
{
DTE2 dte = (DTE2)GetService(typeof(DTE));
Events2 dteEvents = (Events2)dte.Events;
dteEvents.ProjectItemsEvents.ItemRenamed += OnItemRenamed;
//remember to declare it
_docEvents = dteEvents.DocumentEvents; // defend against Garbage Collector
_docEvents.DocumentOpening += OnDocumentOpening;
_docEvents.DocumentSaved += OnDocumentSaved;
}
Я знаю, что это походит на взятие кувалду, чтобы расколоть орех, но это какое-то решение.
Мне интересно, почему ваш проект такой большой? Может быть, он содержит большое количество пользовательских данных (изображений/других файлов), которые можно перенести в другую папку/машину? Если да (и вам не нужно их на месте), проверьте модуль PROXYPASS для Apache и перенаправить ихние запросы: http://httpd.apache.org/docs/2.2/mod/mod_proxy.html ProxyPass /foo http://live.example.com/foo
... и я надеюсь, что у вас есть SSD диск ;-)
I сумел это сделать. Оно работает. Как добавить команду меню в главное меню? При отладке в меню «Сервис» автоматически появляется команда меню. Но не тогда, когда я открываю новый проект. Я читал, что это имеет какое-то отношение к .vsct-файлу. Но я не знаю, что мне еще нужно делать. – Makla
Удалось выполнить это с выполнением файла .vsix в папке выпуска. – Makla