立即窗口

4
我们使用fluentmigrator,并且它需要一个长整型的迁移编号。
通常,我可以打开立即窗口并键入
System.DateTime.Now.ToString("yyyMMddhhmmss");

但有时会显示以下内容:

在设计模式下无法评估表达式。

所以我开始调试运行命令,然后出现了这个错误:

在运行模式下无法评估表达式。

编辑添加

如果我开始调试并暂停,然后输入命令,我会得到:

无法评估表达式,因为当前线程处于睡眠、等待或加入状态。

如果我开始调试并打断点,则可以正常工作,但这需要跳过太多步骤,而且在第一种情况下它已经可以正常工作。由于如果存在错误它不会执行,因此似乎构建了我的项目。

这是在Visual Studio 2010 Pro中完成的。

如果能告诉我如何将其作为类模板或PowerShell类型处理,那就更好了。

我尝试了Immediate Window, "The expression cannot be evaluated...."中的答案,并选择了项目,但没有起作用。我在立即窗口中没有看到 >,如果我在命令之前放置它,我会得到

命令“...”无效。

编辑添加 我创建了这个代码片段以完成我想要的功能。

https://gist.github.com/9ad816c2b8e56b57ef79

基本上这是一个PowerShell命令,用于创建一个填充了一些垃圾内容的C#模板。

阅读有关func-eval的内容,了解这是非常复杂的。 - SLaks
3个回答

3

为什么不直接使用PowerShell:

PS> [DateTime]::Now.ToString("yyyMMddhhmmss");
20120228043351

我得到了 标识符“PS”未定义 - Rasoul

2

我不是Visual Studio用户,但以下是您可以使用PowerShell cmdlet获取值的方法:

Get-Date -Format yyyMMddhhmmss

1

你需要在第三模式下执行它 - 调试模式(在调试器中暂停)。


我的配置设置为调试模式,如果这是你的意思的话? - Steve
1
不,我的意思是您需要使用断点或暂停按钮在调试器中暂停执行。 - SLaks
听起来像是OP在不调试的情况下从即时窗口执行此操作。在这种情况下,调试与发布以及任何其他模式对于这样的表达式都不应产生影响(不依赖于任何应用程序静态)。 - JaredPar
@SLaks 我并不是要调试任何特定的代码,我只需要为迁移生成一个长整型数。如果我必须开始调试,暂停在断点上,然后在立即窗口中执行代码,那么我不如将此命令暂时放入代码中以查看其值。这太麻烦了,这也是我首先使用立即窗口的原因。 - Steve
@Steve:除非您处于特定位置,否则即时窗口无法在运行时工作。请参见http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx。 - SLaks
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接