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

How to automatically run code / commands after files are saved in visual studio 2017

我有以下场景: 我在 VS 2017 中的解决方案包括一些我和其他人经常编辑的 python 文件。 每次 我保存 这些打开的 .py 文件之一,一些代码或 .bat 文件(或您认为最方便的任何文件)应该将它们从 X 复制到Y被处决? 例如,文件 a.py 和 b.py 在我的解决方案中打开,我只是编辑了其中一些并单击了 "Save" 或 "Save all",所以如果我单击 "Save" 我只想复制当前文档 - 如果它是 .py - 从路径 X 到路径 Y,如果我单击 "Save all" 我希望复制所有 .py 文档。

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

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

你创建了一个 windows 服务并使用 FileSystemWatcher class 但我宁愿给你一个更简单的解决方案,因为我真的无法写出如何制作 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.
  }