这看起来像一个非常常见的任务,但我找不到一个简单的方法来做到这一点.
我想撤消上次应用的迁移.我本来期待一个简单的命令,比如
PM> Update-Database -TargetMigration:"-1"
Run Code Online (Sandbox Code Playgroud)
相反,我能想出的就是:
PM> Get-Migrations
Retrieving migrations that have been applied to the target database.
201208012131302_Add-SystemCategory
201207311827468_CategoryIdIsLong
201207232247409_AutomaticMigration
201207211340509_AutomaticMigration
201207200025294_InitialCreate
PM> Update-Database -TargetMigration:"CategoryIdIsLong"
Run Code Online (Sandbox Code Playgroud)
(至少我可以只使用名称,跳过时间戳......)
有没有更简单的方法?
entity-framework database-migration entity-framework-4 ef-migrations
如何在C#中为当前用户获取桌面路径?
我唯一能找到的是VB.NET-only类SpecialDirectories
,它具有以下属性:
My.Computer.FileSystem.SpecialDirectories.Desktop
Run Code Online (Sandbox Code Playgroud)
我怎么能在C#中做到这一点?
是否有一种简单的方法来递归查找目录层次结构中的所有文件,这些文件不以扩展列表结尾?例如,所有不是*.dll或*.exe的文件
UNIX/GNU查找,功能强大,似乎没有exclude
模式(或者我错过了它),而且我总是发现很难使用正则表达式来查找与特定表达式不匹配的内容.
我在Windows环境中(使用大多数GNU工具的GnuWin32端口),所以我同样对Windows解决方案开放.
我试图弄清楚C#编译器如何处理尾调用.
(答案:他们不是.但是64位JIT会做TCE(尾部呼叫消除).限制适用.)
所以我使用递归调用编写了一个小测试,它打印了在StackOverflowException
杀死进程之前调用它的次数.
class Program
{
static void Main(string[] args)
{
Rec();
}
static int sz = 0;
static Random r = new Random();
static void Rec()
{
sz++;
//uncomment for faster, more imprecise runs
//if (sz % 100 == 0)
{
//some code to keep this method from being inlined
var zz = r.Next();
Console.Write("{0} Random: {1}\r", sz, zz);
}
//uncommenting this stops TCE from happening
//else
//{
// Console.Write("{0}\r", sz); …
Run Code Online (Sandbox Code Playgroud) 我已经和VS的调试器一起工作多年了,但我偶尔会遇到一个我以前从未注意过的功能,并且想想"该死的!我怎么能错过它?它非常有用!"
[免责声明:这些提示适用于VS 2005中的C#项目,不保证VS或其他语言的旧版本]
使用给定类的多个实例?你怎么能分开他们?在垃圾收集前编程时,很容易跟踪引用 - 只需查看内存地址即可.使用.NET,你不能这样做 - 对象可以移动.幸运的是,通过手表视图,您可以右键单击手表并选择"创建对象ID".
这会在实例的值之后附加{1#},{2#}等,从而有效地为实例提供唯一标签.它看起来像这样:
标签在该对象的生命周期内保持不变.
默认情况下,监视变量的值是它的类型.如果你想看到它的字段,你必须扩展它,如果有很多字段或它们做了一些复杂的事情,这可能需要很长时间(甚至超时!).
但是,某些预定义类型显示更有意义的信息:
有意义的信息http://img205.imageshack.us/img205/4808/37220487md1.jpg
拥有我自己的类型不是很好吗?
嗯...
...使用.NET Reflector的一些高质量时间显示了使用DebuggerDisplay
我的自定义类型上的属性可以轻松实现这一点:
[System.Diagnostics.DebuggerDisplay("Employee: '{Name}'")]
public class Employee {
public string Name { get { ... } }
...
}
Run Code Online (Sandbox Code Playgroud)
......重新运行,......
ta da!http://img60.imageshack.us/img60/926/79816018ha1.jpg
这里有关于这个主题的更多信息:MSDN
......甚至是代码处理的!我知道,自从我出生以来,我就是一个不知道这一点的人,但无论如何它都在这里 - 也许有一天这会对某人有所帮助:
每次抛出异常时,您都可以强制调试进程进入调试模式.曾经花了几个小时寻找一个只是为了遇到这样的代码吗?
try {
runStrangeContraption();
} catch(Exception ex) {
/* TODO: Will handle this error later */
}
Run Code Online (Sandbox Code Playgroud)
在这些情况下捕获所有异常非常方便.这可以从Debug> Exceptions ...(Ctrl-Alt-E)启用.勾选"Thrown"列中的框,了解您需要的每种类型的例外情况.
那对我来说是一些前额拍打的时刻.你愿意分享你的吗?
使用log4net,我已经看到了使用称为NDC的每个线程堆栈的上下文标签的可能性.
通过指定%x
或%ndc
格式参数,在此堆栈上推送的标签将显示在PatternLayout中.
用法如下:
ILog log = log4net.LogManager.GetLogger(...) ;
//pattern layout format: "[%ndc] - %message%newline"
log.Info("message 1");
using(log4net.NDC.Push("context")
{
using(log4net.NDC.Push("inner_context")
{
log.Info("message 2");
}
log.Info("message 3");
}
log.Info("message 4");
Run Code Online (Sandbox Code Playgroud)
输出类似于:
null - message 1
context inner_context - message 2
context - message 3
null - message 4
Run Code Online (Sandbox Code Playgroud)
在使用log4net的编程经验中,您何时发现此功能有用?
ReSharper建议改变类中public
构造函数的可访问性,但它没有说明这背后的基本原理.abstract
protected
你能解开一些光吗?
给定一个字符串"VAR = value"我想在第一个 '='符号(<value>可能包含更多'='符号)中将其拆分(仅),如下所示:
var, sep, value = "VAR=value".partition('=')
Run Code Online (Sandbox Code Playgroud)
有没有办法不声明变量'sep'?像这样(只是编写语法):
var, -, value = "VAR=value".partition('=')
Run Code Online (Sandbox Code Playgroud)
为了完整起见,我的目标是Python v 2.6
你怎么看待VS让你在几分钟之前找到一个你用过多个打开标签的标签?如何不断拖动标签以保持您使用的标签紧密相连?
哦,你也觉得AARGH?然后继续阅读.
我在一个软件上工作,有几十个项目和数百个文件.很容易让标签栏填满 - 就像调试时一样,可以打开很多文件,其中大部分只是样板文件,或者对于手头的任务并不是很有趣.
这使得与标签栏"关闭" 相关的少数文件,或通过略过可见标签找到的痛苦.
有一些解决方案,其中一些比其他更广为人知.这是我的前三名:
III.如果您可以准确记住文件名(或至少是第一个字母),则此方法有效:使用"查找框":
type: Ctrl-D >of yourFileName
Run Code Online (Sandbox Code Playgroud)
在键入文件名时,您将获得解决方案中文件名的自动完成功能.更多细节在这里.
II.最明显的一个:使用按字母顺序排列的选项卡栏右侧的"活动文件"下拉列表.
鲜为人知的事实:Ctrl-Alt-DownArrow
用来打开那个下拉菜单,然后开始输入文件名.您可以获得可视化可用选项的额外好处.[信息无耻地从这里被盗]
I. <drum roll/>
这是我个人的最爱,它基于VS 2005/2008的无证版功能.激活时,它只做一件简单的事情:单击选项卡将其移动到窗口的最左侧.这个基本操作通常让我在前3到5个选项卡中找到我正在寻找的选项卡.它是这样的:
删除了死亡的ImageShack链接 - 示例动画
为了启用此功能,您必须亲自使用Windows注册表.
强制编辑 - 注册表自担风险警告:
编辑注册表可能会使您的网卡丢弃数据包.你被警告了.
将此密钥添加到VS 2005的注册表:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0]
"UseMRUDocOrdering"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
或者这个VS 2008:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0]
"UseMRUDocOrdering"=dword:00000001
Run Code Online (Sandbox Code Playgroud)
你甚至不必重新启动VS才能看到它的工作![从这里抄袭]
现在继续,试一试!
更新: 此技巧在VS2010 Pro中不再有效:(
这结束了我的部分.现在轮到你分享你如何处理标签狩猎了!
在Ruby中,是否可以通过引用传递带有值类型语义的参数(例如Fixnum)?我正在寻找类似于C#的' ref '关键字的东西.
例:
def func(x)
x += 1
end
a = 5
func(a) #this should be something like func(ref a)
puts a #should read '6'
Run Code Online (Sandbox Code Playgroud)
顺便说一句.我知道我可以使用:
a = func(a)
Run Code Online (Sandbox Code Playgroud)