如果我将这个c#代码编译成EXE文件并在Windows命令shell中运行它运行正常:输出提示,在同一行等待一些用户输入,然后输入,回显该输入.在PowerShell v3 shell中运行它也运行良好.但是,如果我在PowerShell ISE V3中运行相同的EXE文件,它永远不会从中发出输出Write
并挂起ReadLine
.(顺便说一下,Write
如果后来跟着a ,它会发出输出WriteLine
.)
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
System.Console.Write("invisible prompt: ");
var s = System.Console.ReadLine();
System.Console.WriteLine("echo " + s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个ISE错误还是有一些属性可以调整以使其工作......?
我正在尝试使用VS2012建立与TFS的新连接.早期我能够添加我的TFS服务器,并使用Microsoft Git Provider从Visual Studio中克隆远程存储库的副本.后来,当我在团队资源管理器中摆弄试图找到我想要使用的分支的东西时,有些东西坏了.我的本地存储库仍然存在,但我与远程存储库的连接在某种程度上已损坏,如此错误所示:
TF31004:在http://my.server.com:8080/tfs连接到Team Foundation Server时遇到意外错误.等几分钟再试一次.如果问题仍然存在,请与服务器管理员联系ok help
我试图解决这个问题:
帮助页面提供了这些花絮,但是正如我所说的那样,只有一点点连接工作,它们似乎都没有.
任何想法,将不胜感激!
PowerShell 提供了一种简单的技术来查看函数的内容,例如
Get-Content function:MyFuncName # (A)
Run Code Online (Sandbox Code Playgroud)
或等效地
(Get-ChildItem function:MyFuncName).definition # (B)
Run Code Online (Sandbox Code Playgroud)
其中MyFuncName是我的函数的名称。这对于简单的函数(即只使用基本语言结构而不调用其他函数的函数)来说非常有用。但是考虑foo
下面显示的包含对函数的调用的函数bar
。在典型情况下,它们都包含在同一模块中,其公共 API 仅由函数组成foo
,因此它是唯一导出的函数。
function foo ()
{
$p = bar "here"
"result is '$p'"
}
function bar ([string] $s)
{
$s + $s
}
Export-ModuleMember foo
Run Code Online (Sandbox Code Playgroud)
有没有办法以bar
与上述 (A) 或 (B) 相当的方式查看另一个函数中的嵌套、非导出函数(如 function )?(也就是说,无需在编辑器中打开 .psm1 文件:-)
下面的代码演示了一个非常简单的问题; 我希望我只是错过了某人可能能够揭示的环境.
(1)启动主winform(MainForm).
(2)按下按钮显示半透明的二级winform(ShadowForm),并且应该完全覆盖MainForm.
场景1:启动主winform,然后按下按钮:ShadowForm显示正确的大小但不正确的位置,向下和向右(就像它是级联的).按按钮再次关闭ShadowForm.再按一次按钮重新打开ShadowForm,现在它处于正确位置,覆盖MainForm.
场景2:启动主winform,移动它,然后按下按钮:ShadowForm显示正确的大小但位置不正确(MainForm在移动之前的位置).按按钮关闭; 再次按下重新打开,现在ShadowForm处于正确的位置.
using System;
using System.Windows.Forms;
namespace LocationTest
{
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
public class MainForm : Form
{
ShadowForm shadowForm = new ShadowForm();
Button button1 = new Button();
System.ComponentModel.IContainer components = null;
public MainForm()
{
this.SuspendLayout();
this.button1.Location = new System.Drawing.Point(102, 44);
this.button1.Size = new System.Drawing.Size(75, 23);
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.ClientSize = new System.Drawing.Size(292, 266);
this.Controls.Add(this.button1);
this.ResumeLayout(false); …
Run Code Online (Sandbox Code Playgroud) 当我使用时,select-string
我几乎总是希望我的输出对齐,即文件名,行号和找到的文本都应该对齐到列中.从视觉上看,它更不容忽视,通常可以更容易地发现差异.作为一个简单的例子,我在中间文件中注入了一个额外的空间:
PS> Get-ChildItem *.cs | Select-StringAligned -pattern override
---
FileWithQuiteALengthyName.cs : 34: protected override void Foo()
ShortName.cs : 46: protected override void Bar()
MediumNameFileHere.cs :123: protected override void Baz()
---
Run Code Online (Sandbox Code Playgroud)
不幸的是,Select-String
不这样做; 实际上它给出了这个 - 你能发现这里的额外空间吗?
PS> Get-ChildItem *.cs | Select-String -pattern override
---
FileWithQuiteALengthyName.cs:34: protected override void Foo()
ShortName.cs:46: protected override void Bar()
MediumNameFileHere.cs:123: protected override void Baz()
---
Run Code Online (Sandbox Code Playgroud)
有没有办法强制Select-String
对齐其输出列?
编辑:哎呀!我忘记了一个重要部分:-Context
如果可能的话,我还想包含参数,这样可以在匹配前后获得任意数量的行.
在WinForm项目的可视化设计器中工作时,当选择一个元素时,属性窗格会列出该元素的所有属性.在属性窗格中选择属性,然后在属性列表正下方的属性描述框中显示该属性的描述(已分配的DescriptionAttribute的值).即使没有打开可视化设计器,也可以选择另一个项目(例如解决方案资源管理器中的条目)以在属性窗格中显示其属性,并且属性描述框仍然是活动且可见的.
另一方面,在WPF项目的可视化设计中,不会出现属性描述框(对于VS2008和VS2010都是如此).有没有办法揭露它?当然它必须可用,或者这是一个缺陷?
我在VS文档中找到的唯一页面是IDE的快速浏览,它说明并描述了可视化设计器的每个部分 - 属性窗格除外!
2010.02.11更新
因为,根据Will Eddins的回答,没有办法做到这一点(并且刚刚发布的VS2010候选版本的情况没有改变)我已经提交了针对VS2010 的缺陷报告.
我有各种各样的 PowerShell 模块是用 PowerShell(而不是 C#)编写的,我在代码中包含了文档注释,以便用户从 Get-Help 获得完整的 API 描述。
当我正在编写一个新模块时,帮助文本似乎在某个时间点卡住了;我对该文件中的帮助文本所做的任何后续更新都没有在我保存文件、重新导入模块,甚至重新启动 PowerShell 然后重新导入模块后,我对该文件中显示出来。
接下来我创建了一个测试模块,看看我是否可以复制这个问题。我设置了 psm1 和 psd1 文件,导入了模块,然后运行了 get-help,从 psm1 文件中看到了帮助。然后我在 psm1 文件中添加了一行文本,保存它,重新导入它......新行出现在 get-help 中!
我依稀记得前段时间读到你必须在 psd1 文件中修改版本才能识别新的帮助,但我的测试用例显示不一定需要(而且我真的不想修改版本)。
我还依稀记得读到导入的模块缓存在某处,可以删除缓存的文件以使其识别新文本——但我不记得在哪里可以找到这些。
所以我的目标是能够在不增加模块版本的情况下,在我的真实模块中看到保存在 psm1 文件中的修改后的帮助文本。想法?
powershell ×4
c# ×2
module ×2
caching ×1
function ×1
hang ×1
overlay ×1
properties ×1
reflection ×1
tfs ×1
transparency ×1
winforms ×1
wpf ×1