替代在Visual Studio 2012的宏(Alternative to macros in V

2019-06-17 19:03发布

我用宏广泛用于视图模型属性XAML开发。 我用他们更在WCF生成信息和DataContract属性。

我很失望,我已经建立了宏不会是在Visual Studio 2012中使用。

我说的是,对于虚拟机的一个例子,我将进入这样的事情。

int id;
string name;

选择两条线,运行宏,并结了

private int _id;
private string _name;

public int Id
{
   get {return _id;}
   set
   {
      if(_id != value)
      {
        _id = value;
        RaisePropertyChanged("Id");
      }
}

public string Name
{
   if(_name != value)
   {
      _name = value;
      RaisePropertyChanged("Name");
   }
}

我在寻找与失去宏的其他解决方案协议的想法。

Answer 1:

宏最简单的替代方法是创建加载项 。 我知道,我知道,我是不是很兴奋下去,但它实际上是非常容易的。 有三个简单的部分吧:

  1. 创建宏项目,通过向导UI步进。
  2. 编写代码。
  3. 宏的.addin和.dll文件复制到Visual Studio Addins的目录。

让我们以一个简单的宏我写关闭后的解决方案,以显示起始页 ,并把它变成一个加载项。

创建宏项目

  • 运行VS 2012,并创建一个新的项目。
  • 转到模板>其他项目类型>扩展,并选择Visual Studio的外接程序
  • 给它一个名称,如ShowStartPage。
  • 单击确定。 这带来了外接向导。
  • 在向导中,选择:
    • 编程语言:我们将使用C#
    • 应用主机:VS 2012应选择
    • 名称和描述您的加载
    • 在外接选项页,勾选仅第二个选项(“我想我的外接加载时主机应用程序启动”)
    • 跳过关于对话框的东西,现在,并单击完成。

现在你有一个附加项目。 这里是你用它做什么:

编写代码

打开Connect.cs文件。 (它可能已经打开。一些“DTE”的东西应该很熟悉。)

在添加类级别的代码:

SolutionEvents solutionEvents;

此代码添加到OnConnection方法中,后右_addInInstance = (AddIn)addInInst; 线:

solutionEvents = _applicationObject.Events.SolutionEvents;

solutionEvents.AfterClosing += () =>
{
    _applicationObject.ExecuteCommand("View.StartPage");
};

点击“运行”按钮来测试你的代码。 的Visual Studio 2012的新实例启动时,您的加载项加载。 现在测试加载项,并确保它的工作原理。 (打开一个解决方案,然后将其关闭。当你开始页应该返回)

它部署

一旦外接作品,与Visual Studio 2012经常使用它,你只需要部署两个文件:

  • ShowStartPage.AddIn (从你的主项目目录)
  • ShowStartPage.dll (从项目的build目录;例如BIN \ Debug或Bin \发布)

把那些两个文件在VS 2012外接程序目录,这里大概位于:

C:\Users\[your user name]\Documents\Visual Studio 2012\Addins

然后退出并重新启动Visual Studio,你应该看到您的加载工作。 你也应该看到,当你去工具将其列为>加载项管理器。

虽然这是一个比较讨厌不仅仅是打开宏编辑器,并在那里坚持宏代码的,它也有可以使用的,而不是被卡住有些脆弱的VB-类的编辑器在任何你想要的语言,其优点过去版本的Visual Studio。



Answer 2:

在视觉指挥官延长(由我开发)是在Visual Studio 2012/2013/2015的宏替代。 你甚至可以重复使用新的VB指令现有的Visual Studio宏代码。



Answer 3:

我会坚持到剪切文本到记事本+ +和使用宏在那里,然后将其粘贴回去。 这是一个耻辱的功能不是在Visual Studio 2012的任何更多...



Answer 4:

有一个附加的, VSScript ,为Visual Studio它取代丢失的宏功能。 虽然它没有使用Visual Basic,但Lua的脚本语言,你可能想尝试一下。

有一个记录器,智能感知宏代码编辑窗口,和一个简单的调试器。 该插件还支持早期版本的Visual Studio,所以如果你喜欢Lua语言,而不是Visual Basic中,你可以用它代替原来的Visual Studio宏。



Answer 5:

我很悲伤地看到宏不攻自破了。 您可以使用正则表达式搜索替换亲近和Visual Studio 2012在您的案件中取代:

找:

(.*) (.*);

用。。。来代替:

private $1 _$2;\npublic $1 $2\n{\n  get {return _$2;}\n  set\n  {\n    if(_$2 = value;\n    RaisePropertyChanged("$2");\n  }\n}\n

这将让你除了这些宏将是更好的属性名称的大小写的一切。

但正则表达式的方法的一个优点是当输入并不是那么简单(如数据库表DDL语句)。

这里有一对夫妇从MSDN有用的链接:

正则表达式替换

使用Visual Studio中的正则表达式



Answer 6:

我用记事本+ +正则表达式是这样的:

找:

public (.\*) (.)(.*) \\{ get; set; \\}

更换:

private \1 \l(\2)\3; \r\n public \1 \2\3 \\{ get \\{ return \l(\2)\3; \\} \r\n set \\{ \l(\2)\3 = value; OnPropertyChanged\(para => this\.\2\3\); \\}\\}


Answer 7:

退房http://devexpress.com/coderush

模板功能的作用几乎你想要什么。

有一个免费的“快车”版本太多。



Answer 8:

的Visual Studio 2012的缺乏宏渐渐我失望,因为我有几个,我用从字面上所有的时间与一个按键插入文本的标准小位。 所以我写了一个非常简单的脚本扩展包, VSScripts ,它允许通过命令行程序当前选择的操作。

这并不算得上是旧宏系统的一些包罗万象的全部更换,并且它不提供键盘宏,但它确实有可能重新许多类型的文本操作宏。



Answer 9:

这是我做了让我的宏功能...

  1. 下载并安装Visual Studio 2012 SDK 在这里 (它包含了“Visual Studio的包”模板)
  2. 新建项目 - > Installed.Templates.Visual C#.Extensibility.Visual工作室包

    向导页1的7

     language = C# gen new key is fine, or use another if you have one 

    向导页面3的7

     check "menu command" 

    向导页7的7

     uncheck both integration and unit test project options 

    点击完成

  3. 在.cs文件:

     using EnvDTE; using EnvDTE80; ... private void MenuItemCallback(object sender, EventArgs e) { MenuCommand cmd = sender as MenuCommand; // This should start to look like familiar macro code... EnvDTE80.DTE2 dte2 = Package.GetGlobalService(typeof(EnvDTE.DTE)) as DTE2; TextSelection selection = (TextSelection)dte2.ActiveDocument.Selection; dte2.UndoContext.Open("macro command replacement"); selection.Text = "inserted from macro replacement"; selection.NewLine(1); dte2.UndoContext.Close(); ... 
  4. 运行该项目。 一个新的Visual Studio实例将加载的软件包。
  5. 如发现在工具菜单顶部的第一个条目的命令。 点击它,看它是否工作。
  6. 要安装真正的,去你的bin \调试(/释放)的.vsix文件目录,然后双击
  7. 应该安装运行下一次
  8. 进入菜单工具 - > 选项- > environment.keyboard和按键映射到你的工具

     Mapping theme : Visual C# 2005 Command : Tool.yourFunctionName (functions defined in the .vsct file) 

如果你想要一个以上的命令,你将需要添加菜单的ID在PkgCmdID.cs,的GUID在Guids.cs,布局在.vsct并在* package.cs的功能(和按钮(MenuCommand)初始化功能),用于每一个。 它都可以在同一个项目来完成。

我用这个项目来创建若干新的“工具”与我的老宏代码,然后映射我的钥匙给他们。 这是一个很多工作(和头痛)前面,但没有滞后时间的宏了。

有可能是一个办法做到这一点,而无需其占用的工具菜单。 我开始寻找这个昨晚终于得到它的工作,所以我用它做现在(至少要等到微软决定也下降这一点)。



Answer 10:

我个人很喜欢这一个-的视觉指挥官扩展可以让你在Visual Studio中自动执行重复性任务。



文章来源: Alternative to macros in Visual Studio 2012