我们一直在使用BDD - 行为驱动开发(来自Dan North的观点)作为记录用户验收测试并推动几个项目开发的机制,取得了不错的成功.到目前为止,我们实际上并没有实际自动化测试.
我现在正在考虑自动化测试,但我不确定要支持哪种行为框架.到目前为止,NBehave似乎是先行者 - 但还有其他我应该关注的吗?目前是否有明确的"赢家"?
我想知道是否有任何方法可以像浮点数或双打一样以短的方式声明一个字节变量?我的意思是喜欢5f和5d.当然我可以写byte x = 5,但如果你使用var局部变量,这有点无关紧要.
Visual Studio 2008是否有任何类型的插件或工具可用于按字母顺序排列方法?理想情况下,我想要一个工具,可以自动或按需按字母顺序排列选择或指定类型(即只有方法,而不是成员变量).
resharper coding-style organization visual-studio-2008 visual-studio
最近,我开始从我的几个项目中收集nuget包.首先,我开始使用Package Explorer应用程序.这是一个很好的工具,但如果你进行持续集成,它就不那么有用了.然后我研究了指定nuspec模板文件,并将更改数据(例如版本号)作为命令行参数传递.后来,我想知道如何定义nuget包依赖项.事实证明,如果指定csproj,nuget.exe已经基于package.config执行此操作.此外,它还从汇编信息中提取相关数据,如作者,版本,版权.我现在缺少的是能够在命令行中指定licenseUrl.但我希望这个问题更加通用.所以我问:
包装nuget包的首选方法是什么?
我希望有一个原因,我根本就不知道.为什么要typeof(string[][,])回String[,][]名?
我正在寻找可以在方法体旁边显示代码度量(特别是圈复杂度)的扩展,或者在我键入时在工具窗口中显示(没有额外的交互).
到目前为止,我知道:
Elisha的代码集:自由而简单.我不知道它计算的度量标准,但在某处读取它不是圈复杂度.它不支持任何其他指标.
Carpslayer的CodeMetricAdornment:仅支持代码文件中的代码行,注释和空格.
CodeRush:不是免费的.正是我想要的(度量是可选的),不幸的是我已经在使用ReSharper了,而且我认为拥有/购买两者都是一种过度杀伤力.
还有其他人吗?他们提供什么指标?
我想通过各种项目手动扩展IntelliSense列表.我想对项目触发的操作负责(即代码完成和工具提示信息).哪个项目无关紧要.
这可以使用VisualStudio插件,ReSharper/DXCore或任何其他插件吗?
背景:
你们中的一些人可能知道FOP(面向功能的编程).FOP需要对intellisense和编辑器行为进行各种更改.
编辑:
另一个有趣的帖子.
有关重置VisualStudio键盘方案和导入VisualStudio设置有两个相关问题.但是,这似乎并不是很好.
我有两个包含快捷方式的设置文件:
<!-- IntelliJ.vssettings -->
<ShortcutsScheme>Visual C# 2005</ShortcutsScheme>
<UserShortcuts>
<Shortcut Command="ReSharper.ReSharper_GotoNextHighlight" Scope="Global">F12</Shortcut>
</UserShortcuts>
<!-- ReSharper.vssettings -->
<ShortcutsScheme>Visual C# 2005</ShortcutsScheme>
<UserShortcuts>
<!-- Implicitly has F12 assigned to Edit.GoToDefinition -->
</UserShortcuts>
Run Code Online (Sandbox Code Playgroud)
如您所见,ReSharper.vssettings实际上没有F12分配快捷方式,因为它是VisualStudio的默认设置.导入该文件不会重新应用ShortcutsScheme,这Visual Studio C# 2005在两种情况下都是如此.这反过来导致F12继续执行GotoNextHighlight命令的事实.仅使用导入对话框时出现同样的问题.
使用DTE如下重置键盘方案也不起作用:
var property = dte.Properties["Environment", "Keyboard"];
property.Item("SchemeName").Value = "(Default)";
Run Code Online (Sandbox Code Playgroud)
导出默认设置不会出于同样的原因.如此处所示,不会导出任何快捷方式.
因此问题:如何使用DTE以编程方式重置VisualStudio键盘方案?
我真正需要的是触发ResetOptions |中按钮的命令 环境| 键盘对话框.
请参阅代码段
public interface I0
{
void f0();
}
public struct S0:I0
{
void I0.f0()
{
}
}
public class A<E> where E :I0
{
public E e;
public void call()
{
e.f0();
}
}
Run Code Online (Sandbox Code Playgroud)
这是用于调用的IL代码()
.maxstack 8
L_0000: ldarg.0
L_0001: ldflda !0 Temp.A`1<!E>::e
L_0006: constrained !E
L_000c: callvirt instance void Temp.I0::f0()
L_0011: ret
Run Code Online (Sandbox Code Playgroud)
参见约束的参考
约束前缀也可用于在值类型上调用接口方法,因为可以使用MethodImpl更改实现接口方法的值类型方法.如果未使用约束前缀,则强制编译器在编译时选择要绑定到哪个值类型的方法.使用约束前缀允许MSIL在运行时绑定到实现接口方法的方法,而不是在编译时绑定.
这意味着它将调用一个包含接口方法代码f0的方法而不用装箱结构.
在C#中,如上所述GenericClass是否存在任何其他方式没有装箱的caling接口方法?
在我的扩展中,如果当前按下了控制(或命令)键,我想检查某个功能.怎么可能?我找不到任何公开此信息的字段.
c# ×6
.net ×4
resharper ×2
bdd ×1
coding-style ×1
dxcore ×1
envdte ×1
il ×1
metrics ×1
nuget ×1
organization ×1
reflection ×1
types ×1
value-type ×1