如何在Visual Studio 2017中保存文件后自动运行代码/命令

时间:2018-04-02 10:21:59

标签: c# visual-studio events automation envdte

我有以下情况: 我在VS 2017中的解决方案包括一些其他我经常编辑的python文件。 每次我保存这些打开的.py文件,某些代码或.bat文件(或者您认为最方便的任何内容)应该将它们从X复制到Y时,我该如何实现? ? 例如,文件a.py和b.py在我的解决方案中打开,我刚刚编辑了其中的一些并点击了“保存”或“全部保存”,所以如果我点击“保存”我只想要当前文档要复制 - 如果它是.py - 从路径X到路径Y,如果我点击“全部保存”,我希望复制所有.py文件。

我遇到了这个问题: Run script when finished saving file - Visual Studio Extensibility

它向我介绍了DTE,它允许我订阅文件保存事件,所以我想我可以使用它的一些代码,但我不清楚这个代码如何运行自动在文件保存。

1 个答案:

答案 0 :(得分:1)

您创建一个Windows服务并使用FileSystemWatcher类,但我宁愿给您一个更简单的解决方案,因为我无法真正编写如何制作Windows服务,因为它可能很大:(

无论如何,这是一个丑陋的解决方案;)

1。创建一个WinForm的应用程序

2。在其中创建一个计时器

3。在计时器的计时事件中使用FileSystemWatcher

4。在Form_Load上触发计时器并隐藏表格:)

5。将您的应用添加到启动

示例:

 public class form1
 {
   Forms.Timer tmr = new Forms.Timer

   private void form_Load()

    {
      tmr.Tick += tmr_Tick();
      tmr.Start
      me.Hide();
    }

  private void tmr_Tick()

  {

   FileSystemWatcher watcher = new FileSystemWatcher();
   watcher.Path = path;
   watcher.NotifyFilter = NotifyFilters.LastWrite;
   watcher.Filter = "*.*";
   watcher.Changed += new FileSystemEventHandler(OnChanged);
   watcher.EnableRaisingEvents = true;

  }

   private void OnChanged(object source, FileSystemEventArgs e)
  {
  //Copies file to another directory.
  }