Had*_*ter 25 macros replace visual-studio
在我的Visual Studio(2010 C#)解决方案中,我需要删除包含匹配字符串模式的所有代码行.
例如,我想删除包含".BackColor = System.Drawing.Color.Yellow;"的所有行.Visual Studio的"查找和替换"功能不够好,因为您无法告诉它消除匹配的行.
所以我想我需要一个宏.任何帮助表示赞赏.
ben*_*ell 44
您可以使用Visual Studio的"查找和替换"功能删除匹配的行.
关键是匹配整行,包括行尾字符.您可以在通配符或正则表达式模式下执行此操作.在通配符模式下,使用表达式开始表达式*并结束表达式*\n.星号将匹配任意数量的字符,并且\n将匹配行尾字符.
在您的情况下,您的查找查询将是" *.BackColor = System.Drawing.Color.Yellow;*\n".然后应将替换字段留空.
要启用通配符模式,请在"查找和替换"对话框的"查找选项"部分的"使用:"字段中选择"通配符".

Hol*_*min 15
使用Visual Studio 2015,这对我有用.打开"搜索"窗口,选中"使用正则表达式"复选标记.填写"找到什么"
.*myCodeHere.*\r?\n
Run Code Online (Sandbox Code Playgroud)
用空字符串填充"替换".
基于@HolgerJeromin 的答案:我更喜欢使用模式匹配行的开头,而不是猜测正确的缩进匹配(可能是制表符,可能是空格,可能更多或更少)^\s*。
例如,要删除具有ProducesResponseType属性的所有行,我使用
^\s*\[ProducesResponseType.*\n
Run Code Online (Sandbox Code Playgroud)
(使用 VS 2019 也适用于 Windows)。
我倾向于通过运行宏录制器然后编辑生成的代码在VS中创建宏.
因此,手动搜索模式,然后按F3.然后停止宏(或按行开始键,选择行结束,按删除然后停止宏).
编辑宏,删除一行的命令是:
DTE.ActiveDocument.Selection.SelectLine()
DTE.ActiveDocument.Selection.Delete()
Run Code Online (Sandbox Code Playgroud)
您可以使用FindText设置查找文本:
DTE.ActiveDocument.Selection.FindText(".BackColor = System.Drawing.Color.Yellow;", vsFindOptions.vsFindOptionsFromStart)
Run Code Online (Sandbox Code Playgroud)