Показать сообщение отдельно
Старый 02.02.2016, 03:06   #1  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Средство для простановки комментариев в AX7
Поделюсь некоторыми изысканиями по работе с новой версией.
В предыдущих версиях АХ я использовал метод на EditorScripts для простановки комментариев. т.е. без выделения добавлялась просто строка(//модификация, дата), с выделением текста комментарий добавлялся перед и после выделенной строчки.
Начав писать код в AX7 обнаружил что класса EditorScripts теперь нет. Более того, поиск выявил что в Visual Studio 2015 из коробки вообще нет аналогов. есть Snippets, но в них нет возможности выполнять код, т.е. проблематично добавить автоматом текущую дату.
Поиск позволил найти тулзу Visual Commander (https://vlasovstudio.com/visual-commander/index.html), которая являясь AddIns для VS2015 представляет средство по идеологии напоминающее EditorScripts. Собственно сам метод будет выглядеть так
X++:
using EnvDTE;
using EnvDTE80;

public class C : VisualCommanderExt.ICommand
{
	public System.String  getCurText()
	{
		System.String s;
		s  = "Current modification";
		return s;
	}
	public void Run(EnvDTE80.DTE2 DTE, Microsoft.VisualStudio.Shell.Package package) 
	{
		EnvDTE.TextSelection ts = DTE.ActiveDocument.Selection as EnvDTE.TextSelection;
		System.String s = "//" + this.getCurText() + ", User name " + System.DateTime.Now.ToString("dd.MM.yyyy");

		if (ts.Text != "")
		{
			int StartLine = ts.TopLine;
      			int EndLine = ts.BottomLine;			

			ts.GotoLine(StartLine);
			ts.StartOfLine((EnvDTE.vsStartOfLineOptions)(1));
			ts.Insert(s + " -->");
			ts.NewLine(1);
			ts.GotoLine(EndLine + 1);
			ts.EndOfLine();
			ts.NewLine(1);
			ts.Insert(s + " <--");
		}
		else
		{
			ts.Text = s;
		}
	}
}
За это сообщение автора поблагодарили: mazzy (2), AlGol (2), sukhanchik (2), Logger (3), twilight (1).