2017-07-06 159 views
0

我有一组上使用Visual Studio的specflow测试,其中一些有步骤,看起来像:扩展为Specflow在Visual Studio

Given the data in file /foo/bar/data.txt 

我想实现一个Visual Studio扩展,所以我可以点击在/foo/bar/data.txt上并打开文件。

我不得不使用像一个Visual Studio文本装饰的一个模糊的想法,但我真的不知道,如果有一个简单的方法。此外,我正在寻找的是在Visual Studio 2013及以上的作品,并点缀没有在老版本的,据我知道支持的解决方案。有任何想法吗?

回答

0

一个可能的解决方案是创建一个新的菜单项与Visual Studio插件,这样当你在一条线上单击,然后选择此菜单选项,您可以执行一个动作(如读取和解析线和开放文件)。这是可以做到如下:

文件 - >新建项目 - >其他类型 - >扩展 - > Visual Studio的插件,以及实施IDTCommandTarget

Commands2 commands = (Commands2)_applicationObject.Commands; 
object[] contextGUIDS = new object[] { }; 
CommandBars cmdBars = (CommandBars)(_applicationObject.CommandBars); 
CommandBar vsBarProject = cmdBars["Code Window"]; 

scenarioCommand = commands.AddNamedCommand2(_addInInstance, "OpenScenario", "Open scenario", "Open scenario data", true); 
scenarioCommand.AddControl(vsBarProject); 

然后在exec方法,只是读行,得到的文件路径和:

Process.Start(resource) 

当然,只显示菜单选项,如果是在QueryStatus方法specFlow文件:

dynamic docName = _applicationObject.ActiveDocument.FullName; 
if (CmdName == OpenScenarioCmd && !((string)docName).EndsWith(".feature")) 
{ 
    StatusOption = (vsCommandStatus)vsCommandStatus.vsCommandStatusInvisible; 
} 
else if (CmdName == OpenScenarioCmd) 
{ 
    StatusOption = (vsCommandStatus)vsCommandStatus.vsCommandStatusSupported | vsCommandStatus.vsCommandStatusEnabled; 
} 

它并不完美,因为你必须表现出菜单,但它的工作原理。

0

如果前缀文件的路径://它会成为一个可点击的链接。像使用任何URL一样,用“%20”替换空格。

Sample screenshot

我知道这不是回答你问的问题,但也许你并不需要实现的延伸?

+0

是的,这应该工作,但我不能改变文件通过相对路径引用的方式,因为这些文件版本,这样他们就可以在不同的基本路径。我找到了解决办法,我会回答自己 – danijepg