小编Har*_*ord的帖子

在Visual Studio中以特定的行号打开文件

我有一个实用程序(grep),它给我一个文件名和行号列表.在我确定devenv是打开文件的正确程序之后,我想确保它在指定的行号处打开.在emacs中,这将是:

emacs +140 filename.c
Run Code Online (Sandbox Code Playgroud)

我发现Visual Studio(devenv)没有这样的东西.我找到的最接近的是:

devenv /Command "Edit.Goto 140" filename.c
Run Code Online (Sandbox Code Playgroud)

但是,这会为每个此类文件创建一个单独的devenv实例.我宁愿有一些使用现有实例的东西.

这些变体重复使用现有的devenv,但不会转到指定的行:

devenv /Command "Edit.Goto 140" /Edit filename.c
devenv /Command  /Edit filename.c "Edit.Goto 140"
Run Code Online (Sandbox Code Playgroud)

我认为使用多个"/ Command"参数可能会这样做,但我可能没有正确的参数因为我得到错误或根本没有响应(除了打开一个空的devenv).

我可以为devenv编写一个特殊的宏,但我希望这个实用程序可以被没有该宏的其他人使用.而且我不清楚如何使用"/ Command"选项调用该宏.

有任何想法吗?


好吧,似乎没有办法按我的意愿去做.由于看起来我需要有专门的代码来启动Visual Studio,所以我决定使用EnvDTE,如下所示.希望这会有助于其他人.

#include "stdafx.h"

//-----------------------------------------------------------------------
// This code is blatently stolen from http://benbuck.com/archives/13
//
// This is from the blog of somebody called "BenBuck" for which there
// seems to be no information.
//-----------------------------------------------------------------------

// import EnvDTE
#pragma warning(disable : 4278)
#pragma warning(disable : 4146)
#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only …
Run Code Online (Sandbox Code Playgroud)

command-line visual-studio

55
推荐指数
4
解决办法
2万
查看次数

如何从Perl快速访问许多大型CSV文件中的数据?

我有许多脚本,目前从一些.CSV文件中读取大量数据.为了提高效率,我使用Text :: CSV_XS模块读取它们,然后使用其中一列作为索引创建哈希.但是,我有很多文件,而且它们非常大.每个脚本都需要重新读取数据.

问题是:如何持久存储这些Perl哈希值,以便用最少的CPU读回所有这些哈希值?

组合脚本不是一种选择.我希望...

我应用了第二个优化规则并使用分析来发现绝大多数CPU(大约90%)在:

Text::CSV_XS::fields
Text::CSV_XS::Parse
Text::CSV_XS::parse
Run Code Online (Sandbox Code Playgroud)

因此,我制作了一个测试脚本,读取所有.CSV文件(Text :: CSV_XS),使用Storable模块转储它们,然后返回并使用Storable模块读回它们.我描述了这个,所以我可以看到CPU时间:

$ c:/perl/bin/dprofpp.bat
Total Elapsed Time = 1809.397 Seconds
  User+System Time = 950.5560 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c  Name
 25.6   243.6 243.66    126   1.9338 1.9338  Storable::pretrieve
 20.5   194.9 194.92 893448   0.0002 0.0002  Text::CSV_XS::fields
 9.49   90.19 90.198 893448   0.0001 0.0001  Text::CSV_XS::Parse
 7.48   71.07 71.072    126   0.5641 0.5641  Storable::pstore
 4.45   42.32 132.52 893448   0.0000 0.0001  Text::CSV_XS::parse
 (the …
Run Code Online (Sandbox Code Playgroud)

csv perl persistence

7
推荐指数
2
解决办法
1052
查看次数

在组合框中,如何确定突出显示的项目(未选择项目)?

首先,公平警告:我是C#和WPF的全新手.

我有一个组合框(可编辑,可搜索),我希望能够拦截删除键并从列表中删除当前突出显示的项目.当我输入电子邮件地址时,我正在寻找的行为就像MS Outlook的行为.当您提供几个字符时,会显示潜在匹配的下拉列表.如果您移动到其中一个(使用箭头键)并单击"删除",则会永久删除该条目.我想通过组合框中的条目来做到这一点.

这是XAML(简化):


<ComboBox x:Name="Directory"
    KeyUp="Directory_KeyUp"
    IsTextSearchEnabled="True"
    IsEditable="True"
    Text="{Binding Path=CurrentDirectory, Mode=TwoWay}"
    ItemsSource="{Binding Source={x:Static self:Properties.Settings.Default}, 
        Path=DirectoryList, Mode=TwoWay}" />
Run Code Online (Sandbox Code Playgroud)

处理程序是:


private void Directory_KeyUp(object sender, KeyEventArgs e)
{
    ComboBox box = sender as ComboBox;
    if (box.IsDropDownOpen &&  (e.Key == Key.Delete))
    {
        TrimCombobox("DirectoryList", box.HighlightedItem);  // won't compile!
    }
}
Run Code Online (Sandbox Code Playgroud)

使用调试器时,我可以看到box.HighlightedItem我想要的值,但是当我尝试输入该代码时,它无法编译:

System.Windows.Controls.ComboBox' does not contain a definition for 'HighlightedItem'...

那么:我如何访问该值?请记住,该项目尚未被选中.它只是在鼠标悬停在它上面时突出显示.

谢谢你的帮助.

这是显示调试器显示的屏幕截图.我徘徊在"盒子"上,当显示单行摘要时,我然后盘旋在+ char上以展开到这个图像:

alt text http://www.freeimagehosting.net/uploads/2cff35d340.gif

c# wpf-controls

5
推荐指数
2
解决办法
4024
查看次数

使用Alt-Left-Mouse扫描在RichTextBox中进行矩形选择?

有很多应用程序允许您在按下Alt键的同时用鼠标扫描选择文本框或矩形.例如,Visual Studio 2010在代码编辑器中执行此操作.Emacs做到了.Winword做到了.我们都看过了.似乎必须有一个标准模式来编码这种行为,但我似乎无法找到它.

我怀疑我没有用正确的关键字搜索,因为我得到的是矩形,Alt-Left,扫描,选择等的错误命中.

我确信我可以对其进行编码,但这意味着禁用RichTextBox中使用的正常选择代码.这听起来很丑陋,容易出错,而且可能比它的价值更多.

任何人都有一个建议(很好!:-))如何做到这一点或一个如何做的例子?

更新:我刚刚在Code Project上发现了这篇可能适用的文章:基于列的选择

c# wpf textselection

5
推荐指数
1
解决办法
1258
查看次数

在 Visual Studio 中,如何快速从 XAML 绑定路径导航到相应的代码?

我希望能够轻松地从 XAML 代码进行导航:

  <Binding Path="Duration">
Run Code Online (Sandbox Code Playgroud)

属性的相应 C# 代码:

  public static DependencyProperty DurationProperty =
     DependencyProperty.Register("Duration", typeof(int), typeof(MainWindow));
Run Code Online (Sandbox Code Playgroud)

我似乎能做的最接近的事情就是转到包含代码的文件,然后我必须执行文本搜索。看来应该有更好的办法。

答案可能已经存在,但我还没有找到正确的关键字组合来找到它。

c# xaml visual-studio

5
推荐指数
1
解决办法
1950
查看次数