如何在Visual Studio中将外部脚本输出链接到代码?

时间:2010-05-03 17:17:06

标签: visual-studio perl

我有时需要以超出Visual Studio正则表达式功能的方式搜索代码的模式(例如,依赖于之前在文件中看到的模式或其他文件的内容)。所以我使用Perl来分析源和输出匹配行,以及文件名和行号。

由于这与Visual Studio的搜索功能生成的格式完全相同,我想知道是否有办法复制功能,我可以双击一行,它将在上下文中显示该行视觉工作室。有什么想法吗?

3 个答案:

答案 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中,我不必调用外部进程。