显然从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)