我有时需要以超出Visual Studio正则表达式功能的方式搜索代码的模式(例如,依赖于之前在文件中看到的模式或其他文件的内容)。所以我使用Perl来分析源和输出匹配行,以及文件名和行号。
由于这与Visual Studio的搜索功能生成的格式完全相同,我想知道是否有办法复制功能,我可以双击一行,它将在上下文中显示该行视觉工作室。有什么想法吗?
答案 0 :(得分:1)
您可以使用Perl的Win32 :: GUI来模拟一个看起来与搜索实用程序完全相同的窗口,以用作Perl程序的前端。这样您就可以双击搜索结果并使用这些结果执行操作。请查看this link以获取在VS中的文件中的某一行的方法。这是一个简单的例子:
use strict;
use Win32::GUI;
#example data structure containing the search text to print, the file location, and the line number for the search text
my $items = [
['first hit', 'C:\file.cs', '30'],
['second hit', 'C:\anotherfile.cs', '245'],
['third hit', 'C:\file.cs', '16']
];
my $main = Win32::GUI::Window->new(
-width => 250,
-height => 250
);
my $listbox = $main->AddListbox(
-name => 'search_hits',
-top => '10',
-left => '10',
-width => '100',
-height => '100',
);
foreach my $item(@$items){
$listbox->InsertItem($item->[0]);
}
$main->Show();
Win32::GUI::Dialog();
sub search_hits_DblClick{
my $index_selected = $listbox->GetCurSel();
exec('devenv /edit '.$items->[$index_selected]->[1].' /command "edit.goto '.$items->[$index_selected]->[2].'"');
}
答案 1 :(得分:0)
是的。只需确保您遵循相同的格式:
filename(linenumber):...
当它出现在“输出”窗口中时,您应该能够双击它并将其带到文件中的正确行。
答案 2 :(得分:0)
一位同事向我指出了Writing to the Output Window From a Visual Studio .NET Add-in条。有一个名为“Visual Studio Add-In”的Visual Studio项目类型,我可以用它来编写我自己的加载项,它可以调用我的Perl脚本,捕获脚本的输出并将其发送到Visual Studio输出窗口。
如果我可以将我的Perl脚本编译为.NET,那么更清晰的替代方案是,然后整个加载项可以在Perl中,我不必调用外部进程。