显然从Visual Studio 2012中删除了宏.
是否有插件/扩展/工具可以让我录制和播放键盘宏(很像Visual Studio 2010中的录制/播放临时宏)?
例如,我通常会在将代码从一种语言转换为另一种语言时使用宏,或者从文本列表中快速生成属性等.
macros visual-studio-2013 visual-studio-2015 visual-studio-2017 visual-studio-2019
对于小型社区讨论,您使用的Visual Studio宏是什么?
我刚刚开始了解它们,并希望听到你们中的一些人不能没有.
反正有禁用相当恼人的功能,它的Visual Studio(2008年在我的情况)有复制线(与它的文本)光标是当上CTRL- C被按下并没有做出选择?
我知道禁用复制空行的选项.但这也让我疯狂.
ETA:我不打算自定义键盘快捷键.
ETA-II:我不是在寻找"工具 - >选项 - >文本编辑器 - >所有语言 - >应用剪切或复制到空白行......".
我在一个类中有40-50个方法,我想为所有这些方法添加断点.我可以一次为所有这些添加断点吗?
我不是在谈论项目的后期构建事件.相反,我想在构建整个解决方案后自动运行可执行文件.有没有办法为解决方案做一个post build事件?
Visual Studio 2013的C#6预览版支持主要构造函数,该团队已决定不会将其纳入最终版本.不幸的是,我的团队使用主要构造函数实现了200多个类.
我们现在正在寻找最简单的迁移源代码的途径.因为这是一次性的事情,一个神奇的正则表达式替换字符串或hacky解析器将起作用.
在我花了很多时间写这样一个野兽之前,那里有没有人已经做过这个或知道更好的方法?
我正在设置我的新项目,并且想知道如何实现我的ViewModel类确实具有INotifyPropertyChanged支持,而不必亲自手动编码所有属性.
我查看了AOP框架,但我认为他们只会用另一个依赖项炸毁我的项目.
所以我考虑用T4生成属性实现.
设置是这样的:我有一个ViewModel类,它只声明它的Properties背景变量,然后我用T4从它生成Property Implementations.
例如,这将是我的ViewModel:
public partial class ViewModel
{
private string p_SomeProperty;
}
Run Code Online (Sandbox Code Playgroud)
然后T4将遍历源文件并查找名为"p_"的成员声明并生成如下文件:
public partial class ViewModel
{
public string SomeProperty
{
get
{
return p_SomeProperty;
}
set
{
p_SomeProperty= value;
NotifyPropertyChanged("SomeProperty");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法有一些优点,但我不确定它是否真的有效.所以我想在StackOverflow上发布我的想法作为一个问题,以获得一些反馈,也许一些建议如何更好/更容易/更安全.
我想在Visual Studio 2012中自动将包含保护插入到新创建的头文件中.是否有任何预定义的代码段用于此目的?
编辑:我知道#pragma曾经和编译器的广泛支持.但是我们的编码风格迫使我使用包含警卫.
我的组织必须遵守极其严格和严格的规则才能获得认证和认证.在过去十年左右的时间里,我们开发了近百个VS宏,它们可以格式化代码,生成注释块,强制执行样式规则等.
我们的宏不是你记录鼠标移动的那种; 它们都依赖于EnvDTE*VS自动化对象.随着VS 2012丢弃宏,我们不知道我们是否能够升级,而不会对团队造成严重影响.
我知道微软的方向是VS Addins路由,我愿意调查这条路线,但是我无法找到有关VS加载项如何与Visual Studio中的活动代码文件进行交互的代码示例或文档.
例如,这是一个我们一直使用的宏,它将Try包装器设计模式应用于所有能够抛出未处理异常的方法
''' <summary>
''' Wraps active method in Try* access wrappers.
''' </summary>
Sub InsertSingleMethodTryWrappers()
Dim textSelection As TextSelection
Dim codeElement As CodeElement
textSelection = DTE.ActiveWindow.Selection
DTE.UndoContext.Open("Generate Try Wrappers") 'Allow for single Undo operation to rollback all changes
Try
codeElement = textSelection.ActivePoint.CodeElement(vsCMElement.vsCMElementFunction)
If Not (codeElement Is Nothing) Then
Dim textSelection2 As TextSelection
Dim codeFunction As CodeFunction
'Dim codeFunction2 As CodeFunction2
Dim editPoint As EditPoint
Dim codeParameter As CodeParameter
Dim parameters As CodeElements
Dim …
Run Code Online (Sandbox Code Playgroud)